이번 글부터 배울 내용은 Advanced Memory Management로 지난 글까지 읽어온 Basic보다는 조금 더 실용성이 높다. 실제로 이번 글에서 소개를 할 Paging은 Window XP의 경우 가상 메모리를 동일한 방법으로 관리하고 있다. (7이나, 실제 RAM을 어떻게 관리하는지는... 난 천재가 아니니까...-_-)

우선 페이징을 한다는 것이 무엇인지 설명이 필요하다.
메모리의 전체 크기가 1024byte라면, 기존의 글에서 배운 것은 메모리에 Regident Monitor 위에 Relocation Register를 이용하여, Application Program의 주소를 얻어 접근하는 방식이었다. 따라서 생겨나는 문제가 External fragmentation이었고, 이러한 문제를 해결하기 위해서 페이징이라는 기법이 나타난 것이다.

페이징은 메모리를 특정 사이즈로 나누어 사용하는 것이다. 1024byte라면 이를 4byte씩 나눈다고 생각하자. 그러면 총 256개의 페이지가 생성이 될 것이다. 한 칸을 특정 크기로 나누어 그 크기에 맞는 사이즈로 집어넣는 것이다. 만약 메모리에 올라가야 할 크기가 7byte이면 어떻게 될 것인가? 4byte 하나와 3byte 하나가 들어가는 것이지만 실제로는 8byte를 차지할 것이다.

기존의 메모리 관리 방식에서는 Relocation Register를 이용하였다면, 페이징을 사용할 때에는 어떠한 것을 이용하는가? Relocation Register를 계속해서 이용하기에는 물리적인 주소에서 이동하는 경우가 워낙 다양해지고, 페이지의 수도 굉장히 많아졌다.
따라서, 페이징을 한 경우에는 페이지 테이블을 이용한다.



위의 Figure는 아래의 도서에서 발췌

OperatingSystems:ASpiralApproach(Hardcover)ASpiralApproach
카테고리
지은이 Elmasri, Ramez/ Carrick, A. G./ Levine, David (McGraw-HillCollege, 2009년)
상세보기


위의 Figure가 보여주는 것은 페이징을 하였을 때, 메모리에 어떻게 접근하는지 보여준다. CPU에서는 해당 페이지의 몇번째 줄인지를 가져온다. 이를 Page Table Address Register를 통하여 해당 페이지의 물리적인 주소 값을 가져와서 해당 명령을 수행하는 것이다.

이를 통하여 Hole이 생겨나는 External Fragmentation 문제는 해결이 되었으나, 메모리 내부적으로 존재하는 Internal Fragmentation 문제는 여전히 남아있다는 것을 알 수 있다. 하지만 상대적으로 기존의 Compaction 등과 비교하였을 때, 훨씬 빠르고 정확하게 관리를 할 수 있다는 장점이 있다.

저작자 표시 비영리 변경 금지
신고

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

OS, Segmentation  (0) 2011.09.13
OS, TLB(Transaction Lookaside Buffer)  (0) 2011.09.13
OS, Paging  (4) 2011.09.13
OS, Multiple processes with a variable number of processes  (0) 2011.09.13
OS, Mutiple Processes  (0) 2011.09.13
OS, Swapping  (0) 2011.09.13
by 가우초 2011.09.13 14:26

티스토리 툴바