[Operating System] Thrasing
Degree of Multiprogramming은 메모리에 들어온 프로세스의 수를 의미한다. (프로세스의 일부 포함)
당연히 가상 메모리 방식을 사용하면 Degree of Multiprogramming이 커진다.
Demand Paging 방식을 사용하면 메모리에 프로세스가 더 많이 들어오면서 CPU의 활용도가 늘어난다.

Degree of Multiprogramming이 어느정도 증가하면 CPU 활용도가 오히려 더 낮아진다.
CPU 활용도가 늘어나지 않으니 운영체제는 CPU가 할 일이 없다고 판단해 New 상태에 있는 프로세스를 메모리에 넣어준다.
메모리의 용량은 한정되어있는데, 프로세스의 수가 계속해서 증가하면 한 프로세스가 차지하는 Page 수가 줄어들게 된다.
프로그램을 제대로 실행하려면 프로그램의 Locality에 해당하는 부분이 메모리에 모두 올라와 있어야 하는데, 메모리 공간이 부족해 모두 올라오지 못하는 경우가 발생한다.

겹치는 부분을 실행할 때 마다 Page Fault가 발생해 성능이 매우 떨어진다.
Degree of Multiprogramming이 너무 커서 발생한 문제니까 해당 값을 줄여서 해결해보자.
우측 그림에서는 프로세스 해당 값이 3인데, 2로 줄이면 Page Fault 없이 효과적으로 프로세스를 실행할 수 있다.
프로세스를 보조기억장치로 잠시 보내 공간을 확보하자.
Resident Set은 프로세스에 올라온 메모리들에 대해, 그 메모리들을 구성하는 Page의 집합을 의미한다.
Resident Set의 크기를 정하는 방식으로는 Fixed-Allocation과 Variable-Allocation 방식이 있다.
Fixed-Allocation
Page Fault가 발생해 Page Replacement 수행 시 제거될 페이지는 이미 자신이 가지고 있는 페이지 중 하나를 선택하는 Local Scope를 가진다.
Variable-Allocation
할당받는 Frame의 수가 변할 수 있다. 이 때 Local Scope, Global Scope 모두 가질 수 있다.
처음에는 Local Scope로 수행하다가도, 운영체제는 특정 프로세스가 Page Fault를 많이 발생시키면 해당 프로세스에게 메모리 Frame을 좀 더 할당해준다.
Global Scope는 Page Fault가 발생했을 때 해당 프로세스가 가진 Page 뿐만 아니라 메모리에 올라온 모든 프로세스들의 Page를 교체 후보에 추가한다.
프로세스에게 배정되는 Memory Frame의 수가 상황에 따라 변한다.
다른 프로세스의 Page를 뺏어서 사용할 수 있기에 적당한 수를 유지해야 한다.

운영체제는 Page-Fault Frequency Scheme을 사용한다.
Page Fault를 너무 많이 당하면 Memory Frame 수를 늘려주고, Page Fault를 너무 적게 당하면 Memory Frame 수를 줄인다.
Upper Bound와 Lower Bound를 둬서 적당한 수를 맞춰준다.
모든 프로세스가 상한선과 하한선 안쪽에 위치하도록 해야 프로세스를 효과적으로 관리할 수 있다.
int arr[][] = new int[1024][1024];
이 이차원 배열을 초기화한다고 생각해보자.
이중 for 문을 돌텐데.. 행 기준 순회 / 열 기준 순회 -> 각 경우마다 Page Fault를 당할 수도, 당하지 않을 수도 있다.
열 기준 순회 시 Page Fault를 1024배 덜 걸리니, 열 기준 순회를 사용하는 편이 훨씬 합리적이다.
사실상 메모리 관리는 운영체제가 알아서 해주니 관련 지식을 공부하지 않아도 된다고 생각할 수 있지만
위의 이차원배열 초기화 예시처럼 메모리 관리를 어떻게 하는지 알고 있어야 더 효과적인 코드를 작성할 수 있는 경우가 많다.
'Computer Science > Operating System' 카테고리의 다른 글
| [Operating System] Process Scheduling (0) | 2025.06.09 |
|---|---|
| [Operating System] Page Replacement (0) | 2025.06.05 |
| [Operating System] Multi-Level Page Table (1) | 2025.06.04 |
| [Operating System] Demand Paging (0) | 2025.06.03 |
| [Operating System] Paging / Segmentation (0) | 2025.06.03 |
댓글
이 글 공유하기
다른 글
-
[Operating System] Process Scheduling
[Operating System] Process Scheduling
2025.06.09 -
[Operating System] Page Replacement
[Operating System] Page Replacement
2025.06.05 -
[Operating System] Multi-Level Page Table
[Operating System] Multi-Level Page Table
2025.06.04 -
[Operating System] Demand Paging
[Operating System] Demand Paging
2025.06.03