먼저 스레싱(Thrashing)에 대해서 설명하겠습니다.

📌 스레싱(Thrashing)

프레임의 수가 부족하면 CPU는 페이지 폴트가 자주 발생할 것입니다. 그러면 CPU의 이용률도 떨어집니다.

CPU가 쉴새 없이 프로세스를 실행해야 컴퓨터 전체의 생산성도 올라가지만, 페이지 교체에 너무 많은 시간을 쏟으면 당연히 성능에도 큰 악영향이 초래됩니다.

이처럼 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제를 스레싱이라고 합니다.

동시에 프로세스의 수가 증가할수록 CPU의 이용률이 올라가는 것이 아니라 어떤 범위를 넘어서면 CPU의 이용률이 오히려 감소합니다.

이러한 현상이 발생하는 이유가 무엇일까요?

프로세스가 증가할수록 메모리 안에 비어있는 프레임의 개수가 줄어들게 될 것입니다. 그러면 메모리 안에 프레임은 모두 가득 차게 될 것이고, 그 후에 프로세스의 개수가 증가하면 메모리와 보조기억장치 사이에서 Page In/Out 연산 작업이 증가할 것입니다.

Page In/Out은 디스크 I/O 작업으로 CPU를 사용하지 않는 작업이므로 이 작업이 많아질수록 CPU는 그동안 아무것도 하지 않게 됩니다.

📌 프레임 할당

하지만 이러한 스레싱을 해결할 수 있는 방법이 있습니다.
바로 프로세스당 적절한 수의 프레임을 할당하는 것입니다.

프레임을 할당하는 방법은 크게 정적 할당동적 할당으로 나뉩니다.

  • 정적 할당 : 균등 할당 (Equal Allocation)비례 할당 (Proportional Allocation)이 있으며, 균등 할당모든 프로세스에게 똑같은 수의 프레임을 할당하는 방법입니다. 프로세스 크기에 따라 매우 비효율적입니다. 그리고 비례 할당프로세스의 크기에 따라 프레임을 할당하는 방법인데, 이는 프로세스 크기가 크더라도 모든 기능을 사용하지 않기 때문에 비효율적입니다.

  • 동적 할당 : 프로세스의 실행을 보고 할당할 프레임의 수를 결정한다는 점에서 동적 할당 방식이라고도 합니다. 이 방식에는 크게 작업 집합 모델(Working Set Model)페이지 폴트 빈도(Page-Fault Frequency) 를 사용하는 방식이 있습니다.

스레싱 문제를 해결하기 위해 실행 중에 프레임을 할당하는 동적 할당을 이용해야 합니다.

⚡ 작업 집합 모델(Working Wet Model)

이 작업 집합 모델이 나오게 된 배경은 프로세스가 실행 중일 때, 어느 페이지를 사용하는지 연구 결과에서 참조 지역성 성질이 성립한다는 것을 발견하게 되었습니다.

특정 시간에는 일정 범위의 페이지를 주로 참조하는 것을 알 수 있으며, 이러한 성질은 캐시에서도 볼 수 있습니다. 이를 통해 특정 시간에 따라 사용하는 페이지의 개수만큼 프레임을 할당할 수 있습니다.

하지만 이 방법 또한 단점이 존재하며, 바로 프로세스를 미리 수행해봐야 할 수 있다는 것입니다. 그리고 프로세스를 수행할 때마다 사용하는 기능이 달라질 수 있으므로, 참조 지역성 이용하는 방법은 비현실적입니다.

그래서 등장하게 된 것이 작업 집합 모델입니다. 작업 집합 모델은 위의 참조 지역성의 방식과 유사한데, 미래가 아닌 과거를 보는 것입니다.

작업 집합(Working Set)실행 중인 프로세스가 일정 시간(△) 동안 참조한 페이지의 집합을 말합니다.

△(델타)는 운영체제 내부에서 정하는 기준에 따라 다르며, 이를 Working Set Window 라고 합니다. 마지막으로 작업 집합의 개수만큼 프레임을 할당합니다.

⚡ 페이지 폴트 빈도(Page-Fault Frequency)

페이지 폴트의 비율은 프로세스에 할당된 프레임의 수에 반비례합니다. 즉, 할당된 프레임의 수가 적을수록 페이지 폴트 비율은 늘어난다고 생각하시면 됩니다.

세로축(↑)은 페이지 폴트 비율, 가로축(→)은 할당된 프레임의 수로 그래프로 표현할 수 있습니다.

여기서 운영체제 내부에서 해당 프로세스의 페이지 폴트 횟수를 계속 검사합니다. 여기서 상한선(Upper Bound)하한선(Lower Bound)를 설정합니다.

만약 상한선보다 많은 페이지 폴트가 발생하면 프레임을 더 많이 할당해주고, 하한선보다 적게 페이지 폴트가 발생하면 할당된 프레임 개수를 줄여주는 방식입니다.

이상으로 스레싱과 프레임 할당에 대해서 간단히 알아봤습니다.

참고

  • KOCW - 운영체제, 양희재 교수님
  • 혼자 공부하는 컴퓨터구조 + 운영체제
profile
꾸준함으로 성장하는 개발자 지망생

0개의 댓글