스레싱
물리 메모리에는 여러 개의 프로세스가 올라와 있다. 운영체제는 물리 메모리의 공간이 충분하면 프로세스의 요청에 따라 원하는 프레임을 할당하지만, 그렇지 않은 경우 남은 프레임을 어떻게 할당할지에 대한 문제가 생긴다.
스레싱(Thrashing)
여러 프로그램을 한 번에 실행하면 하드디스크와의 입출력이 계속되어 프로그램이 정지한 것 같은 현상이 발생할 수 있다.
메모리가 꽉 찬 이후 새로운 프로그램을 올리기 위해 기존 프로그램을 스왑 영역에 옮기는 횟수가 증가하기 때문이다.
이처럼 하드디스크의 입출력이 너무 많아져 잦은 페이지 부재로 CPU Utilization이 급격히 저하되는 현상을 스레싱이라고 한다.
물리메모리의 크기와 스레싱
스레싱은 메모리의 크기가 일정할 경우 멀티프로그램의 수와 밀접한 관계가 있다. 흔히 멀티 프로그래밍의 정도(동시에 실행하는 프로그램 수)가 증가하면 CPU Utilization이 증가한다고 생각할 것이다. 어느 지점까지는 이 말이 옳다. 프로그램의 수가 적을 때는 CPU Utilization이 계속 증가가하다가 메모리가 꽉 차면 CPU가 작업하는 시간보다 Paging in, out 작업이 빈번해져 CPU가 작업할 수 없는 상태에 이른다. 이 시점을 Thrashing Point라고 한다.
스레싱과 프레임 할당
남아 있는 프레임을 실행중인 프로세스에 적절히 나눠주는 정책이 필요하다. 프로세스에 프레임을 할당하는 방식은 크게 정적 할당과 동적할당으로 구분한다.
정적 할당
프로세스 실행 초기에 프레임을 나눠준 후 그 크기를 고정하는 방식이다. 프로세스 크기와 상관없이 사용가능한 프레임을 모든 프로세스에 동일하게 할당하는 균등 할당과 프로세스 크기에 비례하여 프레임을 할당하는 비례 할당 방식이 있다.
동적 할당
정적 할당과 달리 프로세스를 실행하는 동안 메모리 요구를 반영할 수 있는 방식이다.
- Working set model
지역성(locality) 을 기반으로, 가장 최근에 접근한 프레임이 이후에 또 참조될 가능성이 높다는 가정에서 나왔다.
최근 일정 시간 동안 참조된 페이지들의 집합을 물리 메모리에 상주시켜 프로세스의 실행을 돕는다. - working set: 메모리에 상주시킬 페이지의 집합
- working set size: working set에 들어갈 최대 페이지 수 (working set의 갱신 주기이기도 함)
이 그림에서는 working set window(델타 표시)가 10으로, 델타 동안 참조된 10개의 페이지 중 작업 집합에는 WS(t1)={1,5,7,6,2}이 삽입된다. 이 페이지들은 다음번 윈도우에 도달할 때까지 물리 메모리에 보존된다.
- Page Fault Frequency (페이지 부재 빈도)
Working set 모델의 경우 충분한 페이지를 할당하지 않은 working set에 있는 페이지를 물리 메모리에 유지하기 힘들다. 또한 프로세스에 프레임을 얼마나 할당해야 하는지 알 수 없다. 프로세스의 성능을 높일 수 있지만 스레싱을 문제를 해결하지는 못한다.
PFF(Page Fault Frequency) 방식은 프로세스가 필요로 하는 페이지 양을 동적으로 결정하는 방법이다.
이 방식에서는 page fault 비율의 상한선과 하한선을 설정한다. - page fault 발생 비율 > 상한선 → 프레임 할당이 너무 적다는 것 → 프레임 할당
- page fault 발생 비율 < 하한선 → 메모리가 낭비 된다는 것 → 할당한 프레임 회수