728x90
Page Fault
- CPU가 접근하려는 페이지가 메모리에 없는 경우이다. 즉, 페이지 테이블의 valid bit 값이 0인 경우이다.
- 페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은것처럼 프로그램이 계속적으로 작동하게 해준다.
동작
- page table을 통해 필요한 page가 없다면 (invalid) 즉, page fault
- 운영체제에 page fault trap을 발생시킨다.
- 동작하고 있던 프로세스의 PCB를 메모리에 저장한다.
- 운영체제는 다른 page table을 확인한다. 그리고 뭔가 이상하다면 프로세스를 중지시키고 그냥 메모리에 없는 것이라면 backing store에서 찾는다.
- 필요한 페이지를 찾아서 물리 메모리에서 빈 frame을 찾는다. 빈 frame이 없다면 교체 알고리즘으로 page in, page out을 수행한다. 이때 프로그램은 wait queue에 들어가서 대기한다.
- free frame을 찾고 있을 때 CPU는 다른 프로그램에게 할당된다.
- 찾았다면 CPU를 사용하고 있던 프로그램의 PCB를 저장하고 page fault를 발생시킨 프로그램의 PCB를 가져온다.
- 그리고 물리 메모리에 올리면, page table을 update한다. 즉, valid bit를 수정한다.
- 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 |