Reference - Operating Systems: Three Easy Pieces
https://pages.cs.wisc.edu/~remzi/OSTEP/
Beyond Physical Memory
더 큰 주소 공간을 가진 프로세스를 위해, OS는 사용 빈도가 낮은 page를 메모리에서 해제하고 디스크에 저장한다.
Paging 기법에서 page를 메모리가 아닌 Disk에 저장하는 데, page가 저장되는 Disk 공간을 swap 공간이라 한다.
OS가 swap 공간을 page단위로 읽고 쓰기 위해 disk의 page 주소를 알아야 한다.
Swapping을 위해, page table entry에 page가 pm에 있는지 disk에 있는지 확인하는 valid(=present) bit를 추가한다. Page hit란, pm에 page가 있는 경우를 말한다. Page fault는, pm에 page가 없는 경우다.
Page fault handling의 경우, page fault가 발생하면 CPU가 trap을 발생시키고 OS에게 권한을 넘기면 OS의 page fault handler가 제거할 victim을 선택한뒤, PTE에서 disk 주소 정보를 통해 valid한 page를 찾아 두개를 replace한다. 이를 page-replacement라 한다. 이후 메모리를 할당하고, page table의 present bit를 업데이트하며, TLB도 업데이트하여 다음 접근부터 TLB로 주소변환을 수행한다.
Disk에서 page 정보를 가지고 오는 동안 프로세스는 blocked 상태가 된다.
만약 메모리를 모두 사용중인 상태에서 새 프로세스를 실행하려면, 일부 메모리를 해제해야 한다.
이러한 방법을 page-replacement policy라 한다.
- Page Fault Control Flow
disk는 dram보다 약 10000배가 느리기에, page fault time이 매우 오래걸려 overhead가 크다.
따라서 Page fault를 최대한 줄여야하는데, 이를 위해 저번 TLB에서 활용한 Locality 개념이 유용하다.
working set이라 불리는 active virtual page set이 main memory size보다 크면, Thrashing이라 불리는 지속적으로 페이지가 swap되는 현상으로 인해 퍼포먼스가 매우 떨어질 것이다.
이때 replacement를 memory가 꽉찼을 경우 발생하게 하는 것은 비효율적이기에, 실제로는 free page가 Low watermark pages보다 아래로 내려가면 swap daemon, page daemon이라 불리는 백그라운드 thread가 동작하여 High watermark만큼 공간을 비운다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 21. I/O Devices (1) | 2023.12.08 |
---|---|
[운영체제] 20. Swapping - Policy (1) | 2023.12.08 |
[운영체제] 18. Paging - smaller table (0) | 2023.12.08 |
[운영체제] 17. Paging - TLB (0) | 2023.12.08 |
[운영체제] 16. Paging (1) | 2023.12.07 |