티스토리 뷰
### Demand Paging ###
: page를 요청할 때만 memory에 적재한다.
< Block overlap >
: block(source or destination)이 page boundary를 넘으면 부분적으로 이동한 후 page fault가 발생할 수 있다.
: source and destination blocks이 겹치는 경우 sources block이 수정된 것일 수 있으며
이 경우 os가 단순히 명령을 다시 시작할 수 없다.
< Solution >
: microcode는 두 block의 양쪽 끝을 계산하여 access를 시도한다. page fault가 발생하기 전에
page fault를 미리 발생시켜서(data가 삭제된 이후에) 이후 page fault를 방지한다.
: Temporary register를 사용하여 overwritten location 값을 보유할 수 있다.
page fault이 있는 경우 temporary register에 저장된 data를 복구시켜 process를 재시작 할 수 있도록 도와주는 것
< Free frame list >
: page fault가 발생하면 os는 원하는 page를 디스크에서 main memory로 가져와야 한다.
: page fault를 해결하기 위해 대부분의 os는 이러한 요청을 충족시키기 위해 사용가능한
pool of free frame인 free-frame list를 유지 관리 한다.
< Zero-fill-on-demand >
: frame에 page를 적재하기 전에 frame안의 data를 다 지우겠다.
: 할당되기 전에 "zeroed-out"되어 이전 내용이 지워진다.
: 보완관련 문제로 인해 제작
< Performance of demand paging >
: page fault이 없는 한 effective access time은 memory access time과 같다.
: page fault가 발생하면 os는 먼저 disk에서 관련 page를 읽은 다음 원하는 단어에 access해야 한다.
=> 시간이 많이 걸린다.
< *Effective access time with page faults >
: p ( 0 <= p <= 1) -> page fault가 발생할 확률
( (1-p)는 page fault가 발생하지 않을 확률)
: ma -> memory access time
=> effective access time = (1-p) x ma + p x page switch time
*< Procedures for handling page faults >
1. Trap to the os
(os가 interrupt를 건다)
2. register와 process state를 save한다.
(process control block으로 저장한다)
3. page reference가 올바른지 확인하고 disk에서 page location을 결정한다.
(page fault가 왜 발생했는 지 check)
4. disk에서 free frame으로 읽기를 실행한다.
(physical memory로 할당)
5. 기다리는 동안(i/o작업) cpu core를 다른 process에 할당한다.
(context switching 발생)
6. disk i/o device controller에서 interrupt를 건다.
7. 다른 process의 register와 process 상태를 저장한다.
8. page table 및 기타 table을 수정하여 원하는 page가 memory에 있음을 표시해라
9. register, process 상태 및 새 page table을 복원 한 다음 중단 된 명령을 다시 시작해라
< page-fault service time의 세가지 주요 작업 구성요소 >
- service the page-fault interrupt
- read in the page
(page를 disk로 부터 읽어와 frame에 적재: i/o, 시간이 많이 걸린다.)
- restart the process
+ example
: Average page switch time = 8ms = 8,000,000ns
: Memory access time = 200ns
=> effective access time = (1-p) x ma + p x page switch time = 200 + p x 7,999,800
수행 능력이 10% 하락한 경우 ( 220 = access time(200) x 10% + access time(200))
=> 200 + p x 7,999,8000 < 220
=> p < 0.0000025
'운영체제 > 이론' 카테고리의 다른 글
(62) Page Replacement (0) | 2020.10.08 |
---|---|
(61) Copy-on-write (0) | 2020.10.08 |
(59) Page fault (0) | 2020.10.07 |
(58) Demand paging (0) | 2020.10.07 |
(57) Virtual Memory (0) | 2020.10.07 |