일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- tcp
- java
- AWS
- docker
- JavaScript
- Python
- CSV
- kubeadm
- Network
- Spring
- Kafka
- EC2
- ip
- Vision
- CVAT
- log
- OS
- airflow
- helm
- grafana
- Packet
- zookeeper
- kubernetes
- kubectl
- Operating System
- PostgreSQL
- aws s3
- MAC address
- jvm
- Trino
- Today
- Total
JUST WRITE
Allocation of Frames 본문
이 글은 KOCW 강좌 중 경성대학교 양희재 교수님의 '운영체제' 강의를 정리한 글입니다.
Allocation of Frames
Thrashing
일반적으로 Memory에 Load 된 Process의 수가 많을수록 CPU 이용률이 오를 거라 예상된다.
하지만 일정 범위를 넘어서면 CPU 이용률이 감소한다.
아래 그래프에서 일정 Process 수에서 CPU 이용률이 떨어진는데 이와 같은 현상을 Thrashing이라 한다.
Thrashing이 발생하는 이유는 빈번하게 Page in/out이 일어나기 때문이다.
Process의 수가 많아질 수록 Memory에 빈 공간이 줄어든다.
Memory의 비어 있는 Frame이 줄어들면서 Backing Store에서 Page in/out 하는 경우가 많다.
Thrashingd을 해결하는 방법은 아래와 같다.
- Global Replacement 보다는 local Replacement
- Process당 충분한/적절한 수의 Frame 할당
Allocation of Frames
Process마다 적절한 Frame 수 할당하는 방법은 크게 2가지가 있다.
Static Allocation
정적 할당은 Process가 실행될때 고정된 Frame 수로 할당하는 것이다.
아래와 같이 2가지 정적 할당 방식이 있다.
- Equal Allocation(균등 할당) -> 모든 Process에 동일한 Frame 수 할당
- Proportional Allocation(비례 할당) -> Process의 크기에 따라 Frame 수 할당
Dynamic Allocation
동적 할당은 Process가 실행 시간동안 Frame 수를 동적으로 할당하는 것이다.
Working Set Model
Process는 실행 중 특정 시간에 일정 범위의 Page를 주로 참조하는 Locality 성질을 가진다.
Locality 성질을 기반으로 특정 시간에 따라 사용하는 Page 개수만큼 Frame 할당하면 된다.
하지만 이 방법은 Process를 미리 수행하기 전에는 알 수 없어 비현실적이다.
이를 해결하기 위해 Working set 방식이다.
working set은 Process 수행 중에 과거에 사용한 Page를 보고 앞으로의 Frame을 할당하는 방식이다.
Working set은 현재 시점에서 일정 시간 이전동안 사용되었던 Page의 집합이다.
위에서 Δ는 현재 시점부터 과거 시점까지의 지난 시간이다.
이것을 Working set window라 하며, 운영체제에서 결정한다.
Page-Fault Frequency
Page Fault 일어날 비율은 Process에 할당된 Frame 수에 반비례한다.
할당된 Frame 수가 적을 수록 Page Fault는 자주 일어난다.
Frame 수에 따른 Page Fault 비율을 위 그래프처럼 나타낼 수 있다.
Frame 수에 따른 Page Fault 비율을 통해 Frame 수를 할당할 수 있다.
위 그래프처럼 상한선과 하한선을 설정한다.
상한선을 초과하면 Process에 Frame을 더 할당한다.
하한선 이하로 떨어지면 Process에서 Frame을 회수한다.
Page size
Page 크기는 4KB에서 4MB까지 늘어났다.
현재도 Memory의 크기가 증가하면서 커지고 있다.
Page 크기에 따라 영향을 미치는 요인은 다음과 같다.
- Internal Fragmentation
- Page 크기가 작을 수록 내부 단편화를 줄일 수 있다.
- Page in/out 시간
- Page in/out 시간은 Backing Store에서의 seek time에서 많이 걸린다.
- Page 크기가 클수록 큰 Page를 읽어서 seek time 횟수가 줄어든다.
- Page Table 크기
- Page 크기가 클수록 Page 수가 줄어들고 Page Table 엔트리 수도 줄어든다.
- Memory Resolution
- Memory에 필요한 Data가 있을 확률이다.
- Page 크기가 작을 수록 Memory Resolution이 높다.
- Page Fault 발생 확률
- Page 크기가 클 수록 Page Fault 확률이 낮다.
- Locality 성질과 관련, Process에서 필요한 부분이 일정 범위 이내인 경우가 많다.
추가적으로 TLB는 CPU 내장 칩 형태로 만들어져 있다.
'OS' 카테고리의 다른 글
Disk Scheduling (0) | 2022.02.01 |
---|---|
File Allocation (0) | 2022.01.28 |
Page Replacement (0) | 2022.01.26 |
Virtual Memory (0) | 2022.01.25 |
Segmentation (0) | 2022.01.21 |