inflearn logo
강의

講義

知識共有

クマの本で簡単に学ぶ最低限のオペレーティングシステム論

絶対住所と相対住所

가상 주소, 절대 주소 부분이 헷갈립니다.

解決済みの質問

340

11 1

投稿した質問数 147

0

강의 2:00에 나온 오른쪽 그림 7-12(책 343p)에 나온 그림에 대해 질문이 있습니다.

 

이 그림은 운영체제 영역과 사용자 영역이 나뉘어 있는데

프로세스별로 할당하는 가상 메모리마다 운영체제 영역과 사용자 영역으로 나뉜다고 보면 되는 건가요?

 

조금 헷갈리는데, 이 그림을 가지고 예를 들어서 프로세스가 2개 있다고 하면 2개의 프로세스 모두 각자가 가진 가상 메모리의 운영체제 영역이 0~360까지이고, A 프로세스의 가상 주소 10번지는 실제 물리 주소로 370이고, B 프로세스의 가상 주소 10번지도 실제 물리 주소로 370이 되는 건가요? 물리 메모리는 하나이니까요.

 

그럼 물리 메모리의 370번지를 두 프로세스 모두 사용하는 거라 말이 안 되는 것 같은데

 

제가 뭔가를 잘못 이해한 것 같은데 어디서 오해를 하고 있는지 모르겠습니다.. 혹시 잘못 이해하고 있는 부분을 바로잡아 주실 수 있나요?

 

운영체제

回答 2

1

nullnull8537

네, 맞습니다. 정확히 그렇습니다.

한 가지 바로 잡을 부분은 사용자 모드 메모리 중 0번지를 포함 앞 1MB가량 입니다. 이 영역도 운영체제의 영역입니다. 뒷 부분 2GB와 같은 구조로 작동합니다. 그 영역을 빼고 상대적으로 0번지가 존재하는 것이 아닙니다. 우리가 C언어에서 포인터 변수를 NULL (\0)로 초기화 하는 이유는 0번지로 초기화 하는 것이며 운영체제가 사용하는 영역이므로 접근 시 무조건 오류가 발생하기 때문입니다. 참고하시기 바랍니다. :)

1

11 1

감사합니다.

1

nullnull8537

네, 프로세스 마다 나뉩니다. 32비트 응용 프로그램의 경우 뒤쪽 2GB 영역이 운영체제 영역이며 해당 영역은 프로그램이 접근을 시도 할 수도 없으며 모두 같은 곳을 가리키고 있습니다. 본인은 말이 안 되는 잘못 이해한 것으로 생각하고 있지만 그것이 맞습니다. 오해가 아니며 제대로 이해한 것입니다. 참고하시기 바랍니다. :)

1

11 1

그러면 32비트 응용 프로그램 프로세스 A, 프로세스 B, 프로세스 C가 있다고 할 때,

각자 VMS를 가지고 있으면

운영체제 영역 2GB + 사용자 영역 2GB 이렇게 구분되어 있는 것이고,

 

이 중 운영체제 영역은 모든 프로세스가 공유하고(물리 메모리 상에서 같은 곳 가리킴),

사용자 영역은 각각의 프로세스가 개인적으로 소유하고 다른 프로세스가 침범할 수 없다.

이렇게 이해하면 될까요?

 

 

그런데 A 프로세스의 가상 주소 10번지는 사용자 영역이자 실제 물리 주소로 370(운영체제 영역이 360까지이므로 +10)이고, B 프로세스의 가상 주소 10번지도 사용자 영역이자 실제 물리 주소로 370이 되는 거 아닌가요? 그렇게 되면 어떤 프로세스가 가진 물리 메모리 공간을 다른 프로세스가 침범하여 같은 곳을 가리키고 있는 게 아닌가 싶은데

 

저는 아직도 제가 제대로 이해한 건지 뭔가를 오해하고 있는 건지 모르겠네요.. 제가 다시 쓴 이 답글에 쓴 내용 중에도 오류가 없나요?

아니면 책에 써진 설명 중 정확하지 않은 내용이 있는 건지..

헷갈리네요

32bit app에서 vms 4gb 설명에 대한 질문입니다.

0

77

2

레이스 컨디션 문제

0

207

2

스레드 종료 순서

0

150

1

제가 이해한게 맞는지 궁금합니다. (비디오 카드에 output)

0

229

2

플랫폼 bit관련 질문입니다

0

153

3

백그라운드 스케쥴링관련 질문입니다.

0

165

2

ready queue에 있던 프로세스들이 sleep이나 suspend되는 게 가능한가요?

0

249

2

IPC는 곧..?

0

358

2

interrupt와 DirectX 질문

0

403

2

공유자원과 임계구역

0

318

2

DMA와 고성능 소켓관련 질문입니다.

0

294

3

2강 DMA와 고성능 소켓 질문

0

420

3

I/O 관리자, 메모리 매니저 사용 이유

0

292

2

*pszResult =A; 포인터 사용 부분에 대한 질문입니다.

0

199

1

교착상태와 게임이 튕기는 현상

0

218

1

멀티스레딩

0

409

2

자료구조 공부

0

419

2

윈도우 레지스트리 질문

0

261

1

파일시스템과 가상메모리

0

341

1

Page fault 메시지가 나오면 스왑 인, 스왑 아웃은 일어나지 않는 건가요?

0

257

1

운영체제 스레드 공부 중 궁금한 점 있습니다.

0

355

3

직업 관련 질문

0

326

1

페이징 기법의 주소 변환

0

299

2

PCB에 들어있는 정보

0

458

1