프로세스 실행
- OS가 프로그램의 일부만 메인 메모리에 가져옴
- 필요한 부분이 메모리에 없으면(페이지 폴트) 인터럽트 발생
지역성의 원리(참조의 지역성, Locality of reference)

- 프로세스 내의 데이터는 뭉치는 경향이 있음
- 프로그램을 실행하면, 가까운 주소의 데이터를 사용하게 됨
- 함수 호출(먼 주소의 데이터도 사용) 같은 특별한 경우가 아니면
- 이를 잘 활용하면, 페이지 수를 적게 사용하면서도 스래싱 방지 가능
가상 메모리
- 물리적 메모리와 구별되는 논리적 메모리
- 물리적 메모리 공간보다 주소를 더 많이 사용 가능

- 여러 프로세스가 주소 공간 공유 가능
- 가상 주소 공간: 주로 0번에서 시작해서, 공간 끝까지 연속적으로 사용
- 한편, 물리적 메모리는 페이지 프레임으로 구성
- MMU(메모리 관리 유닛, Memory Management Unit)이 논리적 주소를 물리적 주소로 짝지어 줌
- 가상 메모리를 구현하는 방법 중 하나가 요구 페이징(Demand Paging)
요구 페이징
- 요구 페이징을 사용하면 프로세스 일부만 메모리에 올리고, 필요할 때 페이지를 가져옴
- 장점:
- I/O 덜 해도 됨
- 메모리 공간 덜 필요함
- 응답 속도 더 빠름
- 더 많은 유저가 사용할 수 있음
- Lazy swapper: 페이지가 필요할 때까지 페이지 스왑 안 함
페이지 테이블
- 프레임 번호, valid-invalid 비트로 구성(v: valid(메모리에 있음), i: invalid(메모리에 없음))
- MMU가 주소를 번역하는 과정에서 valid-invalid 비트가 i라면 페이지 폴트 발생

1. 프로그램 실행 중 필요한 페이지 참조
2. 페이지 테이블 확인
3. 페이지 테이블에 없으면(페이지 폴트) 인터럽트 발생, 보조기억장치 확인
4. 페이지를 메인 메모리(물리적 메모리)의 빈 프레임으로 가져옴
5. 페이지 테이블 수정
6. 프로그램 재개
P: 메인 메모리에 빈 프레임 없으면...?
S: 페이지 교체(기존 페이지 중 일부를 보조기억장치로 넘기고(swap out), 필요한 페이지를 가져옴)가 일어남

페이지 교체 알고리듬
- 앞에서 얘기한 페이지 교체가 일어날 때, 교체할 페이지를 결정하는 방법
- 랜덤 교체(Random Replacement)
- 벨라디의 최적 알고리즘(Belady's Optimal Algorithm)

-
LRU(Least Recently Used)

-
LFU(Least Frequently Used)
- FIFO(First In First Out)

Inclusion Property: m개의 프레임에 대해 시간 t에서 로드된 페이지는 m+1개의 프레임, 시간 t에서도 로드되어 있음
스래싱
- 프로세스가 충분한 페이지 수를 가지지 못해, 페이지 교체율이 매우 높은 상태
- 프로그램 실행은 잘 하지 않으면서 페이지 교체만 엄청 하게 됨
- CPU 사용률 매우 낮아짐

Reference
- 강순주 교수님 PPT OS11
- Operating System Concepts 10ed. Abraham Silberschatz
정리가 잘 된 글이네요. 도움이 됐습니다.