<aside> 💡 “운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다!
</aside>
논리적인 의미를 가지는 가변크기의 공간으로 메모리를 나눠서 물리 메모리에 올리게 되면 외부 단편화가 발생할 수 있는 태생적인 한계를 가지고 있다.
이를 해결 하기 위해 동일 크기의 공간으로 분할하는 아이디어에 대한 연구가 이루어졌고 이를 **페이징(paging)**이라고 부르게 되었다. 페이징에서는 프로세스의 주소공간을 고정 크기의 단위로 나누게 되고 물리 메모리 또한 **페이지 프레임(page frame)**이라는 고정크기로 나누게 되었다.
위의 그림과 같이 64바이트의 작은 주소 공간을 16바이트짜리 페이지 4개로 나눌수 있고 이를 물리 메모리의 페이지 프레임에 탑재 한것을 볼 수 있다.(물리 메모리의 페이지 프레임 또한 16바이트)
페이징을 사용 하였을 때 장점은 아래와 같다.
주소 공간의 각 가상 페이지에 대한 물리 메모리의 위치를 기록하기 위해서 운영체제는 각 프로세스마다 페이지 테이블이라는 자료구조를 가지고 있다. 페이지 테이블의 주요 역할은 주소 변환이다.
주소 변환을 위해 먼저 가상 주소를 **가상페이지 번호(virtual page number, VPN)**와 **페이지내에서의 오프셋(OFFSET)**으로 나눈다.
예시에서는 64바이트의 가상주소로 가정하였으므로 6비트의가 필요하고 각 페이지의 크기를 16바이트로하고 총 4개로 나눴기 때문에 2개의 비트로 VPN을 나타낼 수 있다.
가상 주소 21을 변환해 보면 아래와 같다.