Paging
Concept Of Paging
- Paging: 주소 공간을 Page라고 하는 고정된 크기의 일부로 쪼개는 것
- Segmentation: Logical Segments(Code, Stack, Heap 등)의 다양한 크기
- Paging을 통해 실제 메모리는 몇 개의 Page로 이루어진 Page Frame으로 쪼개진다.
- 프로세스별 Page Table은 가상 주소를 실제 주소로 바꿀 수 있어야 한다.
Advantages Of Paging
- Flexibility: 주소 공간의 추상화를 효과적으로 지원 가능
- Heap과 Stack이 어떻게 사용되는지 가정할 필요가 없다.
- Simplicity: 여유 공간 관리의 단순화
- 주소 공간의 Page와 Page Frame은 동일한 크기이다.
- Free List의 유지와 할당이 쉽다.
Example
- 16 Byte의 Page Frame으로 구성된 128 Byte 실제 메모리
- 16 Byte의 Page로 구성된 64 Byte 주소 공간

Address Translation
- 가상 주소 내의 두 가지 요소
- VPN: Virtual Page Number
- Offset: Page 내의 Offset

Example
- 가상 주소 21의 64 Byte 주소 공간 표현

- PFN: Page Frame Number
- Offset은 변화가 없고, VPN은 Page Table을 통해 PFN으로 주소 변환이 발생한다.
Page Table
- 가상 Page가 실제 메모리에서 진행되는 위치를 기록
- 프로세스별 구조
- OS 메모리 영역에 저장

In The Page Table
- Page Table은 가상 주소를 실제 주소로 변환하기 위한 자료 구조
- 단순화 형태: Linear Page Table (=배열 형태)
- OS는 VPN으로 배열을 인덱싱하고 페이지 테이블 항목을 찾는다.
Page Table Entries (PTE)
- Page Frame Number (PFN)
- Valid Bit
- R/W Bit (Protection Bit)
- User/Supervisor Bit
- User Mode 프로세스의 Page 접근 가능 여부 확인
- Present Bit
- 해당 Page가 실제 메모리에 있는지 Disk에 있는지 표시
- Accessed Bit (Reference Bit)
- Dirty Bit
Example: x86 Page Table Entry
PTE of x86 Architecture
