180 likes | 390 Views
제 12 강 : Paging 과 Segmentation Policy. Paging/Segmentation Policy. 페이지 반입 (fetch) 정책 : 언제 (WHEN) 블록을 메모리로 가져올 것인가를 결정 요구 페이징 , 예상 페이징 (anticipatory or prefetch paging) 등 . 페이지 배치 (placement) 정책 - 블록을 메모리 어느 장소로 (WHERE) 가져올 것인가를 결정 . - 페이징 시스템에서는 문제가 되지 않는다 .
E N D
제12강 : Paging과 Segmentation Policy Paging/SegmentationPolicy
페이지 반입(fetch) 정책 : • 언제 (WHEN)블록을 메모리로 가져올 것인가를 결정 • 요구 페이징, 예상 페이징(anticipatory or prefetch paging) 등. 페이지 배치(placement) 정책 - 블록을 메모리 어느 장소로 (WHERE)가져올 것인가를 결정. - 페이징 시스템에서는 문제가 되지 않는다. - 세그먼트 시스템의 경우는 best-fit, first-fit 등의 기법 교체(replacement) 정책 - 새 블럭을 load 해야 하는데 메모리에 빈 공간이 없으면 - 기존에 올라와 있던 블록들 중 한 (WHICH)블록을 쫓아내고 - 새 블록을 그곳으로 load해야 한다. - 이때 ‘어느 블록을 희생시킬 것인지’를 결정하는 정책
Demand Paging • 프로세스가 실제로 요구해야 fetch • page fault • page fault rate • replacement algorithm R rwx page frame sector addr mapping table entry
Belady 최적 알고리즘 Reference string • 2 3 4 1 2 5 1 2 3 4 5 1 1 1 1 1 1 1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 4 4 34 4 4 5 5 5 5 5 5 M(t=12) M(t=1) 밑줄 –페이지 부재 (총 7회) 향후 가장 오랫동안 사용되지 않을 페이지 교체
FIFO 알고리즘 Reference string • 2 3 4 1 2 5 1 2 3 4 5 1 1 1 4 4 4 5 5 5 5 5 5 2 2 2 1 1 1 1 1 3 3 3 3 3 3 2 2 2 2 2 4 4 M(t=12) M(t=1) 밑줄 –페이지 부재 (총 9회) FIFO Anomaly more memory more fault
LRU 알고리즘 Reference string • 2 3 4 1 2 5 1 2 3 4 5 1 1 1 4 4 4 5 5 5 3 3 3 2 2 2 1 1 1 1 1 1 4 4 3 3 3 2 2 2 2 2 2 5 M(t=12) M(t=1) 밑줄 –페이지 부재 (총 10회) 과거 가장 오랫동안 사용되지 않은 페이지 교체
LFU 알고리즘 Reference string • 2 3 4 1 2 5 1 2 3 4 5 1 1 1 4 4 4 5 5 5 345 2 2 2 1 1 1 1 1 1 1 1 3 3 3 2 2 2 2 2 2 2 M(t=12) M(t=1) 밑줄 –페이지 부재 (총 10회) 참조된 횟수가 가장 적은 페이지 교체
NUR 알고리즘 dirty - 디스크에서 온 후 변형된 페이지 dirty page를 교체? 먼저 disk에 write한 후 교체 우선순위 참조 안되고, 변형 안된 것 교체 - - - - 변형된 것은 가장 나중에 고려
Thrashing • 너무 빈번히 페이지 부재가 일어나는 현상 • disk utilization ~ 98% • CPU utilization ~ 2% • 원인 • “CPU is idle?” • CPU에 일감을 – new 프로그램 추가 load • multiprogramming degree 더 높아짐 • 프로세스당 공간 더 비좁아짐 (< loop 크기보다) • 더 높아지는 fault rate, • 더 낮아지는 CPU Utilization for loop (108 회) { A[k]=B[k]+C[k] }
다중프로그래밍 정도를 낮출것 너무 프로그램이 적음 CPU Utilization 다중프로그래밍 정도
다중프로그래밍 정도를 낮출것 너무 프로그램이 많음 Thrashing 너무 프로그램이 적음 CPU Utilization 다중프로그래밍 정도
Locality • 일정 시간에는 일정 부분만을 집중적으로 참조 • 시간 구역성(Temporal locality) • 2시에 참조한 페이지는 2시 1분에도 사용할 가능성 • loop, subroutine, stack 등 • 공간 구역성(Spatial locality) • 100번지를 참조 중이라면 99번지, 101 번지도 • array, 순차 코드 실행 등
Working-Set Model 123123123248024802480248033666666336666666336666633666 t- • WS(ti ) = { pages referenced in [ ti, , ti - ] } • 만일 페이지 P 가 ti 에 WS(ti )에 속하였으면 keep in memory 안 속하였으면 out of memory • 이 원칙에 따라 모든 것 결정 • fetch – window에 페이지가 들어올 떄 • replace – working set에서 페이지가 탈락할 때 • allocation size - working set size (시시로 달라짐) • WS(ti ) 가 모두 보장되어야만 run, 아니면 suspend. • “시간” 개념 • Process (virtual) time –이 프로세스가 run 할 동안만 운행 • Real time (wall-clock time) t WS(t) = {3, 6}
p q p q p q p q p q p q p q a b c d a b c d a b c d a b c d a b c d for loop (108 회) { a[k]=b[k]+c[k]+d[k] } for loop (108 회) { p[k] = q[k] }
fault rate에 따른 조정 프레임 수 늘리기 Page Fault Rate Working set Window ++ 페이지 프레임 할당 양
fault rate에 따른 조정 Page Fault Rate 프레임 수 줄이기 Working set Window -- 페이지 프레임 할당 양