슬라이드 1

Download Report

Transcript 슬라이드 1

제12강 : Paging과 Segmentation Policy
Paging/Segmentation
Policy
페이지 반입(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
1 2 3 4 1 2 5 1 2 3 4 5
M(t=12)
M(t=1)
1 1 1 1 1 1 1 1 1 3 3 3
2 2 2 2 2 2 2 2 2 4 4
3 4 4 4 5 5 5 5 5 5
밑줄 – 페이지 부재 (총 7회)
향후 가장 오랫동안 사용되지 않을 페이지 교체
FIFO 알고리즘
Reference string
1 2 3 4 1 2 5 1 2 3 4 5
M(t=12)
M(t=1)
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
밑줄 – 페이지 부재 (총 9회)
FIFO Anomaly
more memory  more fault
LRU 알고리즘
Reference string
1 2 3 4 1 2 5 1 2 3 4 5
M(t=12)
M(t=1)
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
밑줄 – 페이지 부재 (총 10회)
과거 가장 오랫동안 사용되지 않은 페이지 교체
LFU 알고리즘
Reference string
1 2 3 4 1 2 5 1 2 3 4 5
M(t=12)
M(t=1)
1 1 1 4 4 4 5 5 5 3 4 5
2 2 2 1 1 1 1 1 1 1 1
3 3 3 2 2 2 2 2 2 2
밑줄 – 페이지 부재 (총 10회)
참조된 횟수가 가장 적은 페이지 교체
NUR 알고리즘
dirty - 디스크에서 온 후 변형된 페이지
dirty page를 교체? 먼저 disk에 write한 후
교체 우선순위
참조 안되고, 변형 안된 것 교체
---변형된 것은 가장 나중에 고려
Thrashing
•
너무 빈번히 페이지 부재가 일어나는 현상
–
–
•
disk utilization ~ 98%
CPU utilization ~ 2%
원인
1.
2.
3.
4.
5.
6.
for loop (108 회)
{
A[k]=B[k]+C[k]
}
“CPU is idle?”
CPU에 일감을 – new 프로그램 추가 load
multiprogramming degree 더 높아짐
프로세스당 공간 더 비좁아짐 (< loop 크기보다)
더 높아지는 fault rate,
더 낮아지는 CPU Utilization
다중프로그래밍 정도를 낮출것
CPU Utilization
너무 프로그램이 적음
다중프로그래밍 정도
다중프로그래밍 정도를 낮출것
너무 프로그램이 많음
Thrashing
CPU Utilization
너무 프로그램이 적음
다중프로그래밍 정도
Locality
• 일정 시간에는 일정 부분만을 집중적으로 참조
• 시간 구역성(Temporal locality)
– 2시에 참조한 페이지는 2시 1분에도 사용할 가능성
– loop, subroutine, stack 등
• 공간 구역성(Spatial locality)
– 100번지를 참조 중이라면 99번지, 101 번지도
– array, 순차 코드 실행 등
Working Set
Working-Set Model
123123123248024802480248033666666336666666336666633666
t-

t
WS(t) = {3, 6}
• WS(ti ) = { pages referenced in [ ti, , ti -  ] }
• 만일 페이지 P 가 ti 에 WS(ti )에 속하였으면 keep in memory
안 속하였으면 out of memory
• 이 원칙에 따라 모든 것 결정
– fetch
– replace
– allocation size
– window에 페이지가 들어올 떄
– working set에서 페이지가 탈락할 때
- working set size (시시로 달라짐)
• WS(ti ) 가 모두 보장되어야만 run, 아니면 suspend.
• “시간” 개념
– Process (virtual) time – 이 프로세스가 run 할 동안만 운행
– Real time (wall-clock time)
pqpqpqpqpqpqpqabcdabcdabcdabcdabcd
for loop (108 회)
{
p[k] = q[k]
}
for loop (108 회)
{
a[k]=b[k]+c[k]+d[k]
}
Page Fault Rate
fault rate에 따른 조정
프레임 수 늘리기
Working set Window ++
페이지 프레임 할당 양
Page Fault Rate
fault rate에 따른 조정
프레임 수 줄이기
Working set Window --
페이지 프레임 할당 양