페이지 테이블

Ahn9807 (토론 | 기여)님의 2023년 2월 5일 (일) 08:53 판 (새 문서: 분류: 메모리 관리 == 개요 == 컴퓨터 과학에서 페이지 테이블(page table)은 페이징 기법에서 사용되는 자료구조로서, 프로세스의 페이지 정보를 저장하고 있는 테이블이다. 하나의 프로세스는 하나의 페이지 테이블을 가진다. 테이블은 다음과 같이 색인과 내용으로 구성되어 있다. * 색인 : 페이지 번호. * 내용 : 해당 페이지에 할당된 물리 메모리(프레임)의 시작...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

컴퓨터 과학에서 페이지 테이블(page table)은 페이징 기법에서 사용되는 자료구조로서, 프로세스의 페이지 정보를 저장하고 있는 테이블이다. 하나의 프로세스는 하나의 페이지 테이블을 가진다. 테이블은 다음과 같이 색인과 내용으로 구성되어 있다.

  • 색인 : 페이지 번호.
  • 내용 : 해당 페이지에 할당된 물리 메모리(프레임)의 시작 주소. 이 시작 주소와 페이지 주소를 결합하여 물리 메모리 주소를 알 수 있다.

리눅스에서는 4단계 페이지 테이블을

PGD PUD PMD PTE (global direcotry / upper directory / mid-level directory / table entry)

로 구분한다.

Page Directory
각각의 페이지 테이블은, 전체내용을 모두 적기에는 주소 공간이 부족함으로 recursive하게 정리하여 페이지 테이블에 대한 크기를 줄였다. (모든 데이터를 저장한다면 크기는 오히려 page directory를 사용한 쪽이 조금 더 클 것이다, 그러나 그런 경우는 절대 없음으로 sparse하게 분포되는 경우 이 방식이 훨씬 데이터 크기를 적게 유지할 수 있다.) 이중 말단을 제외한 부분을 page direcotry라고 한다.
Page Table entry
page table에서 끝에 위치한 부분을 의미한다.

Recursive Page Table

Recursive page table이란 페이지 테이블 말단에 자기자신을 향하는 주소를 할당하는 것을 말한다. 이 방식을 통해서 각각의 페이지 테이블에 대한 인덱스를 page table walking없이도 찾아 올 수 있다.