가상 메모리 관리
요구 페이징
- 요구페이징은 프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한번에 메모리에 적재하는 것이 아니라 당장에 사용될 페이지만을 올리는 방식
- 이를 Lazy swapper라고 함
- 장점
- 필요한 페이지만 적재하기에 메모리 사용량 감소
- 프로세스 전체를 메모리에 적재하는데 소요되는 입출력 오버헤드 감소
- 사용되지 않는 주소 영역에 대한 입출력이 줄어 응답시간이 감소
- 시스템이 더많은 프로세스를 수용할수 있게 해줌
- 물리적 메모리의 제약을 벗어남
페이지 폴트(page fault)
- 가상 메모리 관리는 일부 페이지만 메모리에 적재하고 나머지는 디스크의 스왑 영역에 존재하기 때문에 메모리에 페이지가 존재하는지 구별하기 위해 유효-무효 비트를 두어 각페이지가 존재하는지 표시한다. 이때 페이지가 메모리에 적재되지 않아 유효-무효 비트가 무효로 세팅되어 있는 경우를 페이지 폴트가 일어났다고한다.
페이지 교체 알고리즘
페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 메모리에 적재되지 않았을 시(page fault) 어떤 페이지 프레임을 선택하여 교체할 것인지 선택하는 방법
FIFO
- First In First Out
- 메모리에 가장 먼저 올라온 페이지를 우선적으로 내보내는 알고리즘
OPT
- Optimal : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
- 가장 이상적인 방법이나 적절한 페이지를 예측하는것이 불가능
LRU
- Least Recently Used : 가장 오랫동안 사용되지 않은 페이지 교체
- 가정 : 가장 오랫동안 사용되지 않은 데이터라면 앞으로도 사용확률이 적을것
- 큐로 구현가능. 사용한 데이터를 큐에서 제거하여 맨 위로다시 올리고, 프레임이 모자랄 경우 맨 아래에 있는 데이터를 삭제
- 사용된 시간을 알 수 있기 위해 페이지마다 카운터가 필요
- 카운터 : 각 페이지별로 존재하는 논리적인 시계
- 참조된 페이지 시간을 기록해야하므로 막대한 오버헤드 발생
LFU
- Least Frequently Used : 참조 횟수가 가장 작은 페이지 교체
MFU
- Most Frequently used : 참조 횟수가 가장 많은 페이지 교체
NUR
- Not Used Recently : 최근에 사용하지 않은 페이지 교체