1. 쓰레싱 Thrashing
1) CPU 이용률 VS 멀티프로그래밍 수준
멀티프로그래밍 수준은 메모리에 올라가있는 프로세스 수라고 생각하면 된다.
프로세스 수가 중가하면 CPU가 노는 시간이 줄어 CPU 이용률이 증가한다.
그러나 일정 수준을 넘어가면 CPU이용률이 감소하게된다. 이 현상을 쓰레싱 Thrashing 이라고한다.
즉, 프로세스의 처리 시간보다 페이지 교체 시간이 더 많아지는 현상을 말한다.
쓰레싱이 일어나는 원인은 빈번한 page in/out 때문이다. 프로세스가 늘어나면 context switching이 일어날 때 page in/out이 많아지고, I/O 시간 증가하기 때문이다.
2) 쓰레싱 극복
쓰레싱을 극복하기 위한 극복하는 방법은 여러가지가있다.
하나는, Global replacement 대신 local replacement를 사용하는 것이고,
다른 방법으로는, 프로세스당 적적한 수의 메모리(프레임)을 할당하는 것이다.
이외에도 부족한 자원 증설, 일부 프로세스 중단, 다중 프로그래밍 정도를 적절 수준으로 유지, 페이지 부재 빈도 조절 등이 있다.
2. 정적 프레임 할당과 동적 프레임 할당
여러가지 쓰레싱 극복 방법 중, 프로세스당 적절한 수준의 메모리를 할당하는 방법에서
적적한 수준의 메모리가 어느 정도이냐 하는 문제가 생긴다.
프레임 할당은 정적 프레임 할당과 동적 프레임 할당 방법이 있다.
1) 정적 프레임 할당
- 동일 할당 Equal Allocation : 모든 프로세스에 동일한 프로세스를 할당한다.
-> 프로세스마다 필요한 메모리 크기가 다르므로 이 방법은 오히려 공평하지 않다. - 비례 할당 Propotional Allocation : 프로그램 크기에 따라 비례하여 프레임을 할당한다.
현실에서 정적 프레임 방법을 사용하기에는 어렵다. 그 이유는 프로그램에서 당장 안쓰는 기능도 많기 떄문이다.
2) 동적 프레임 할당
그래서 동적으로 프레임 할당하는 방법이 있는데 대표적으로 Working Set Model과 Page Fault Frequency (PFF) 가 있다.
(1) Working Set Model
Working Set 이란? 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다. 프로그램의 Locality 특징을 이용한다.
Locality란 실행중인 프로세스가 메인 메모리를 참조할 때는 일부 페이지만 집중적으로 참조하는 설질이 있다는 이론인데
프레임 할당 시 Locality를 포함할 수 있을 정도만 할당하면 되는데, 그건 프로세스를 실행해봐야 알 수 있기 때문에 현실적으로 불가능하다.
그래서 working set window 만큼의 과거에 참조했던 페이지(얼마인지는 OS마다 다르다) 를 보고 미래를 예측해서 할당하면된다. 이 방법을 Working Set Model 이라고한다.
즉, Working Set Model은
자주 참조되는 워킹 셋을 메인 메모리에 상주시킴으로써 페이지 부재 및 페이지 교체 현상을 줄이는 방법이다.
시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간에 따라 바뀌게 된다.
(2) 페이지 부재 빈도 방식 Page Fault Frequency (PFF)
페이지 부재는 프로세스 시 참조할 페이지가 주기억장치에 없는 현상을 말한다.
Page Fault Frequency는 페이지 부재가 일어나는 횟수를 말한다.
페이지 부재 빈도 방식 (PFF)은 페이지 부재에 따라 메인 메모리에 있는 페이지 프레임 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식이다.
Page fault 발생 비율의 상/하한선을 파악하여,
page fault의 상한선을 초과하는 프로세스에는 더 많은 프레임을 할당하고, 하한선 이하의 page fault를 내는 프로세스에는 프레임을 회수하는 방식이다.
운영체제가 page fault가 현재 몇번 일어나고 있는지 계속 계산한뒤 프레임 할당수를 조절한다.
'CS > OS' 카테고리의 다른 글
[운영체제] 파일 할당 File Allocation (0) | 2024.12.15 |
---|---|
[운영체제] 페이지 크기 (0) | 2024.12.13 |
[운영체제] 페이지 교체 Page Replacement (0) | 2024.12.13 |
[운영체제] 가상메모리 Virtual Memory (0) | 2024.12.13 |
[운영체제] 세그멘테이션 Segmentation (0) | 2024.12.13 |