프로세스가 생성될 때 OS는 하드디스크에 모든 페이지에 해당하는 공간을 만든다.
또한 페이지 테이블에 virtual address->physical address 매핑 정보를 만든다.
페이지 테이블에서 해당 페이지 인덱스에 접근했는데 valid bit가 0, 즉 데이터가 DRAM에 없고 하드 디스크에 없는 경우 page fault 가 발생했다고 한다.
이 경우 OS의 page fault handler 가 작동하여 문제를 해결한다.
성능을 높이기 위해서 page fault의 비율을 최대한 줄여야 한다.
이를 위해 fully associative placement, smart page replacement algorithm등을 사용한다.
page fault가 발생할 시 굉장히 많은 사이클이 낭비되기 때문에, 비용 부담이 있는 알고리즘을 사용하더라도 한 번의 오류를 막을 수 있으면 전체적으로 이득이 된다.
가장 오래된 데이터를 삭제하고 페이지를 확보한다.
이 때 reference bit 를 활용하여 페이지의 접근 정도를 측정하는데, 페이지를 처음 삽입할 때는 비트 값이 1이었다가 활용되지 않으면 0으로 바꾼다.
메모리에 접근하려면 다음 단계를 밟는다.
이 때 RAM 접근이 두 번 일어나는데 이 접근 시간을 줄이는 방법을 알아보자.
빠른 주소 변환을 위하여 페이지 테이블에 캐시를 설치하는데, 이 캐시를 TLB(Translation look-aside buffer) 라고 부른다.
페이지 테이블 접근에 대하여 좋은 locality를 가진다.
가지고 있는 데이터는 페이지 테이블과 동일하다. (접근 속도를 향상하기 위한 매핑 도구)
캐시는 원래 physical address를 통해 접근하지만, TLB와 cache에 동시에 접근하려면
virtual address를 이용한다.
이것을 virtual address but physical tag 라고 부른다.