개요
페이지 테이블은 각 프로세스마다 가지고 있으며 메모리내에 OS 가 관리할 수 있는 영역에 저장이됨 따라서 페이지 테이블의 크기를 줄이는 것은 중요함
PTE(Page Table Entry) 의 크기가 4Byte == 32bit 로 가정하고 각 페이지의 크기가 2^12 바이트일경우 2^32 / 2^12 개의 entry 가 존재할 수 있음 2^20 * 4KB == 4MB
페이지 테이블 크기를 줄일 수 있는 방법
- 페이지 크기를 늘린다.
- entry 의 개수가 줄어듬
- 내부 단편화 문제, 메모리 낭비 문제 발생
- Segmentation 기법 사용
- Code, Stack, Heap 세그멘트에 각각 페이지 테이블을 생성
- segment를 위한 base, bound register 가 필요함 Context-Switch 시에 PCB에 저장되어야함
- 외부 단편화 생김, 페이지 테이블 낭비가 생김(Heap Space 의 경우 Sparse)
Multi-Level Page Table
페이지 테이블을 위한 페이지 테이블을 만드는 것. 프로세스마다 Page Table 은 메모리에 저장이 되는데 이를 페이지 단위로 나누어서 생각. 선형 구조가 아닌 Tree구조로 Page Table을 만드는 것
기존 방법
기존의 Linear Page Table은 4MB내의 invalid 한 entry 도 모두 memory 를 잡고 있어서 메모리 낭비가 큰 문제가 있었음. 이를 해결하기 위해 Page Table을 Page 단위로 나누어서 또 다른 Page Table을 생성한다면 적어도 모두 Invalid 한 entry를 담은 Page는 memory 에 할당하지 않을 수 있음
ML Table의 장점 (PDBR)
- Invalid 한 페이지를 할당하지 않으므로 메모리 절약가능
- 작은 단위로 페이지 테이블을 분리하여 메모리 관리가 용이함 (4KB)
ML Table의 단점
- TLB Miss 가 발생할 경우 두번의 메모리 접근이 필요함
- TLB Miss → PDBR → PTE
'운영체제' 카테고리의 다른 글
[운영체제] - 좀비와 고아 프로세스 (0) | 2024.01.16 |
---|---|
[OSTEP-28] - 락s (1) | 2024.01.12 |
[운영체제] - 연속 메모리 할당과 비연속 메모리 할당 (기본) (1) | 2024.01.05 |
[OS] - 메모리 관리 전략 (1) (1) | 2024.01.05 |
[운영체제] - 스케줄러 (0) | 2024.01.04 |