"KOCW - 반효경 교수님의 운영체제" 를 듣고 정리한 내용입니다.
Virtual Memory
Demand Paging
- 페이지가 요청됐을 때 메모리에 올리는 것
- I/O 양의 감소
- 메모리 사용량 감소
- 빠른 응답 시간
- 더 많은 사용자 수용
- Valid / Invalid bit 사용
- invalid
- 사용되지 않는 주소 영역인 경우
- 페이지가 메모리에 올라와있지 않고 backing store에 있는 경우
- 처음에는 모든 페이지 엔트리가 invalid로 초기화
- page fault
- 요청한 페이지가 메모리에 없는 경우 = 페이지 테이블에 invalid로 세팅되어 있는 경우
- CPU가 운영체제에게 넘어감 (일종의 SW interrupt)
- invalid
Page Fault
- invalid page를 접근하면
MMU
가 trap을 발생시킴 (page fault trap) - 커널 모드로 들어가 page fault handler 실행
- sequence
- 해당 페이지에 대한 접근이 적합한지 체크
- get an empty page frame (빈 공간이 없다면 쫓아냄, replacement)
- 해당 페이지를 디스크에서 메모리로 읽어옴
- disk I/O가 끝나기까지 이 프로세스는 CPU를 선점당함 (
blocked
) - disk read가 끝나면 페이지 테이블 엔트리 기록 (valid-invalid bit = "valid")
- 프로세스를 ready queue에 배치
- disk I/O가 끝나기까지 이 프로세스는 CPU를 선점당함 (
- 이 프로세스가 CPU를 잡고 다시 running
- 이전에 중단되었던 instruction 재개
Free frame이 없는 경우
- Page replacement
- 어떤 프레임을 빼앗아올지 결정해야 함
- 바로 사용되지 않을 페이지를 쫓아내는 것이 좋음
- Replacement Algorithm
- 목표 : page-fault rate 최소화
- 알고리즘 평가
- 주어진 page reference string에 대해 page fault를 얼마나 내는지 조사
Offline Optimal Algorithm
- MIN (OPT) : 가장 먼 미래에 참조되는 페이지를 교체
- 사실 미래에 어떤 페이지가 참조될 지 아는 것은 불가능하다. 실제 시스템에서 사용될 수는 없고, 단지 미래에 참조되는 페이지를 전부 알고 있다고 가정한다.