운동하는 공대생
[OS(운영체제)] Advanced Page Tables 본문
1. Linear Page Table
주소체계가 32-bit라고 한다면 page의 크기가 4KB이고 page-table entry는 4-byte라고 한다면 최종적으로 2^20 개의 엔트리가 존재한다면 2^20*4Byte = 4MB의 페이지 테이블이 프로세스마다 필요로 하게 된다. 그럼 linear 방식은 1024개의 process가 존재한다면 총 1024 processes * 4MB 이렇게 생각보다 많은 메모리를 필요로 하게 된다.
하지만 이런 방식에서는 문제는 페이지 테이블의 낭비가 심하다는 문제가 있다.
2.Paging and Segments(Hybrid Approach)
이전에 이야기를 했듯이 segmentation 방식에서는 다양한 길이의 segment로 주소를 나눈다. 하지만 paging방식은 정해진 사이즈로 페이지를 나눠서 segment를 나눈다.
먼저 주소를 통해서 segment 즉 데이터의 목적에 따라서 segment를 구분한다. 그 다음으로 그 segment를 나눈 데이터를 paging 방식으로 다시 나누는 방식으로 진행된다.
여러 장점도 존재를 하지만 기본적으로 큰 페이지 테이블과 external fragmentation 문제가 페이지 테이블로 인하여 발생한다.
3. Multi-level Page Table
이 방식은 Linear 한 방식과 다르게 한번에 테이블을 하나 배치하는 게 아니라 여러 단계를 통해서 페이지 테이블을 구성하는 방식이다. 즉 페이지 테이블을 매핑하는 또 다른 Page directory 페이지를 두고 페이지를 매핑한다.
virtual address 는 아래와 같이 구성된다. 즉 paging 방식에서 처럼 일정 부분은 page directory를 나타내고 그 이후 일정 부분은 page table의 엔트리로 나타낸다.
- Intel x86_32
장점
- 드문드문 사용되는 주소 공간을 지원하면서도 공간을 절약할 수 있음
- 사용된 주소 공간의 양에 비례하여 페이지 테이블 공간이 할당됨
- 물리 메모리 관리가 더 쉬워짐
- 각 페이지 테이블이 보통 한 페이지 내에 맞음
- 하드웨어가 페이지 테이블을 탐색하기 더 쉬움
- 외부 단편화가 없음
단점
- 주소 변환을 위해 더 많은 메모리 접근이 필요함
- 선형 페이지 테이블보다 하드웨어가 더 복잡함
'OS' 카테고리의 다른 글
[OS(운영체제)] Concurrency: Locks (2) | 2024.08.28 |
---|---|
[OS(운영체제)] TLB (Translation Lookaside Buffer) (0) | 2024.08.27 |
[OS(운영체제)] Paging (0) | 2024.08.26 |
[OS(운영체제)] Virtual memory Address translation (0) | 2024.08.23 |
[OS(운영체제)] Virtual Memory (0) | 2024.08.20 |