inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Lý thuyết hệ điều hành tối thiểu có thể dễ dàng học được với Bear Book

Địa chỉ tuyệt đối và tương đối

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

Đã giải quyết

339

11 1

147 câu hỏi đã được viết

0

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

 

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

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

 

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

 

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

 

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

 

운영체제

Câu trả lời 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

76

2

레이스 컨디션 문제

0

207

2

스레드 종료 순서

0

149

1

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

0

228

2

플랫폼 bit관련 질문입니다

0

153

3

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

0

164

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

417

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

354

3

직업 관련 질문

0

326

1

페이징 기법의 주소 변환

0

299

2

PCB에 들어있는 정보

0

458

1