[컴퓨터구조론] Page Fault

티라노·2025년 5월 29일

컴퓨터구조론

목록 보기
17/18

Page fault

Swap space

프로세스가 생성될 때 OS는 하드디스크에 모든 페이지에 해당하는 공간을 만든다.
또한 페이지 테이블에 virtual address->physical address 매핑 정보를 만든다.

page fault란?

페이지 테이블에서 해당 페이지 인덱스에 접근했는데 valid bit가 0, 즉 데이터가 DRAM에 없고 하드 디스크에 없는 경우 page fault 가 발생했다고 한다.

이 경우 OS의 page fault handler 가 작동하여 문제를 해결한다.

Page fault handler

성능을 높이기 위해서 page fault의 비율을 최대한 줄여야 한다.
이를 위해 fully associative placement, smart page replacement algorithm등을 사용한다.

page fault가 발생할 시 굉장히 많은 사이클이 낭비되기 때문에, 비용 부담이 있는 알고리즘을 사용하더라도 한 번의 오류를 막을 수 있으면 전체적으로 이득이 된다.

  1. page dirty(DRAM과 디스크 데이터가 다름)이면 해당 사항 업데이트
  2. 디스크에서 페이지를 읽어와 DRAM에 삽입
  3. 페이지 테이블 업데이트

Replacement

LRU

가장 오래된 데이터를 삭제하고 페이지를 확보한다.
이 때 reference bit 를 활용하여 페이지의 접근 정도를 측정하는데, 페이지를 처음 삽입할 때는 비트 값이 1이었다가 활용되지 않으면 0으로 바꾼다.

가상 메모리 접근

메모리에 접근하려면 다음 단계를 밟는다.

  1. RAM의 페이지 테이블에 접근
  2. 가상 주소 -> 물리 주소로 변환
  3. RAM의 데이터에 접근

이 때 RAM 접근이 두 번 일어나는데 이 접근 시간을 줄이는 방법을 알아보자.

TLB

빠른 주소 변환을 위하여 페이지 테이블에 캐시를 설치하는데, 이 캐시를 TLB(Translation look-aside buffer) 라고 부른다.
페이지 테이블 접근에 대하여 좋은 locality를 가진다.
가지고 있는 데이터는 페이지 테이블과 동일하다. (접근 속도를 향상하기 위한 매핑 도구)

캐시는 원래 physical address를 통해 접근하지만, TLB와 cache에 동시에 접근하려면 virtual address를 이용한다.
이것을 virtual address but physical tag 라고 부른다.

0개의 댓글