페이징 기법으로 메모리를 관리할 때, 페이지 테이블 내 페이지가 가득차면 디스크에서 페이지를 가져와야 하는 상황이 왕왕 발생한다. 디스크는 속도가 느리기 때문에 Page fault가 발생할 상황을 가능한한 적게 만들어야 하는 데 이 때, 프로세서는 어느 페이지가 테이블에 할당되어져야 하는 지와 어느 페이지를 교체시킬 것인지에 대한 여러가지 정책이 있다.
먼저 들어온 페이지가 먼저 나가는 정책
- 들어온 지 제일 오래된 페이지가 victim이 된다.
- 간단하지만 성능이 그닥 좋지는 않다.
페이지가 또 다시 할당되어 질 때(처음은 제외) reference bit에 1을 넣는다.
이 reference bit에 1이 있는 것은 victim이 되지 않는다.
- 1bit의 주소기억만 활용하기 때문에 할당되어진 지 오래된 페이지도 1, 방금 재할당된 페이지도 1로 같아서 문제가 발생한다.
페이지가 재차 할당되어질 때 마다 count bit를 1씩 증가시킨다.
- Reference 1-bit보다 공간복잡도가 높다
- 재할당 되어진 페이지들 중에서도 많이 참조된 페이지를 알 수 있다.
Clock이라는 시계라는 개념이 존재하는 데, Refernece 1-bit정책과 같이 페이지가 재참조될 때 Reference bit을 1로
대응시킨다.
그리고 Clock이 가리키는 시계바늘이 있는 데 이 Clock 포인터는 Reference bit를 참조하며 1이면 0으로 변환시키고 0이면 victim으로 삼는다.
- 1bit의 주소공간을 가지는 데 비해 count방식보다 성능이 좋다.
들어올 페이지에 대해 미리 알고있다는 게 전제가 되어야 한다.
페이지교체가 일어날 때 victim은 미리 들어올 페이지를 참조하고 가까운 미래에 나오는 페이지는 victim으로 제외함으로써 최상의 효율을 내는 정책이다.
- 하지만 어떤 페이지가 들어올 지에 대한 정보는 알 수 없기 때문에 이상적인 이론일 뿐이다.
- 압축을 푼다
- index.html을 연다.
- Reference String에 숫자 혹은 문자열을 넣는다.
- 1524384129903 혹은 ABDGKREOTDSASD
- 정책버튼을 누르고 결과값을 조회한다.
- 주황색이 fault이고 보라색이 hit임을 의미한다.