스레싱과 프레임 할당

DanChu 🌟·2022년 8월 19일
0

스레싱 threshing

물리 메모리에는 여러 개의 프로세스가 올라와 있는데, 운영체제는 물리 메모리의 공간이 충분하면 프로세스 요청에 따라 원하는 프레임을 할당한다. 하지만 그렇지 못할 경우 남아있는 프레임을 어떻게 나누어주느냐하는 문제가 발생한다. 새로운 프로그램을 메모리에 올리기 위해 기존 프로그램을 스왑 영역으로 옮기는 횟수가 잦아진다는 것은 하드디스크의 입출력이 많아지는 것을 의미한다. 이렇게 잦은 페이지 부재가 일어나면 작업이 멈춘것 같은 상태가 일어나는데, 이를 스레싱 threshing 이라 한다.

이는 마치 책상에 앉아서 공부를 하려는데 책상이 이미 놓여있던 책들을 책꽃이에 꽂거나, 책꽂이의 책들을 공부하기 위해 책상으로 옮기는 작업이 너무 빈번하고 많이 일어나 정작 공부를 하지 못하는 상황과도 같다. 😓

스레싱과 프레임 할당

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


정적 할당 static allocation

프로세스 실행 초기에 플엠을 나누어준 후 그 크기를 고정하는 것으로, 균등 할당 방식과 비례 할당 방식이 있다.

균등 할당 equal allocation

프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당한다. 크기가 큰 프로세스의 경우 필요한 만큼 프레임을 할당받지 못하기 때문에 페이지 부재 page fault 가 빈번하게 발생하고, 크기가 작은 프로세스의 경우 불필요하게 할당된 메모리가 낭비된다.


비례 할당 proportional allocation

균등 할당 equal allocation과 달리, 프로세스의 크기에 비례하여 프레임을 할당하는 방식이다. 하지만 이 방법 역시 아래와 같은 문제가 있다.

  • 프로세스가 실행 중에 필요로 하는 프레임을 유동적으로 반영하지 못한다.
    • e.g. 동영상 플레이어
      프로그램 자체의 크기는 작지만 재생되는 동영상의 크기가 크기 때문에 실행되는 동안 동영상 플레이어보다 몇 십 배 큰 메모리를 필요로 한다. 하지만 비례 할당 방식은 프로세스가 실행되면서 필요로 하는 프레임을 유동적으로 반영하지 못한다.
  • 사용하지 않을 메모리를 처음부터 미리 확보하여 공간을 낭비한다. 요구 페이징 demand paging 방식에서는 아무리 큰 프로세스라도 처음부터 메모리에 모두 올리지 않는데, 비례 할당 방식에서는 큰 프로세스를 실행하면서 당장 필요 없는 프레임을 미리 할당해놓기 때문에 메모리가 낭비된다.


동적 할당 dynamic allocation

정적 할당 방식과 달리 프로세스를 실행하는 동안 메모리 요구를 시시각각 반영하는 방식을 동적 할당 dynamic allocation 이라 한다. 이 방식에는 작업집합 모델을 사용하는 방식과 페이지 부재 page fault 빈도를 사용하는 방식이 있다.

작업집합 모델 working set model

가장 최근에 접근한 프레임이 이후에도 또 참조될 가능성이 높다고 보는 지역성을 가정한다. 최근 일정 시간 동안 참조된 페이지들을 집합으로 만들고, 이 집합에 있는 페이지들을 물리 메모리에 유지하여 프로세스의 실행을 돕는다.

작업집합 모델에서 물리 메모리에 유지할 페이지 크기를 작업집합 크기 working set size 라 하는데, 이는 작업집합에 들어갈 최대 페이지 수를 의미하며 이는 곧 얼마나 자주 작업 집합을 갱신할 것인가도 의미하게 된다. 이 작업집합에 포함되는 페이지의 범위는 작업집합 윈도우 Working Set Window, WSW 라 한다. 현재 시점에 최대 어느 범위까지의 페이지를 살펴볼 것인가를 결정하는 것이 작업집합 윈도우이다.

작업 집합 모델에서는 작업집합 윈도우의 크기에 따라 프로세스의 실행 성능이 달라진다. 작업집합 윈도우를 너무 크게 잡으면 필요 없는 페이지가 메모리에 남아서 다른 프로세스에 영향을 미친다. 반대로 윈도우를 너무 작게 잡으면 필요한 페이지가 스왑 영역으로 옮겨져서 프로세스의 성능이 떨어진다.

작업집합 모델은 충분한 페이지를 할당하지 않으면 작업집합에 있는 페이지를 물리 메모리에 유지하기가 힘들다. 또, 어떤 프레임을 물리 메모리에 유지해야 하는지는 알 수 있지만 프로세스에 프레임을 얼마나 할당해야 하는지는 알 수 없다. 따라서 작업집합 모델은 프로세스의 성능을 높이는 방법이나, 스레싱 문제를 해결하지는 못한다.


페이지 부재 빈도

페이지 부재 횟수를 기록하여 페이지 부재 비율을 계산 하는 방식이다. 이 방식에서는 페이지 부재 비율의 상한선 upper bound 와 하한선 lower bound 를 설정하고, 페이지 부재 비율이 상한선 upper bound 를 초과하면 할당한 프레임이 적다는 것을 의미하므로 프레임을 추가하여 늘린다. 반대로 페이지 부재 비율이 하한선 loswer bound 밑으로 내려가면 메모리가 낭비된다는 의미이므로 할당한 프레임을 회수한다.

프로세스가 처음 시작될 때는 페이지 할당량을 예측하기 어려운데, 페이지 부재 빈도 방식은 프로세스를 실행하면서 추가적으로 페이지를 할당하거나 회수하여 적정 페이지 할당량을 조절한다.




references

0개의 댓글