운영체제 OS

[운영체제/OS] Page Fault와 Demand Paging

Page Fault

페이지를 참조하는데, 그 페이지에 대한 첫 참조에서 OS가 막혀버린다면(trap, 즉 software interrupt 발생), page fault가 발생된겁니다.

OS가 보았을 때

1. (1) invalid 참조라면 abort를 하고, (2) 그냥 메모리에 없는 경우- 두 가지 중 하나로 판단

2. free frame을 찾음

3. 페이지를 disk로부터 frame에 swap해줌.

4. page table을 유효한 값으로 validation bit을 v로 변경해줌.

5. page fault를 발생시켰던 명령어를 다시 실행. (stop->ready 단계로)

 

 

Demand Paging

프로세스에서 페이지를 프로세스 생성 시에 모두 할당하는 게 아니라, 필요할 때마다 동적으로 할당하는 기법입니다.

 

Pure demand paging - 프로세스를 메모리에 페이지 없이 시작

Locality of reference (참조의 지역성) - 프로세스에서 자주 쓰는 메모리들은 인접해있다는 기법으로 오버헤드를 줄여준다. 

 

Demand Paging 수행

 

주요 활동: interrupt, page reading, process restart

Page fault 확률 0<=p<=1

if p=0, no page faults 

if p=1, every reference is a fault.

 

Effective Access Time (EAT)

 EAT = (1-p) * memory access

           + p * (page fault overhead + swap page out + swap page in)

 

ex)

Memory access time = 200 nano sec

Average page-fault service time = 8 millisec

EAT = (1-p) * 200 + p * 8,000,000 

      = 200 + p * 7999800

 

10% 성능저하하는 p를 만들기 위해선, (기존 memory access time이었던 200을 220으로 바꿈)

200 + 7999800 * p < 220 

7999800 * p < 20 

p < 0.0000025