티스토리 뷰
### Page fault ###
: 메모리에 적재된 페이지중에 사용 페이지가 없을 때를 가리킨다
: paging 하드웨어는 page table을 통해 address를 변환 할 때 invalid bit가 설정되어 os에 trap을 발생시킨다.
(trap은 os가 원하는 page를 memory로 가져오지 못한 결과이다.)
< Handling the page fault > (page fault를 단계적으로 설명)
1. MMU는 TLB를 이용해서 number을 찾고 TLB에서 못찾는 경우 page table에서 number을 찾는다.
1. MMU는 process가 내부 table을 검사하여 reference(참조)가 valid or invalid memory access인지 확인한다.
2. reference가 invalid면 os가 process를 종료한다. (backing store에 가는지 안가는지 여부 판단한다)
2. valid면 os가 backing store에 접근해서 해당 page가 저장된 sector을 찾아서 physical memory frame에 넣어줘야 한다.
3. os는 free frame list에서 free frame을 찾는다.
4. free frame이 있으면 backing store에서 가져온 page를 넣는다.(page를 넣으면 더이상 invalid bit가 아니여서 valid bit로 바꿔준다 (갱신))
(storage 읽기가 완료되면 os는 process와 함께 유지된 내부 table과 page table을 수정하여 page가 현재 memory에 없음을 나타낸다.)
5. os는 다시 시작합니다. (trap에 의해 중단된 경우에도)
< Pure demand paging >
: os는 process의 모든 page를 physical memory에 올리는 것이 아니라 backing store에 전부 올린다.
: os가 non-memory-resident page에 있는 process의 *첫 번째 명령어로 명령어 pointer를 설정하면 process는 즉시 page에 faults를 일으킨다. => backing store로 간다.
: page를 memory로 가져온 후에는 process가 계속 실행되어 필요한 모든 page가 memory에 올때까지 필요에 따라 fault가 발생한다.
< Locality of reference >
: process는 특정 기간 동안 관련 page를 이전에 요청한 or 비슷한 page를 요청하는 경향이 있다.
=> 시간이 지나면 page fault가 많이 발생하지 않는다.
: locality는 공용으로 사용되는 page이다.
: locality별로, demand paging은 합리적인 성능을 가져온다.
< Process restart >
: page fault가 발생하면 os는 중단된 process상태 (e.g., registers, condition code, instruction counter)를 저장한다.
: os는 원하는 page가 memory에 있고 accesss가능하다는 점을 제외하고는 정확히 동일한 장소와 상태에서 process를 다시 시작해야 한다. (context switching을 잘 관리해야 악영향이 없다)
'운영체제 > 이론' 카테고리의 다른 글
(61) Copy-on-write (0) | 2020.10.08 |
---|---|
(60) Demand Paging (0) | 2020.10.08 |
(58) Demand paging (0) | 2020.10.07 |
(57) Virtual Memory (0) | 2020.10.07 |
(56) Swapping (0) | 2020.10.06 |