본문으로 건너뛰기

스레싱에 대해서 설명해주세요.

동시에 더 많은 프로세스를 실행한다고해서 CPU 사용량이 계속 증가하기만 하는 것은 아니다. 아무리 좋은 페이지 교체 알고리즘을 사용하더라도 프로세스들이 메모리를 많이 쓰면 페이지 폴트가 일어나 스왑핑을 할 수 밖에 없고, 스왑핑을 위한 IO 작업이 많이 발생하면 CPU 사용량이 떨어진다. 이때 CPU 사용량이 급감하기 시작하는 것을 쓰레싱이라고 한다.

스레싱은 메모리의 크기가 일정한 경우 멀티프로그램의 수와 밀접한 관계가 있다. 동시에 실행하는 프로그램의 수를 멀티프로그래밍 정도(degree of multiprogramming)이라고 하는데, 멀티프로그래밍 정도가 너무 높으면 스레싱이 발생한다. 위 그림은 멀티 프로그래밍 정도와 CPU 사용률의 관계를 나타낸 것이다. 프로그램의 수가 적을 때는 CPU 사용률이 계속 증가하다가 메모리가 꽉차면 CPU가 작업하는 시간보다 스왑 영역으로 페이지를 보내고 새로운 페이지를 메모리에 가져오는 작업이 빈번해져서 CPU가 작업할 수 없는 상태에 이르게 되는데, 이러한 시점을 스레싱 발생 지점(thrashing point)라고 한다.

따라서 물리 메모리를 늘리면 CPU의 사용률이 높아지고, 컴퓨터는 빨라지게 된다. 컴퓨터는 운영체제를 포함하여 많은 프로그램을 동시에 실행한다. 자주 사용하는 프로세스가 필요로 하는 메모리보다 물리 메모리가 작다면 스레싱 발생 지점에 빨리 도달하여 컴퓨터가 전체적으로 느려진다. 따라서 물리 메모리의 크기를 늘리면 스레싱 발생 지점이 늦춰져서 프로세스를 원만하게 실행할 수 있다.

스레싱은 각 프로세스에 프레임을 할당하는 문제와도 연관된다. 실행 중인 여러 프로세스에 프레임(메모리 크기)을 얼마나 나누어주냐에 따라 시스템 성능이 달라진다. 어떤 프로세스에는 너무 적은 프레임을 할당하여 페이지 부재(page fault)가 너무 빈번하게 발생하고, 어떤 프로세스에는 너무 많은 프레임을 할당하여 페이지 부재(page fault)를 줄이는 대신 메모리를 낭비한다면 전반적으로 시스템 성능이 낮아진다. 따라서 남아있는 프레임을 실행 중인 프로세스에 적절히 나누어주는 정책이 필요하다. 프로세스에 프레임을 할당하는 방식은 크게 정적할당과 동적할당으로 구분된다.

Reference

  • 쉽게 배우는 운영체제