TLB: 자주 사용되는 주소 변환 정보를 빠르게 참조할 수 있게 하는 캐시 메모리.
TLB에 원하는 주소 변환 정보가 있으면 페이지 테이블 참조하지 않고 바로 물리적 주소를 얻을 수 있다.
TLB miss => CPU가 TLB를 조회했으나 필요한 페이지 테이블 엔트리가 없는 경우
페이지 테이블을 조회
=> 페이지 테이블 엔트리가 유효하지 않거나 해당 페이지가 메모리에 없는 경우page fault 발생 시
- 디스크에서 해당 페이지 메모리로 로드하고 페이지 테이블 업데이트, 새로 로드된 페이지에 대한 물리적 프레임 할당
=>page fault 가 발생하지 않는 경우
- 이미 페이지 테이블에 유효한 엔트리가 있음페이지 테이블 업데이트 후
TLB 업데이트: 페이지 테이블에서 얻은 최신 변환 정보를 TLB에 업데이트
페이지 프레임 수를 늘리는데도 page fault가 발생하는 빈도가 증가하는 현상
FIFO 페이지 교체 알고리즘에서 관찰됨
FIFO
: 가장 오래된 페이지를 교체. 메모리에 가장 먼저 들어온 페이지를 메모리에서 제거하고 새 페이지를 그 자리에 삽입 -> 페이지의 사용 빈도나 중요도를 전혀 고려 안함. =>
-> 실제로는 자주 사용되는 페이지가 교체될 수 있고, 그 결과 페이지 폴트가 더 자주 발생한다.
FIFO
는 새로운 페이지가 오래된 페이지보다 덜 필요한 상황을 고려하지 않음FIFO
에서는 교체될 위험이 있음 => 프레임 수가 증가함에도 불구하고 page fault가 증가하는 원인이를 해결하려면?
더 진보된 페이지 교체 알고리즘 -LRU, LFU 알고리즘
=> 페이지를 교체할 때 단순히 페이지의 로드 시간뿐만 아니라 사용 빈도나 최근 사용 기록을 고려한다.
=>locality
개념에 기반한 제약을 가미하고 교체/할당 정책을 보완하는 것이 해결 방안이 될 수 있다.
Thrashing
: 프로세스가 너무 자주 페이지를 교체,
주로 가상 메모리 시스템에서page fault
가 너무 빈번하게 발생하는
-> 실제 유용한 작업보다 페이지 교체하는 데 더 많은 시간을 소비하는 현상
-> 일반적으로 메모리가 포화 상태이고 멀티 태스킹 환경에서 너무 많은 프로세스가 동시에 실행될 때 발생함
Working set
: 자주 참조되는 페이지들을 묶어서 필요한 페이지들이 메모리에 계속 유지될 수 있도록anonymous page