728x90
반응형
출처 : https://www.youtube.com/watch?v=ByQmerWj1bg&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=36
이번 시간에는 Variable allocation의 교체 기법들을 알아본다.
Variable allocation : 프로세스에게 할당해주는 메모리 공간의 크기가 가변적
Working Set (WS) algorithm
- 1968년 Denning이 제안
- Working set
- Process가 특정 시점에 자주 참조되는 page들의 집합 -> locality
- 최근 일정시간 동안(Δ) 참조된 page들의 집합
- 시간에 따라 변함
- W(t, Δ)
- The working set of a process at time t
- Time interval [t- Δ , t] 동안 참조된 page들의 집합
- Δ : window size, system parameter
우리가 현재 시간이 t일 때, 특정 시점 t- Δ 부터 현재까지 참조한 page들을 묶어서 집합을 만들고, 해당 집합의 page들은 메모리에 유지한다.
우리가 바라봐야하는 영역, t- Δ부터 t까지의 시간을 window라고 한다. window는 시간의 흐름에 따라 이동을 하게 되고, 그에따라 안에 있는 page들의 수도 변하게 된다.
window 안에는 최소 1개, 최대 Δ+1개(Δ 의 시간동안 참조하기 때문)의 page들이 참조될 수 있다.
- Working set memory management
- Locality에 기반을 둠
- Working set을 메모리에 항상 유지
- Page fault rate (thrashing) 감소. locality에 기반을 두었기 때문
- 시스템 성능 향상
- Window size(Δ)는 고정
- Memory allocation은 가변
- Memory Allocation이 고정 and Δ 가 가변이라면? = LRU 알고리즘 (MA : page frame 갯수는 고정, window 사이즈는 변함)
- Δ 값이 성능을 결정 짓는 중요한 요소
- Memory allocation은 가변
- Window size( Δ )와 Working Set size(memory allocation)는 어떤 관계를 가지는가
- window size가 증가하면 WS size도 증가한다. 더 큰 범위를 본다면 더 많은 page를 메모리에 유지하기 때문
- 초반에는 window size를 조금만 늘려도 ws size가 급격히 증가하지만, 점점 증가하는 속도가 줄어들다가 어느 수준 이상이 되면 WS size가 커지지 않는 시점이 온다. 그래서 최대로 program size 만큼 유지가 된다.
- 이런 흐름이 나타나는 이유는 locality 때문이다.
- Example : working set transition
- loop는 총 3개가 존재한다.
- loop-1 동안의 ws은 {p0, p1} 2개를 보고, loop-2 동안은 {p2, p3, p4} 3개, loop-3 동안은 {p6, p7} 2개를 본다.
- 우리가 어떤 loop가 있다면, loop를 도는 동안 ws size는 얼마가 될 것인가. -> 증가한다.
- Working set transition 을 그래프로 나타내면 위 그림과 같다.
- WS-1, WS-2, ... 들을 loop-1, loop-2, ... 라고 했을 때, Working set이 loop에 필요한 만큼만 유지가 된다.
- loop에서 loop로 전환될 때, 일시적으로 할당된 page frame의 수(working set size)가 증가한다. 왜냐하면 넘어가는 동안 이전과 다음의 working set들이 둘 다 필요하기 때문
- 이 현상을 working set transition이라 한다.
- Working set 알고리즘 예시
- window size Δ = 3, page의 수는 5개 (0, 1, 2, 3, 4)
- 초기에 메모리에 담겨있는 page는 0, 3, 4 번 page
- reference string ω = 2 2 3 1 2 4 2 4 0 3
- Time 1 : [t- Δ , t] = [1-3, 1] = [-2, 1]에 봤던 page들을 memory에 유지시킨다. 그래서 working set은 0, 2, 3, 4번 page들 4개가 들어있게 된다.
- Time 2 : [-1, 2]에 봤던 page들을 memory에 유지시킨다. 그래서 working set은 0, 2, 3번 page들 3개가 유지되고, page 4번은 메모리 밖으로 나오게 된다.
- Time 3 : [0, 3]에 봤던 page들을 memory에 유지시킨다. 그래서 working set은 0, 2, 3번 page들 3개가 유지된다.
- Time 4 : [1, 4]에 봤던 page들을 memory에 유지시킨다. 1번은 memory에 있지 않으므로 page fault가 발생하고 memory에 새롭게 적재된다. 그리고 page 0번은 밖으로 나오게 된다. 그래서 working set은 1, 2, 3번 page들 3개가 유지된다.
- Time 5 : [2, 5]에 봤던 page들을 memory에 유지시킨다. 그래서 working set은 1, 2, 3번 page들 3개가 유지된다.
- Time 6 : [3, 6]에 봤던 page들을 memory에 유지시킨다. 4번 page는 memory에 적재되어있지 않으므로 page fault가 발생하고 memory에 새롭게 적재된다. 그래서 working set은 1, 2, 3, 4 번 page들 4개가 유지된다.
- Time 7 : [4, 7]에 봤던 page들을 memory에 유지시킨다. 3번 page는 memory 밖으로 나오게 된다. 그래서 working set은 1, 2, 4 번 page 3개가 유지된다.
- Time 8 : [5, 8]에 봤던 page들을 memory에 유지시킨다. 1번 page는 memory 밖으로 나오게 된다. 그래서 working set은 2, 4 번 page 2개가 유지된다.
- Time 9 : [6, 9]에 봤던 page들을 memory에 유지시킨다. 0번 page는 memory에 적재되어있지 않으므로 page fault가 발생하고 memory에 새롭게 적재된다. 그래서 working set은 0, 2, 4 번 page 3개가 유지된다.
- Time 10 : [7, 10]에 봤던 page들을 memory에 유지시킨다. 3번 page는 memory에 적재되어있지 않으므로 page fault가 발생하고 memory에 새롭게 적재된다. 그래서 working set은 0, 2, 3, 4 번 page 4개가 유지된다.
- 즉, working set size란 메모리에 할당된 memory frame의 수와 같다.
- Working set algorithm의 성능 평가
- Page fault 수 외 다른 지표도 함께 봐야 함
- Fixed allocation에서는 주어진 메모리 공간이 동일한 상태에서 page fault가 얼마나 적게 나왔는가를 판단기준으로 삼을 수 있다(다른 조건들이 동일하기 때문).
- 하지만 variable allocation에서는 같은 알고리즘 일지라도할당하는 page 수에 따라 page fault가 다르다.
- Example
- Time interval [1, 10]
- number of page fault = 5
- 평균 할당 page frame 수 = 3.2
- 따라서 page fault 수 뿐만 아니라 평균적으로 사용된 page frame의 수도 함께 봐야한다.
- page fault를 처리하는 비용과 page를 memory에 유지하는 비용같은 정보들이 함께 주어져야 어떤 알고리즘이 더 좋은지를 판단할 수 있다.
- 평가
- 평균 3.2 개의 page frame을 할당 받은 상태에서 5번의 page fault가 발생
- Time interval [1, 10]
- 특성
- 적재 되는 page가 없더라도, 메모리를 반납하는 page가 있을 수 있음
- 새로 적재되는 page가 있더라도, 교체되는 page가 없을 수 있음
- 단점
- Working set management overhead : 우리가 window를 이동시키면서 이전의 page들을 지속적으로 관찰하고 있어야 함
- Residence set (상주 집합)을 page fault가 없더라도, 지속적으로 관리해야 함
- 할당된 window size와 page fault의 관계
- window size가 크다는 뜻은 working set이 크다는 의미이다.
- window size가 클수록, lifetime 또한 증가하게 된다. 하지만 그만큼 page 유지 비용이 증가하게 된다.
- window size가 클수록, page fault rate는 감소하게 된다.
- lifetime과 page fault rate는 상반되는 관계이다.
- 따라서 우리는 window size를 적당한 크기로 만들어야 한다.
Page Fault Frequency (PFF) algorithm
working set 알고리즘의 overhead 문제를 해결하기 위해 page fault frequency 알고리즘이 등장한다.
- Page fault가 얼마나 자주 일어나는 지를 보고 메모리 할당을 변경하는 전략
- Residence set size를 page fault rate에 따라 결정
- Low page fault rate (long inter-fault time)
- Process에게 할당된 PF 수를 감소
- High page fault rate (short inter-fault time)
- Process에게 할당된 PF 수를 증가
- 즉, page fault가 자주 일어나면 memory를 더주고, 안일어나면 memory를 뺏자
- Low page fault rate (long inter-fault time)
- Resident set 갱신 및 메모리 할당
- Page fault가 발생시에만 수행
- Low overhead
- Criteria for page fault rate
- IFT(Inter-Fault Time) > 𝜏 : Low page fault rate
- IFT < 𝜏 : High page fault rate
- 𝜏 : threshold value. page fault가 자주 일어나는가 아닌가에 대한 기준
- System parameter
- Algorithm
- Page fault 발생 시, IFT 계산
- IFT = tc - tc-1
- tc-1 : time of previous page fault. 이전에 page fault가 발생한 시간
- tc : time of current page fault. 현재 page fault가 발생한 시간
- IFT = tc - tc-1
- IFT > 𝜏 (Low page fault rate) : page fault가 자주 일어나지 않음
- Residence bit <- (tc-1, tc] 동안 참조된 page들 만 유지
- 나머지 page들은 메모리에서 내림
- 메모리 할당 (number of page frames) 유지 or 감소
- IFT ≤ 𝜏 (High page fault rate) : page fault가 자주 일어남
- 기존 page들 유지
- + 현재 참조된 page를 추가 적재
- 메모리 할당 (number of page frames) 증가
- Page fault 발생 시, IFT 계산
- Example
- 𝜏 = 2, 페이지의 수 = 5개 (0, 1, 2, 3, 4)
- 최초에 메모리에 적재된 page는 0, 3, 4번 page
- reference string ω = 2 2 3 1 2 4 2 4 0 3
- Time 1 : page 2번을 적재해야되는데 memory에 적재되어있지 않아 page fault가 발생한다. 이전 시간 중 가장 최근에 page fault가 발생한 것은 time 0일 때 이므로, IFT = 1이된다. IFT ≤ 𝜏 = High page fault rate이므로 원래 가지고 있던 page frame + 현재 새로운 page를 추가한다. memory에는 0, 2, 3, 4 번 page 4개가 적재되게 된다.
- Time 2~3 : page 2, 3번은 이미 메모리에 적재되어있으므로 page fault가 발생하지 않는다.
- Time 4 : page 1번을 적재해야하는데 memory에 적재되어있지 않아 page fault가 발생한다. 가장 최근에 page fault가 발생한 것은 time 1일 때 이므로, IFT = 4 - 1 = 3이 된다. IFT > 𝜏 = Low page fault rate이므로 메모리를 줄인다. 따라서 (1, 4]까지의 page만 적재하게 되어 메모리에는 1, 2, 3번 page 3개만 적재되게 된다.
- Time 5 : page 2번은 이미 메모리에 적재되어있으므로 page fault가 발생하지 않는다.
- Time 6 : page 4번을 적재해야하는데 memory에 적재되어있지 않아 page fault가 발생한다. 가장 최근에 page fault가 발생한 것은 time 4일 때 이므로, IFT = 6 - 4 = 2가 된다. IFT ≤ 𝜏 = High page fault rate이므로 메모리에 현재 page를 추가한다. memory에는 1, 2, 3, 4 번 page 4개가 적재된다.
- Time 7 ~ 8 : page 2, 4 번은 이미 메모리에 적재되어있으므로 page fault가 발생하지 않는다.
- Time 9 : page 0번을 적재해야하는데 memory에 적재되어있지 않아 page fault가 발생한다. 가장 최근에 page fault가 발생한 것은 time 6일 때 이므로, IFT = 9 - 6 = 3가 된다. IFT > 𝜏 = Low page fault rate이므로 메모리를 줄인다. (6, 9]까지의 page만 적재하게 되어 memory에는 0, 2, 4 번 page 3개가 적재된다.
- Time 10 : page 3번을 적재해야하는데 memory에 적재되어있지 않아 page fault가 발생한다. 가장 최근에 page fault가 발생한 것은 time 9일 때 이므로, IFT = 10 - 9 = 1가 된다. IFT ≤ 𝜏 = High page fault rate이므로 메모리에 현재 page를 추가한다. memory에는 0, 2, 3, 4 번 page 4개가 적재된다.
- PFF 알고리즘의 성능 평가
- Page fault 수 외 다른 지표도 함께 봐야 함
- Example
- Time interval [1, 10]
- page fault의 수 = 5
- 평균 할당 page frame 수 = 3.7
- 평가
- 평균 3.7개의 page frame을 할당 받은 상태에서 5번의 page fault 발생
- 이전의 working set 알고리즘은 평균 3.2개의 page frame을 할당받은 상태에서 5번의 page fault가 발생했으므로 이번에는 working set 알고리즘이 좀 더 잘 동작했음
- Time interval [1, 10]
- 특징
- 메모리 상태 변화가 page fault 발생 시에만 변함
- working set 알고리즘보다 Low overhead
- 메모리 상태 변화가 page fault 발생 시에만 변함
Variable MIN (VMIN) algorithm
- MIN 알고리즘처럼 optimal solution을 찾는 알고리즘
- Variable allocation 기반 교체 기법 중 optimal algorithm
- 평균 메모리 할당량과 page fault 발생 횟수 모두 고려했을 때의 optimal
- 실현 불가능한 기법 (Unrealizable)
- Page reference string을 미리 알고 있어야 함
- 하지만 알고리즘 평가의 기준이 될 수 있음
- 기법
- [t, t + Δ] 을 고려해서 교체할 page 선택
- Algorithm
- Page r이 t 시간에 참조되면, page r이 (t, t + Δ] 사이에 다시 참조되는지 확인
- 참조 된다면, page r을 유지
- 참조 안 된다면, page r을 memory에서 내림
- VMIN 알고리즘 예시
- Δ = 4, page의 수 = 5개 (0, 1, 2, 3, 4)
- reference string ω = 2 2 3 1 2 4 2 4 0 3
- Time 0 : page 3번이 참조된다. 현재 + 1부터 0 + 4 = Time 4까지 page 3번이 참조되는 것을 확인한다. Time 3에서 page 3번이 참조되므로 메모리에 적재한다.
- Time 1 : page 2번이 참조된다. 현재 + 1부터 1 + 4 = Time 5까지 page 2번이 참조되는 것을 확인한다. Time 2에서 page 2번이 참조되므로 메모리에 적재한다.
- Time 2 : Time (2, 6]까지 확인했을 때, Time 5에서 page 2를 참조하므로 메모리에 그대로 유지된다.
- Time 3 : Time (3, 7]까지 확인했을 때, page 3번은 참조되지 않으므로 메모리에서 나온다.
- Time 4 : Time (4, 8]까지 확인했을 때, page 1번은 참조되지 않으므로 메모리에 적재되자마자 나온다.
- Time 5 : Time (5, 9]까지 확인했을 때, Time 7에서 page 2를 참조하므로 메모리에 그대로 유지된다.
- Time 6 : Time (6, 10]까지 확인했을 때, Time 8에서 page 4를 참조하므로 메모리에 적재되게 된다.
- Time 7 : Time (7, 10]까지 확인했을 때, page 2번은 참조되지 않으므로 메모리에서 나온다.
- Time 8 : Time (8, 10]까지 확인했을 때, page 4번은 참조되지 않으므로 메모리에서 나온다.
- Time 9 : Time (9, 10]까지 확인했을 때, page 0번은 참조되지 않으므로 메모리에 적재되자마자 나온다.
- Time 10 : 맨마지막이므로 나오게 된다.
- 평균적으로 유지하는 메모리의 수가 적어진 모습을 확인할 수 있다.
- VMIN 알고리즘 성능 평가
- Page fault 수 외 다른 지표도 함께 봐야 함
- Example
- Time interval [1, 10]
- page fault의 수 = 5
- 평균 할당 page frame 수 = 1.6
- 평가
- 평균 1.6 개의 page frame을 할당받은 상태에서 5번의 page fault 발생
- 이전 알고리즘들보다 동일한 page fault 수 + 더 적은 평균 할당 page frame 수를 가지므로 가장 우수한 성능을 보이는 것을 확인
- Time interval [1, 10]
- 하지만 Window size( Δ )에 따라 성능이 달라질 수 있음. 그렇다면 Window size( Δ )를 얼마를 줘야 optimal이 될까?
- 최적 성능을 위한 Window size(Δ) 값은?
- Δ = R / U
- U : 한 번의 참조 시간 동안 page를 메모리에 유지하는 비용
- R : page fault 발생 시 처리 비용
- R > Δ * U, (Δ가 작으면)
- page fault 처리 비용 > page 유지 비용
- Window size(Δ)를 키우는 것이 유리
- R < Δ * U, (Δ가 크면)
- page fault 처리 비용 < page 유지 비용
- Window size(Δ)를 줄이는 것이 유리
- Δ = R / U
728x90
반응형
'Study > 운영체제' 카테고리의 다른 글
운영체제 11. 파일 시스템 (1) - Disk system (0) | 2023.12.08 |
---|---|
운영체제 10. 가상 메모리 관리 (6) - Other Considerations (0) | 2023.12.08 |
운영체제 10. 가상 메모리 관리 (4) - Replacement Strategies for Fixed Allocation 2 (1) | 2023.12.07 |
운영체제 10. 가상 메모리 관리 (3) - Replacement Strategies for Fixed Allocation 1 (1) | 2023.12.06 |
운영체제 10. 가상 메모리 관리 (2) - SW components (1) | 2023.12.05 |