티스토리 뷰

운영체제/이론

(60) Demand Paging

geonwoopaeng@gmail.com 2020. 10. 8. 10:33

### 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
공지사항
최근에 올라온 글