가상 메모리는 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다.
Demand Paging은 필요한 부분만 메모리에 적재하는 것이다. 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올린다. 이러한 프로세스의 일부분은 페이지 단위일 수 있고, 세그먼트 단위일 수 있지만 대부분은 페이지 단위 사용한다.
이렇게 현재 필요한 페이지만 메모리에 올리는 것을 Demand Page라고 한다.
위의 그림 과정 설명
1. CPU가 page table에서 해당 page에 접근한다.
2. Invalid page를 접근하면 MMU가 interrupt를 발생시킨다.
- 커널 모드로 들어가 page fault handler가 invoke된다.
3, 4. 해당 페이지를 disk에서 찾아 메모리로 읽어온다.
- disk I/O가 끝나기까지 이 프로세스는 CPU를 preempt 당한다. (block)
5. page table을 업데이트한다.
- Disk read가 끝나면 page tables entry 기록, valid/invalid bit = "valid"
- ready queue에 process를 insert -> dispatcher later
6. 이 프로세스가 CPU를 잡고 다시 running, 아까 중단되었던 instruction 재개
cf) Swapping와 Demanding Paging의 공통점은 둘 다 메모리와 backing store 사이를 서로 오고 가는 기능을 수행하지만, Swapping은 프로세스 단위로 이동하고 Demanding Paging은 페이지 단위로 이동하는 차이점이 있다.
Page Fault Rate 0 <= p <= 1.0
probability of a page fault
p = 0
: Page fault가 없다.p = 1
: 모든 접근이 fault Effective Access Time
(1 - p) x memory access // fault 생기지 않은 경우
+ p x (OS & HW page fault overhead) // fault 생긴 경우
+ [swap page out if needed] // frame이 모두 찬 경우,
// 하나를 swap out 시킨다.
+ swap page in
+ OS & HW restart overhead)
메모리가 부족한 경우(Free frame이 더이상 없는 경우) 다른 프로그램이 새로 실행되거나 실행 중인 프로세스가 다른 페이지를 요구하는 경우 이미 메모리에 있는 페이지 중 하나를 다시 backing-store에 보내고, 새로운 페이지를 메모리에 올려야 한다.
이를 Page Replacement라고 한다. 여기서 backing store로 page out 된 페이지를 victim page라고 한다.
각 Process에 얼마만큼의 page frame을 할당할 것인가
일반적으로 메모리에 올라가는 프로세스가 증가할수록 CPU의 utilization이 증가할 것이라고 생각하지만 일정 범위를 넘어서면 오히려 CPU utilization이 감소하는 현상이다.
이는 프로세스의 원할한 수행에 필요한 최소한의 page frame 수를 할당 받지 못한 경우 발생한다.
1. OS는 낮은 CPU Utilization을 모니터링한다.
2. OS는 MPD(Multiprogramming degree)를 높여야 한다고 판단하여 다른 프로세스를 메모리에 더 많이 올린다. 이는 프로세스당 할당된 프레임의 수가 감소하게 된다.
3. 프로세스로 인해 page-fault가 발생한다. (프레임(메모리) 부족)
4. 프로세스는 page의 swap in / swap out으로 디스크 I/O 작업이 증가하게 된다.
5. CPU를 사용하지 않은 작업이기 때문에 그동안 CPU는 아무것도 하지 않게 된다.
👉 CPU Utilization 감소
Locality of reference
- 프로세스는 특정 시간동안 일정 장소만을 집중적으로 참조한다.
- 집중적으로 참조되는 해당 page들의 집합을 locality set이라고 한다.
working set은 현재 시간에서 일정 시간(△) 이전동안 사용되었던 페이지의 집합이다. △(델타)는 OS 내부에서 정하는 기준에 따라 다르고, 이를 working set window라고 한다.
현재 시간이 t_1이면, working set = {1, 2, 5, 6, 7}이다. 이때 working set의 개수는 총 5개이므로 프레임 또한 5개를 할당하면 된다.
Page-Fault rate의 상한값과 하한값을 둔다
빈 frame이 없으면 일부 프로세스를 swap out
Page 수를 감소시키는 경우
최근 트렌드는 Larger page table