[Operating Systems] Virtual Memory 2

chowisely·2020년 9월 23일
0

Operating Systems

목록 보기
8/11

Frame Allocations

각 프로세스에게 얼마나 많은 프레임을 할당할 것인지, 어떤 프레임을 대치할 것인지 결정하는 것도 중요하다.

Fixed Allocation

Equal Allocation

모든 프로세스에게 동일한 양의 프레임을 할당한다.

Proportional Allocation

프로세스 크기에 비례하여 프레임을 할당한다.

Priority Allocation

프로세스의 크기가 아닌 우선순위에 따라 프레임을 할당한다.

Global Allocation

희생 프레임을 자기 자신뿐만 아니라 다른 프로세스가 가지고 있는 프레임들 중에서 고를 수 있다. 처리량은 늘어나지만, 페이징 경향(?)이 자기 자신뿐만 아니라 다른 프로세스들의 페이징 경향(?)에도 영향을 받기 때문에 페이지 부재율을 조절하기 어렵다.

Local Allocation

희생 프레임을 자기 자신이 가지고 있는 프레임들 중에서만 고를 수 있다. 메모리가 충분히 활용되지 않을 가능성이 있다.


Thrashing

페이지 부재로 페이지 대치를 실행하지만 곧바로 대치된 페이지가 필요해서 다시 페이지 부재를 일으키는 경우를 스래싱(thrashing)이라고 한다. 프로세스에게 할당된 프레임이 충분하지 않아서 발생한다. 스래싱을 피하는 방법으로 지역성 모델(locality model)이나 작업 집합 모델(working set model)을 사용할 수 있다.

프로세스 실행보다 페이징하는 시간이 더 많아지면 CPU 이용률이 떨어지고, OS는 CPU 이용률을 높이기 위해 더 많은 프로세스를 메모리에 올릴 것이다. 프로세스가 더 많아질 수록 프로세스들이 필요로 하는 페이지가 더 많아진다. 이는 결국 페이지 부재율을 높이고, 잦은 I/O 사용으로 CPU 이용률을 떨어트린다.

Locality Model

지역성(locality)은 프로세스가 특정 시간대에서 함께 사용하는 페이지들의 집합이다. 요구 페이징은 지역성의 원리를 따라 동작하며 지역성은 시간이 지남에 따라 바뀐다. 하지만 모든 프로세스의 지역성의 합이 메모리의 전체 용량보다 크다면 스래싱이 발생할 수 밖에 없다. 지역성 모델을 사용하여 프레임을 할당하면 지역성이 바뀌지 않는 한 페이지 부재가 일어날 가능성이 현저히 줄어들 수 있다.

Working Set Model

작업 집합(working set)은 가장 최근 시간대에 한 프로세스의 페이지 참조 횟수를 나타낸다. 작업 집합의 총합이 메모리의 전체 용량보다 크다면 실행 중인 프로세스를 중지시키거나 스왑 아웃해서 스래싱을 피한다.


Page Fault Frequency

페이지 부재 비율을 직접적으로 조절할 수 있는 방법이다. 수용 가능한 페이지 부재 비율을 설정하고, 상한 값을 넘으면 프레임을 더 할당하고 하한 값보다 낮으면 프레임을 회수한다.


Issues

가상 메모리를 사용함에 있어 페이지 적재 정책, 페이지 대치 알고리즘, 프레임 할당 알고리즘 외에도 성능에 영향을 미치는 요소들이 있다.

  1. Global Replacement vs. Local Replacement
  2. Prepaging: 프로세스 시작 전에 사용되리라 예상되는 페이지를 사전에 메모리로 가져오는 방법이다.
  3. Page Table Structure
  4. Page Size
profile
honesty integrity excellence✨ [이사 중🚚](chowisely.github.io)

0개의 댓글