Swap space
Motivation
여러 process를 동시에 돌리고 싶은데, Memory만으로는 공간이 부족함
해결 방법
꼭 필요한 page만 메모리에 올리고, 나머지는 disk에 놔두기(swap space)
이때 각 프로세스들은 disk 공간도 memory로 인식
프로세스의 page들은 모두
1. main memory
2. swap space(disk)
둘 중 하나에 무조건 올라온다!

page fault
발생조건
page가 main memory에 없을 때
하는 일

- 메모리에서 빈 공간 탐색 & replacement
- SWAP space에서 page 찾아서 main memory로 가져오기
- Instruction 재실행
Control Flow

3~8 : TLB Hit
- 이 경우, page는 무조건 main memory에 있다.
because) TLB에 올라오려면 무조건 main memory에 올리는 과정을 거치기 때문
12 : Valid bit이 0일 때
15 : protection bit이 0일 때
17 : page는 memory에 있는데 TLB miss인 경우
- TLB에 넣어주기 + Instruction 재실행
21 : page도 disk에 있고 TLB miss인 경우
Present Bit
value = 1 : Main memory에 page가 존재
value = 0 : Swap spaces에 page가 존재
valid bit과의 차이
valid bit이 0 -> segmentation fault
present bit이 0 -> page fault
Lazy approach
메모리가 꽉 차면 그때부터 replacement
Swap Daemon, Page Daemon
Daemon이 계속 돌아가면서 미리미리 free 시킴
Swapping policy
policy
Optimal policy
가장 나중에 쓰일 애를 evict
FIFO
먼저 들어온 애를 쫓아내기
Belady's Anomaly
cache size가 커졌는데도 page fault가 늘어나는 현상
Random
아무나 나가
optimal이랑 성능이 비슷할 때도 있음(!!)
using history
- LRU (Least Recently Used)
- LFU (Least Frequently Used)
No-locality workload
다 비슷비슷함

the 80-20 workload
LRU Good

0~49까지 반복
Random good
