[OS] 스레싱

스레싱

물리 메모리에는 여러 개의 프로세스가 올라와 있다. 운영체제는 물리 메모리의 공간이 충분하면 프로세스의 요청에 따라 원하는 프레임을 할당하지만, 그렇지 않은 경우 남은 프레임을 어떻게 할당할지에 대한 문제가 생긴다.

스레싱(Thrashing)

여러 프로그램을 한 번에 실행하면 하드디스크와의 입출력이 계속되어 프로그램이 정지한 것 같은 현상이 발생할 수 있다.
메모리가 꽉 찬 이후 새로운 프로그램을 올리기 위해 기존 프로그램을 스왑 영역에 옮기는 횟수가 증가하기 때문이다.
이처럼 하드디스크의 입출력이 너무 많아져 잦은 페이지 부재로 CPU Utilization이 급격히 저하되는 현상을 스레싱이라고 한다.

물리메모리의 크기와 스레싱

스레싱은 메모리의 크기가 일정할 경우 멀티프로그램의 수와 밀접한 관계가 있다. 흔히 멀티 프로그래밍의 정도(동시에 실행하는 프로그램 수)가 증가하면 CPU Utilization이 증가한다고 생각할 것이다. 어느 지점까지는 이 말이 옳다. 프로그램의 수가 적을 때는 CPU Utilization이 계속 증가가하다가 메모리가 꽉 차면 CPU가 작업하는 시간보다 Paging in, out 작업이 빈번해져 CPU가 작업할 수 없는 상태에 이른다. 이 시점을 Thrashing Point라고 한다.

멀티프로그래밍 정도돠 스레싱


스레싱과 프레임 할당

남아 있는 프레임을 실행중인 프로세스에 적절히 나눠주는 정책이 필요하다. 프로세스에 프레임을 할당하는 방식은 크게 정적 할당과 동적할당으로 구분한다.

정적 할당

프로세스 실행 초기에 프레임을 나눠준 후 그 크기를 고정하는 방식이다. 프로세스 크기와 상관없이 사용가능한 프레임을 모든 프로세스에 동일하게 할당하는 균등 할당과 프로세스 크기에 비례하여 프레임을 할당하는 비례 할당 방식이 있다.

동적 할당

정적 할당과 달리 프로세스를 실행하는 동안 메모리 요구를 반영할 수 있는 방식이다.

워킹셋 예시

이 그림에서는 working set window(델타 표시)가 10으로, 델타 동안 참조된 10개의 페이지 중 작업 집합에는 WS(t1)={1,5,7,6,2}이 삽입된다. 이 페이지들은 다음번 윈도우에 도달할 때까지 물리 메모리에 보존된다.


PFF