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
'운영체제 OS' 카테고리의 다른 글
[운영체제/OS] Frames Allocation Algorithm, Kernel Memory Allocation (0) | 2020.12.05 |
---|---|
[운영체제/OS] Copy-on-Write와 Page Replacement (0) | 2020.12.05 |
[운영체제/OS] Main Memory 메모리 관리 2/2 (0) | 2020.10.21 |
[운영체제/ OS] Main Memory 메모리 관리1/2_ Address Binding, Segmentation, Paging, Memory Protection (0) | 2020.10.21 |
[운영체제/OS] CPU Scheduling_ Multilevel Queue, Multilevel Feedback Queue 스케줄링 (0) | 2020.10.19 |