인프런 커뮤니티 질문&답변

예준캉님의 프로필 이미지
예준캉

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

가상메모리와 스와핑, 페이지폴트 그리고 스레싱 ★★★

가상메모리의 필요성 중 메모리 관리의 단순화

작성

·

125

0

메모리 관리의 단순화 설명이 잘 이해가 안 가서 그러는데 더 상세하게 설명 부탁드립니다.

제가 이해한 건 프로세스 A와 B가 실행되었을 때, A에게는 가상 메모리 0x0000을 할당하고 B에게는 0x1000을 할당했다고 했을 때, 프로세스A와 B가 종료되었다가 다시 실행되더라도 프로세스 A는 똑같이 0x0000이 배정되고 프로세스 B도 0x1000이 배정된다는 건가요? (단, 실제 주소는 달라지고)

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 예준님 ㅎㅎ

 

A에게는 가상 메모리 0x0000을 할당하고 B에게는 0x1000을 할당했다고 했을 때, 프로세스A와 B가 종료되었다가 다시 실행되더라도 프로세스 A는 똑같이 0x0000이 배정되고 프로세스 B도 0x1000이 배정된다는 건가요?

>> 종료후에 실행되었을 때 똑같이 배정될 수도 있고 배정이 안될수도 있습니다.

 

자세히 설명드리면 다음과 같습니다.

가상 메모리와 물리 메모리

각 프로세스는 자신만의 가상 주소 공간을 가지고 있습니다. 가상 주소는 프로세스가 메모리에 접근할 때 사용하는 주소입니다. 예를 들어, 프로세스 A와 B가 각각 0x0000과 0x1000의 가상 주소를 가지고 있다고 치는 것이죠. 물리 메모리는 실제로 존재하는 RAM의 주소 공간이며 가상 주소는 실제로 물리 메모리의 주소와 직접적인 관계가 없습니다. 이를 매핑해주는 페이지테이블이 있고 이걸 기반으로 CPU의 메모리 관리 유닛(MMU, Memory Management Unit)이 가상주소 -> 물리주소로 변환합니다.

 

프로세스의 종료와 재실행

프로세스 A와 B가 종료되면, 그들의 가상 주소 공간과 페이지 테이블은 해제됩니다.A와 B가 다시 실행되면, 운영 체제는 새로운 가상 주소 공간을 할당할 것입니다.하지만 이 가상 주소 공간이 이전과 동일하지 않을 수 있으며 운영 체제는 가상 주소를 자유롭게 재사용할 수 있습니다.

또한 중요한 점은 가상 주소가 동일하더라도, 실제 물리 메모리 주소는 다를 수 있습니다. 가상 주소는 항상 페이지 테이블을 통해 물리 주소로 변환됩니다.

ex1)

처음 실행:

프로세스 A: 가상 주소 0x0000 할당

프로세스 B: 가상 주소 0x1000 할당

A의 0x0000 가상 주소는 실제 물리 메모리 주소 0x2000에 매핑

B의 0x1000 가상 주소는 실제 물리 메모리 주소 0x3000에 매핑

 

종료 후 재실행:

A와 B가 종료되고 메모리에서 해제됨

A와 B가 다시 실행되면:

프로세스 A: 가상 주소 0x0000 할당 (이전과 동일할 수도 있고 다를 수도 있음)

프로세스 B: 가상 주소 0x1000 할당 (이전과 동일할 수도 있고 다를 수도 있음)

하지만, 이번에는 A의 0x0000 가상 주소가 물리 주소 0x4000에 매핑될 수 있음

B의 0x1000 가상 주소가 물리 주소 0x5000에 매핑될 수 있음

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


예준캉님의 프로필 이미지
예준캉
질문자

상세하게 답변해주셔서 감사합니다.

그러면

메모리 관리의 단순화 : 각 프로세스마다 가상 메모리의 통일된 주소 공간을 배정할 수 있으므로 메모리 관리가 단순해진다.

라는 것은 프로세스를 종료 후 재실행할 때 이전과 동일한 가상 주소가 할당 될 수 있다는 뜻인가요? 통일된 주소 공간 = 동일한 주소라고 이해하면 될까요?

감사합니다.

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 예준님 ㅎㅎ

프로세스를 종료 후 재실행할 때 이전과 동일한 가상 주소가 할당 될 수 있다는 뜻인가요?

>>

그런 의미가 아닙니다. 동일한 주소공간과 통일된 주소공간은 다릅니다.

통일된 주소 공간이란 각 프로세스가 고유의 가상 메모리 주소 공간을 가진다는 것을 의미합니다. 이 주소 공간은 프로세스가 사용하는 동안 독립적이고 다른 프로세스와 겹치지 않음을 보장합니다.

예를 들어, 프로세스 A와 프로세스 B가 각각 배열 [a, b]를 사용한다고 가정해봅시다. 가상 메모리를 사용하면:

프로세스 A에서 배열 [a, b]의 주소는 0x1000과 0x2000일 수 있습니다.

프로세스 B에서도 배열 [a, b]의 주소는 동일하게 0x1000과 0x2000일 수 있습니다.

이처럼 각 프로세스는 자신만의 독립적인 가상 주소 공간을 가지므로, 실제 물리 메모리 주소와는 관계없이 같은 가상 주소를 사용할 수 있습니다. 이를 통해 메모리 관리가 단순해집니다.

 

감사합니다.

예준캉님의 프로필 이미지
예준캉

작성한 질문수

질문하기