본문 바로가기
Computer Science/Operating System

Paging이란?

by JuHy_ 2019. 4. 23.

Paging이란?

Paging이란 가상주소공간을 일정한 크기의 Page로 나누는 것을 말한다.

물리적 메모리는 이런 Page들을 담기 위한 영역으로 나누는데 이를 Page Frame이라 한다.

또한 나뉘어진 가상주소공간의 Page가 물리적 메모리의 어떤 Page Frame에 저장되는지를 Page Table에 기록한다.

이렇게 일정한 단위로 주소공간을 나눔으로써 메모리 할당이나 Free List 관리 또한 용이해진다.

 

 

Page와 Page Frame

가상주소공간이 64byte라 할 때 하나의 Page 크기를 16byte로 정하면 4개의 Page로 나눌 수 있고 이를 저장하기 위해서는 물리적 메모리에서 4개의 Page Frame을 할당해주어야 한다.

 

 

Address Translation

이렇게 주소 공간을 기존과 다르게 할당하게 되면 이에 맞춰 주소값을 저장하는 방식도 바뀌어야 한다.

주소공간의 크기 : 64byte / Page 크기 : 16byte 라고 가정해보자.

주소값은 Virtual Page Number(VPN)와 Offset으로 구성된다.

 

주소공간의 크기를 Page크기로 나누게 되면 64/16=4개의 페이지로 나뉘어진다.

따라서 각각의 Page를 가리킬 VPN 또한 4개를 저장할 수 있어야 하는데 이는 2bit로 표현 가능하다.

 

Offset은 Page 내에서 어느 위치에 있는지를 나타내는 값이다.

따라서 이는 Page의 크기에 따라 결정되는데 Page의 크기는 16=2^4이므로 4bit로 표현 가능하다.

 

 

Page Table

실제 물리적 메모리에 접근하기 위해서는 VPN이 아닌 Page Frame Number(PFN)을 알아야 접근할 수 있다.

이를 위해선 Page가 어떤 Page Frame에 저장되어 있는지를 기록해야 한다.

그런데 VPN은 항상 0부터 차례대로 하나씩 증가하기 때문에 이를 index로 PFN을 저장하면 된다.

앞서 보았던 위 그림과 같은 경우에는 따라서 [3, 7, 5, 2]라는 값을 Page Table에 저장하여야 한다.

 

하지만 여기서 하나의 Page Table Entry(PTE)에는 PFN뿐만 아니라 여러 Flag들을 저장해야 한다.

 

- Valid Bit : 이 Translation이 유효한지 저장

- Protection Bit : 이 Page가 읽기, 쓰기, 실행 가능한지 아닌지 저장

- Present Bit : 이 페이지가 메모리에 위치한지 아니면 디스크에 위치한지 저장

- Dirty Bit : 이 페이지가 메모리에 올라간 후 수정되었는지 저장

- Reference Bit : 이 페이지가 접근되었었는지 저장

 

따라서 PFN과 여러 Flag들을 저장하는 PTE는 위 그림과 같이 구성된다.

'Computer Science > Operating System' 카테고리의 다른 글

Advanced Page Table  (0) 2019.04.23
Translation Lookaside Buffers - TLB란?  (0) 2019.04.23
Free-Space Management  (0) 2019.04.23
Segmentation이란?  (0) 2019.04.23
Virtual Address Space와 Address Translation  (0) 2019.04.23