[운영체제] 페이지 테이블, 페이지 테이블 엔트리 (Page Table, Page Table Entry)

강민혁·2023년 3월 28일
1

기술면접 | 운영체제

목록 보기
27/32

페이지 테이블, 페이지 테이블 엔트리 (Page Table, Page Table Entry)에 대해 설명하세요

Keyword

page number, frame number, 논리 주소, 물리 주소, PCB, PTBR, 유효 비트, 보호 비트, 참조 비트, 수정 비트


Script

Page Table을 통해서 page number를 frame number로 맵핑해주며, 논리 주소를 실제 물리 주소로 변환할 수 있습니다. 각 프로세스는 Page Table을 독립적으로 가지고 있고, 이 Page Table은 메인 메모리에 저장됩니다. 그리고 각 Process의 PCB는 Page Table Base Register(PTBR)을 가지고서, page table을 가르킵니다.

Page Table에서 각 행들을 Page Table Entry라고 합니다. Page Table Entry에는 page number, frame number 뿐 아니라, 유효 비트(valid bit), 보호 비트(protection bit), 참조 비트(reference bit), 수정 비트(modified bit, dirty bit)가 존재합니다.


Additional

그림


Paging에서의 주소 변환

paging 시스템에서는 모든 논리 주소가 기본적으로 page number와 offset으로 이루어져 있다.
page number는 접근하고자 하는 page의 번호이고, page number로 page table에서, 해당 page가 어떤 frame에 할당되어있는지 확인할 수 있다. 여기서 offset은 frame의 시작 주소로부터 얼마나 떨어져있는지를 나타내는 값이다.


Page Table Entry Property

유효 비트(valid bit)
유효 비트는 현재 해당 Page에 접근 가능한지의 여부를 알려준다. 항상 모든 Page가 물리 메모리에 존재하지 않고, 대부분 보조기억장치의 스왑영역에 존재한다. 그래서 유효 비트는 현재 page가 메모리에 적재되어있는지, 보조기억장치에 있는지 알려주는 bit이다. 만약 메모리에 적재되어있다면 유효 비트가 1, 그렇지 않다면 0으로 표기된다.

만약 CPU가 유효 비트가 0인 (메모리에 적재되어 있지 않은) 페이지로 접근하려고 하면, Page Fault라는 Exception이 발생한다.

Page Fault가 발생하면, CPU는 기존 작업 내역을 백업한 후에, 원하는 page를 메모리로 가져온 뒤에 유효 비트를 1로 변경해준다. 이제는 CPU가 해당 page에 접근할 수 있게 된다.

보호 비트(Protection Bit)
보호 비트는 해당 page가 read/write가 모두 가능한 page인지, 혹은 read-only인지를 나타낸다. 보호 비트가 0인 경우, 해당 page는 read-only이고, 1일 경우에는 read/write가 모두 가능하다.

보호비트를 3개의 bit로 더 복잡하게 구현할 수도 있는데, Read의 r, Write의 w, eXecute의 x 조합으로 해당 권한의 조합을 나타낼 수 있다. 예를 들어 111의 경우는 Read/write/eXecute가 모두 가능한 경우이다.

참조 비트(Reference Bit)
참조 비트는 CPU가 이 page에 접근한 이력이 있는지의 여부를 나타낸다. 메모리 적재 이후에 CPU가 read or write한 page는 참조 비트가 1로 설정되고, 적재 이후 한 번도 read/write 한 이력이 없는 page는 0으로 유지된다.

수정 비트(modified Bit)
수정 비트는 해당 page에 data를 write한 이력 여부를 나타낸다. dirty bit라고도 부르는데, 이 bit가 1이면 변경된 이력이 있는 page, 0이면 변경 이력이 없는 page이다.

수정 비트의 존재 이유는 해당 page가 메모리에서 내려갈 때, 보조기억장치에 write 작업을 해야할지에 대한 판단을 위해 존재한다. 한번도 수정된 적 없는 page라면, 굳이 보조기억장치에 내용을 업데이트하는 불필요한 작업은 하지 않아도 된다. 수정 비트 하나로, 메모리 write 시간을 효율적으로 아낄 수 있다.


계층적 페이징(hierarchical paging)과 다단계 페이지 테이블(multilevel page table)

계층적 paging은 page table을 paging아여 여러 단계의 page를 두는 방식이다. 다단계 page table이라고도 불리는데, page table을 여러개의 page로 자르고, 바깥쪽에 page table을 하나 더 두어, 잘린 page table의 page들을 가르키게 하는 방식이다.

이를 통해, 모든 page table을 항상 메모리에 유지하지 않고, 일부는 보조기억장치에 있을 수 있다. 그래서 막대한 크기의 page table로 인해 낭비되는 공간을 줄일 수 있게 된다.

논리 주소는 바깥 페이지 번호와 안쪽 페이지 번호를 가르키도록 하여 주소변환을 할 수 있도록 한다.


Reference

Book - 혼자 공부하는 컴퓨터 구조+운영체제

22. 페이징(Paging)과 페이지 테이블(Page table)

profile
with programming

0개의 댓글