inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

가상메모리, 페이지테이블, 페이지폴트, 스레싱 ★★★

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

201

예준캉

작성한 질문수 3

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점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

예준캉

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

그러면

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

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

감사합니다.

1

큰돌

안녕하세요 예준님 ㅎㅎ

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

>>

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

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

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

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

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

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

 

감사합니다.

REST API (Self-descriptive messages)

0

25

1

시스템 엔지니어 관련 질문입니다.

0

52

2

오버라이딩 관련하여 질문드립니다.

0

62

2

교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유

0

89

1

렌더 트리, 렌더 레이어와 그래픽 레이어

0

57

2

로컬스토리지, 세션스토리지, 쿠키의 공통점

0

68

1

IPv4가 IPv6보다 빠른 경우

0

98

2

UDP가 전송계층의 역할을 못하는 건 아닌지

0

59

1

Path MTU 발견하였음에도 패킷 분할이 필요한 이유?

0

65

2

교재의 LFU 알고리즘에서 6번이 왜 히트인가요?

0

64

2

페이지 교체 알고리즘? 프레임 교체 알고리즘?

0

81

2

Static 키워드가 메모리에 올라가는 시점

0

77

2

헤더 압축부분 질문드립니다

0

72

2

공유 캐시 관련 질문 드립니다.

0

56

2

컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?

0

199

1

회선과 대역폭의 관계

0

61

2

44강 질문

0

93

2

버스 토폴로지 질문 있씁니다

0

54

1

자바스크립트, xml 문법 관련

0

66

2

전략패턴과 의존성주입 질문

0

69

2

Model이 비즈니스 로직을 담당하나요?

0

106

2

CS 공부 하는 법

0

181

2

큰돌님 블로그에 개념정리해서 올려도될까요!

0

137

2

FIN 세그먼트 질문

0

70

2