솜은 코튼

[OS] 스레싱과 프레임 할당 본문

OS

[OS] 스레싱과 프레임 할당

솜.코 2023. 5. 27. 22:15

 

 

스레싱과 프레임 할당

.

 

 

물리 메모리에는 여러 개의 프로세스가 올라와 있다. 물리 메모리의 공간이 충분하면 프로세스의 요청에 따라 할당하지만

그렇지 못할 경우 남아 있는 프레임을 어떻게 나누어줄지 정한다.

 

 

1. 스레싱

.

 

물리 메모리가 크면 그만큼 더 많은 프로세스가 올라올 수 있지만

작으면 스왑 영역에서 가져와야 하므로 속도가 떨어진다.

 

적은 수의 프로그램을 실행할 땐 문제 없지만 많은 수의 프로그램을 실행한다면?

처음에는 정상적으로 메모리에 올라오지만 메모리가 꽉 찬 후에는

스왑 영역으로 옮기는 횟수가 잦아져 정지한 것 같은 현상이 발생한다.

 

 

이와 같이 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재

작업이 멈춘 것 같은 상태를 '스레싱'이라 한다.

 

 

스레싱은 메모리의 크기가 일정할 경우 멀티프로그램의 수와 밀접한 관계가 있다.

 

멀티프로그램 정도는 동시에 실행하는 프로그램의 수를 말한다.

 

 

 

그래프를 보면 프로그램의 수가 적을 때는 CPU 사용률이 증가하다

메모리가 꽉 차면 CPU가 작업하는 시간보다 스와핑 작업이 빈번해져 CPU가 작업할 수 없는 상태에 이르게 되는데

이러한 시점을 '스레싱 발생 지점'이라고 한다.

 

 

여기서 물리 메모리를 늘리면 컴퓨터가 빨라지는 이유를 알 수 있다!

자주 사용하는 프로세스가 필요로 하는 메모리보다 물리 메모리가 작다면

스레싱 발생 지점에 빨리 도달하여 컴퓨터가 전체적으로 느려진다.

 

물리 메모리 용량을 512MB 에서 4GB로 늘리면 스레싱 발생 지점이 늦춰져 성능이 향상되지만

4GB에서 16GB로 늘린 경우는 빨라지지 않는다.

 

이미 충분한 크기가 되어 더 늘린다고 속도에 영향을 미치지 않는다.

 

 

1.1 프레임 할당

 

실행 중인 프로세스에 프레임을 얼마나 나누어주느냐에 시스템 성능이 달라진다.

 

너무 적은 프레임을 할당하면 페이지 부재가 빈번히 일어나고,

너무 많은 프레임을 할당하면 페이지 부재는 줄지만 메모리를 낭비하여 시스템 성능이 낮아진다.

 

 

프로세스에 프레임을 할당하는 방식은 '정적 할당''동적 할당'으로 구분된다.

 

 

1.2 정적 할당

 

정적 할당 방식은 프로세스 실행 초기에 프레임을 나누어준 후 그 크기를 고정하는 것으로,

'균등 할당 방식'과 '비례 할당 방식'이 있다.

 

 

1.2.1 균등 할당

 

균등 할당 방식은 프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당한다.

 

 

 

균등 할당 방식에서는 크기가 큰 프로세스의 경우 필요한 만큼 할당받지 못해 페이지 부재가 빈번하게 발생하고,

크기가 작은 프로세스의 경우 메모리가 낭비된다.

 

 

1.2.2 비례 할당

 

비례 할당 방식프로세스의 크기에 비례하여 프레임을 할당하는 방식이다.

 

 

 

비례 할당 방식은 프로세스가 실행 중에 필요로 하는 프레임을 유동적으로 반영하지 못한다.

아무리 작은 프로세스라도 실행 중에 많은 메모리(프레임)을 필요로 하는 경우가 있다.

또한 사용하지 않을 메모리를 처음부터 미리 확보하여 공간을 낭비한다.

 

 

1.3 동적 할당

 

정적 할당 방식은 프로세스를 실행하는 초기에 프레임을 할당하기 때문에

프로세스를 실행하는 동안 메모리 요구를 반영하지 못하는 단점이 있다.

 

동적 할당은 변하는 요청을 수용하는 방식으로 '작업집합 모델''페이지 부재 빈도'를 사용하는 방식이 있다.

 

 

1.3.1 작업집합 모델

 

작업집합 모델은 지역성 이론을 바탕으로 하며, 가장 최근에 접근한 프레임이 이후에도 참조될 가능성이 높다는 가정이다.

 

최근 일정 시간 동안 참조된 페이지들을 집합으로 만들고, 이 집합을 물리 메모리에 유지한다.

 

 

 

'작업집합 크기'는 물리 메모리에 유지할 페이지의 크기이며, 작업집합에 들어갈 최대 페이지 수를 의미한다.

작업집합에 포함되는 페이지의 범위를 '작업집합 윈도우'라고 한다.

 

위의 그림은 작업집합 크기를 5로 설정하고, 작업집합 윈도우를 10으로 잡았다.

이때 작업집합 윈도우에는 현재 시점(t1)부터 시간적으로 가까운 페이지부터 삽입된다.

 

또한 작업집합 크기가 5라는 것은 페이지에 다섯 번 접근할 때마다 작업집합을 갱신한다는 의미이다.

 

 

 

작업집합 크기를 5로 설정했기 때문에 t1 시점 이후에 5개 페이지에 접근하면 t2 시점에 작업집합이 갱신된다.

그러나 t2 시점에 가까운 순서대로 삽입되고 가장 멀리 있는 5번 페이지는 작업집합에 속하지 못한다.

 

작업집합 윈도우를 너무 크게 잡으면 필요 없는 페이지가 메모리에 남아 다른 프로세스에 영향을 미친다.

반대로 너무 작게 잡으면 필요한 페이지가 스왑 영역으로 옮겨져 성능이 떨어진다.

 

 

1.3.2 페이지 부재 빈도

 

작업집합 모델의 경우 충분한 페이지를 할당하지 않으면 작업집합에 있는 페이지를 물리메모리에 유지하기 힘들다.

즉, 프로세스의 성능을 높이는 방법이지만 스레싱 문제를 해결하지 못한다.

 

페이지 부재 빈도를 이용하는 것은 프로세스가 필요로 하는 페이지의 양을 동적으로 결정하는 방법이다.

페이지 부재 비율이 상한선을 초과하면 할당한 프레임이 적다는 것으로 늘리고,

하한선 밑으로 내려가면 메모리가 낭비된다는 의미로 프레임을 회수한다.

 

 

 

 

 

 

 

 

 

 

* 해당 글은 '쉽게 배우는 운영체제'와 '운영체제' 책을 참고하여 작성하였습니다. 출처: 쉽게 배우는 운영체제 (조성호), 운영체제 10판 (Abraham Silberschatz)