본문 바로가기
전공/운영체제

Ch09. 가상 메모리 관리_04)스레싱과 프레임 할당

by 임 낭 만 2023. 6. 13.

프로세스 적재 정책 (스래싱)

  • 메인 메모리에 상주하는 프로세스 수 → 다중 프로그래밍 수준
  • 메모리에 상주할 프로세스 수를 결정하는 것은 메모리 관리측면에서 매우 중요함
  • 메인 메모리에 너무 적은 프로세스가 상주하면 프로세스 대기상태 자주발생
  • 이를 해결하기 위해 페이지 교체작업을 하면 시스템 효율성 저하원인
  • 메인 메모리에 많은 수의 프로세스가 상주하면 프로세스들이 차지하는 평균 페이지 감소로 페이지 부재가 자주 발생함

스레싱

스레싱(threshing) 개념

  • 페이지 교환이 계속 일어나는 현상
  • 어떤 프로세스에 프레임이 충분하지 않다면 할당된 프레임을 최소 프레임 수까지 줄일 수 있다하더라도 실제 사용하는 프레임 수만큼 갖지 못하면 빈번하게 페이지 부재가 발생 가능
  • 기타 자원 부족으로 필요한 연산을 수행할 수 없는 상태가 되면 운영체제는 다른 프로세스에서 자원을 회수하는 등 방법을 이용하여 자원 확보
  • 페이징 동작(스왑 인, 스왑 아웃), 즉 디스크와 메모리 간에 빈번한 페이지 교환 발생
  • 모든 페이지를 실제로 사용하고 있어도 페이지를 교환해야 한다면 페이지 부재 연속 발생
  • 프로세스는 계속 페이지를 교환하려고 많은 시간을 낭비하면서 유용한 작업을 느리게 하므로 시스템 성능 낮추거나 축소 야기
  • 어떤 프로세스가 프로세스 수행에 보내는 시간보다 페이지 교환에 보내는 시간이 더 길면 ‘스래싱을 하고 있다’고 표현

스레싱(threshing)

  • 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘 것 같은 상태

스레싱 발생시점 (threshing point)

  • CPU가 작업하는 시간보다 스왑 영역으로 페이지를 보내고 새로운 페이지를 메모리에 가져오는 작업이 빈번해져서 CPU가 작업할 수 없는 상태에 이르게 되는 시점
  • 물리 메모리의 크기를 늘리면 스레싱 발생 지점이 늦춰져서 프로세스를 원만하게 실행할 수 있음

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

스레싱의 발생 원인

  • 너무 많은 다중 프로그래밍, 즉 새로운 프로세스가 늘어나면 프로세스에 고정된 프레임 수가 현재 활동에 충분하지 않으므로 서로 프레임을 빼앗기고 뺏는 과정(지속적인 페이지 부재)을 유지하려고 함.
  • 프로세서가 요구하는 최소한의 수보다 페이지 프레임 수가 적으면 적을수록 페이지 부재 비율 증가. 페이지 부재가 발생하면 페이징 처리장치를 사용하려고 프로세스가 대기하기 때문에 준비 큐는 비게 됨. 페이지 부재가 많이 발생할수록 프로세스가 페이징 처리장치를 기다리는 시간은 길어지므로 프로세스의 효율성 낮아짐
  • 결국 프로세서의 이용률은 더 낮아지고 프로세서 스케줄러는 이용률을 올리려고 다중 프로그래밍의 정도를 점점 더 높이지만, 프로세스의 실행은 점점 느려진다. 이런 페이지 부재로 프로세서의 이용률이 감소하면 결국 스래싱 발생

스레싱과 프레임 할당

  • 스레싱은 각 프로세스에 프레임을 할당하는 문제와도 연관됨
  • 실행중인 여러 프로세스에 프레임을 얼마나 나눠주느냐에 따라 시스템의 성능이 달라짐
  • 프로세스에 너무 적은 프레임을 할당하면 페이지 부재가 빈번히 일어남
  • 프로세스에 너무 많은 프레임을 할당하면 페이지 부재는 줄지만 메모리가 낭비됨
  • 프로세스에 프레임을 할당하는 방식은 크게 정적 할당과 동적 할당으로 구분

스레싱의 예방

  • 작업 집합(워킹 셋) 모델 : 프로세스가 실제로 얼마큼 프레임을 많이 사용하는지 검사하여 지역 모델(작업 집합 모델)을 정의
  • 지역 모델 : 프로세스를 실행할 때 프로그램은 보통 지역 몇 개로 중첩해서 구성하므로 한 지역에서 다른 지역으로 이동하는 과정을 의미함

지역성

지역성의 개념

  • 실행 중인 프로세스에서 나타나는 특성
  • 동일한 값이나 관련 저장 위치를 자주 액세스하는 현상
  • 프로세스는 어느 실행 단계동안 메모리의 정보를 균일하게 액세스하는 것이 아니라 선호하는 특정 페이지만 집중적으로 참조하는 현상, 국부성이라고도 함

지역성의 종류

  • 시간 지역성
    • 특정 자원들을 상대적으로 짧은 시간안에 재사용 의미
    • 한 순간 한 지점에서 특정 메모리 위치를 참조할 때 동일한 위치에서 가까운 미래에 다시 참조할 가능성 높음
    • 즉, 최근에 액세스한 항목은 오래지 않아 다시 액세스할 가능성
    • 동일한 메모리 위치에 인접한 참조 사이에는 시간적 근접성 • 미래 위치가 현재 위치와 동일하다면 시간 지역성은 공간 지역성의 매우 특별한 경우가 됨
    • 순환(루프), 서브 프로그램, 스택, 계산이나 합계에 사용하는 변수는 시간 지역성에 적용하는 예
  • 공간 지역성
    • 프로세스가 메모리의 어떤 위치를 참조하면 그 근처를 이후에도 계속 참조할 가능성 높음
    • 상대적으로 가까운 위치에서 데이터 요소를 사용한다는 것 의미
    • 메모리의 특정 위치를 특정 시간에 참조할 때 가까운 미래에 가까운 메모리 위치 참조 가능성 높음
    • 데이터 정렬과 1차원 배열의 요소 탐색과 같이 선형 액세스할 때를 순차적 지역성이라고 한다. 이는 공간 지역성의 특수한 경우
    • 배열 검색(순회), 순차적 코드의 실행, 근처의 관련 변수 선언 등이 공간 지역성을 적용 예

정적 할당

균등할당 (equal allocation)

  • 프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당
  • 크기가 큰 프로세스의 경우 필요한 만큼 프레임을 할당 받지 못하기 때문에 페이지 부재가 빈번하게 발생하고, 크기가 작은 프로세스의 경우 메모리가 낭비
  • 현재 사용가능한 프레임이 12개이고, 프로세스 A는 프레임 6개, B는 3개를, C는 9개를 필요로 함

균등 할당 방식

비례할당 (proportional allocation)

  • 프로세스의 크기에 비례하여 프레임을 할당
  • 프로세스의 크기를 고려하지 않는 고정 할당보다 좀 더 현실적인 방식
  • A, B, C 전체 프로세스의 프레임이 18개, 가용프레임 12개
  • 프로세스 A=4(6*12/18), B=2(3*12/18), C=6(9*12/18) 할당

비례 할당 방식

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

동적 할당

작업집합 모델 (working set model)

  • 지역성 이론에 근거하며, 가장 최근에 접근한 프레임이 이후에도 다시 참조될 가능성이 높다는 가정
  • 최근 일정 시간동안 참조된 페이지들을 집합으로만 들고, 이 집합에 있는 페이지들을 물리 메모리에 유지
  • 작업집합 크기(working set size): 작업집합 모델에서 물리 메모리에 유지할 페이지 크기, [그림9-26]에서는 5로 설정
  • 작업집합 윈도우: 작업집합에 포함되는 페이지 범위, 현재시점에서 최대 어느 범위까지 페이지를 살펴볼 것인가를 결정하는 것이 작업집합 윈도우

작업집합 모델

  • [그림9-26] 작업집합 윈도우 10 설정, 델타로 표시됨
  • WS(t1) ={1,7,5,2,3}이 삽입되며, 이 페이지들이 다음번 윈도우에 도달할 때까지 물리메모리에 보존됨
  • 작업집합 윈도우에는 현재 시점(t1)부터 시간적으로 가까운 페이지부터 삽입됨
  • 작업집합 크기가 5라는 것은 최대페이지 수를 표시하지만 얼마나 자주 작업을 갱신할 것인지도 의미함

작업집합의 갱신

작업집합 모델에서 시간에 따른 집합의 변화

작업집합 윈도우의 크기와 프로세스 실행 성능

  • 작업집합 윈도우를 너무 크게 잡으면 필요없는 페이지가 메모리에 남아서 다른 프로세스에 영향을 미침
  • 윈도우를 너무 작게 잡으면 필요한 페이지가 스왑 영역으로 옮겨져서 프로세스의 성능이 떨어짐
  • 적정크기의 작업집합을 유지함으로써 메모리를 효율적으로 관리할 수 있음

페이지 부재 빈도 (page fault frequency)

  • 페이지 부재 횟수를 기록하여 페이지 부재 비율을 계산하는 방식
  • 페이지 부재 비율이 상한선을 초과하면 프레임을 추가하여 늘림
  • 페이지 부재 비율이 하한선 밑으로 내려가면 할당한 프레임을 회수
  • 페이지 부재 빈도 방식은 프로세스를 실행하면서 추가적으로 페이지를 할당하거나 회수하여 적정 페이지 할당량을 조절

페이지 부재 비율과 페이지 할당

댓글