위의 Figure는 아래의 도서에서 발췌함.
OperatingSystems:ASpiralApproach(Hardcover)ASpiralApproach
카테고리
지은이 Elmasri, Ramez/ Carrick, A. G./ Levine, David (McGraw-HillCollege, 2009년)
상세보기


우선 드디어 메모리까지 오신 여러분께 축하드립니다. -_-;;; (추석 내내 뭔 개고생인지...)


Figure 10.1
기본적인 Single Process 운영체제의 메모리를 보여준다. 언어적으로 오해가 있을 수 있는데, 싱글 프로세서가 아니라 싱글 프로레스이다. Resident Monitor는 운영체제라고 생각을 하면 편리하고, 그 위에 응용 프로그램이 올라가 있다고 생각하면 된다. 어디에? RAM에... 당연한거지만... -_-;

프로그래밍을 할 때, 특별히 Embeded가 아니라면 물리적인 메모리 주소를 지정을 할 일이 없을 뿐더러, 그렇게 컴파일을 하면, 오류가 발생하면서 컴파일이 제대로 되지 않을 것이다.

아, 자세한 설명을 하기 전에 우선 프로그램의 메모리는 어떻게 구성이 되는지에 대해서 먼저 설명을 하고 넘어가야 할 것 같다.


위의 이미지는 http://cocoadevcentral.com/articles/000061.php 에서 가져옴.

뭐 스레드는 둘째치고, 프로세스가 가지고 있는 메모리는 무엇인지 확인을 하고 넘어가자. 전역 변수가 있고, 코드, 그리고 힘과 스택이 있다. 여기서 Heap과 Stack은 동일한 메모리를 서로 공유한다고 해야하나... 전역 변수와 코드는 컴파일을 하면서 한번에 주어지는 양이 있는 것이고, Heap과 Stack은 정해진 양 내에서 서로 많이 사용하는 측에서 많이 점유하게 된다. 보통 저 메모리의 한계를 넘어서면 프로세스가 죽는다. -_- 이러한 메모리의 주소 번지는 컴파일을 하는 과정에서 Logical Addreass로 변한다.


다시 제일 위에 있는 Figure 10.2로 넘어가서 설명을 마무리하면, 위의 프로세스 메모리는 실제 RAM에 올라갈 때, 바로 0번지로 들어가지 않는다는 것이다. Relocation Register에서는 Logical Address를 Physical Address로 다시 변환을 시켜주는 역할을 한다.

아마 이해가 되지 않는 부분은 없으리라 생각된다. Relocation은 말 그대로 Logical 주소 값을 물리적 주소 값으로 변환을 해주는 레지스터를 통하여 값이 변하는 것이기 때문이다.
저작자 표시 비영리 변경 금지
신고

'Theory > CA & OS' 카테고리의 다른 글

OS, Mutiple Processes  (0) 2011.09.13
OS, Swapping  (0) 2011.09.13
OS, Memory Relocation  (0) 2011.09.12
OS, Priority Inversion  (0) 2011.09.12
OS, Deadlock  (0) 2011.09.12
OS, Semaphore and Mutex  (2) 2011.09.12
by 가우초 2011.09.12 18:50
| 1 |

티스토리 툴바