Computer/CS

페이지 폴트(Page Fault)

에린_1 2024. 3. 22. 22:48
728x90

Page Fault

  • CPU가 접근하려는 페이지가 메모리에 없는 경우이다. 즉, 페이지 테이블의 valid bit 값이 0인 경우이다.
  • 페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은것처럼 프로그램이 계속적으로 작동하게 해준다.

동작

  1. page table을 통해 필요한 page가 없다면 (invalid) 즉, page fault
  2. 운영체제에 page fault trap을 발생시킨다.
    1. 동작하고 있던 프로세스의 PCB를 메모리에 저장한다.
  3. 운영체제는 다른 page table을 확인한다. 그리고 뭔가 이상하다면 프로세스를 중지시키고 그냥 메모리에 없는 것이라면 backing store에서 찾는다.
  4. 필요한 페이지를 찾아서 물리 메모리에서 빈 frame을 찾는다. 빈 frame이 없다면 교체 알고리즘으로 page in, page out을 수행한다. 이때 프로그램은 wait queue에 들어가서 대기한다.
    1. free frame을 찾고 있을 때 CPU는 다른 프로그램에게 할당된다.
    2. 찾았다면 CPU를 사용하고 있던 프로그램의 PCB를 저장하고 page fault를 발생시킨 프로그램의 PCB를 가져온다.
  5. 그리고 물리 메모리에 올리면, page table을 update한다. 즉, valid bit를 수정한다.
  6. page fault를 발생시킨 코드를 다시 시작한다.
728x90

'Computer > CS' 카테고리의 다른 글

페이지 교체 정책(Page Replacement Policy)  (0) 2024.03.22
Lazy Loading  (0) 2024.03.22
TLB(Translation Lookaside Buffer)  (0) 2024.03.22
페이지 테이블(Page Table)  (0) 2024.03.22
가상 메모리(Virtual Memory)  (0) 2024.03.22