9. 가상 메모리의 관리

holim0·2021년 1월 24일
4

Operating System

목록 보기
9/9
post-thumbnail

오늘은 가상 메모리의 관리에 대해서 알아보겠습니다.


1. 하드웨어의 사용

➡️ 가상 메모리가 효율적으로 운영되기 위해서는 사상에 걸리는 시간을 최소화해야 하는데 TLB 같은 추가 하드웨어를 사용할 수 있습니다.

즉, 추가적인 비용을 들여 필요한 하드웨어를 장착하여 활용하는 것입니다.


2. 관리를 위한 다양한 기법들

2-1. 적재 정책(Fetch Strategy)

➡️ 실행에 필요한 페이지를 언제 메모리에 적재할 것인가를 결정하는 정책입니다. 크게 보아 **요구 적재, 예측 적재 **이렇게 2가지로 나눌 수 있습니다.

요구 적재(Demand Fetch)

  • 요구 페이징(Demand Paging)이라고도 하며, 페이지가 참조될 때 적재하는 기법입니다.

  • 사상 과정에서 찾고자 하는 페이지가 정해지고 이 페이지가 메모리에 없어서 디스크로 부터 적재해 와야 할 때 하는 기법으로, 참조되지 않은 페이지는 메모리에 적재될 기회가 없게 됩니다.

예측 적재(Anticipatory Fetch)

  • 선 페이징(Prepaging)이라고도 하며, 예측을 통해 확룰적으로 참조될 가능성이 높다고 판단되는 페이지를 미리 적재시키는 기법입니다.

2-2. 배치 정책(Placement Strategy)

➡️ 디스크로부터 가져온 페이지를 메모리의 어디에 적재할 것인가를 결정하는 정책입니다.

메모리의 빈 프레임만 발견되면 어떤 프레임에 적재하든 문제가 없고 따라서 배치 정책을 따로 신경 쓰지 않아도 됩니다.


2-3. 할당 정책(Allocation Strategy)과 교체 범위

➡️ 프로세스들에게 메모리를 얼마큼씩 줄 것인지를 결정하는 정책입니다.

프로세스에게 같은 개수든 서로 다른 개수든 시스템에서 정해놓은 개수를 사용하도록 하고, 개수의 변동이 없도록 운영한다면 **고정 할당(Fixed Allocation)**이라고 합니다.

반면에 실행 도중 프로세스에 부여된 프레임의 수에 변동이 있도록 한다면 **가변 할당(Variable Allocation)**이라고 합니다.

해당 프로세스에게 할당된 프레임 중에서 교체될 페이지를 선택하게 하면 **지역 교체(Local Replacement)**이고, 메모리의 모든 프레임들이 대상이 되면 ** 전역교체(Global Replacement)**라고 합니다.


2-4. 교체 정책(Replacement Strategy)

➡️ 메모리에 빈 프레임이 없을 때 적재될 페이지를 위해 적재된 페이지 중 교체 대상이 되어야 하는데, 이때 어떤 페이지를 선택할 것인가를 결정하는 정책입니다.

각 기법에 대해서 알아보겠습니다.

FIFO 기법

✅ 적재된 지 가장 오래된 페이지를 교체하는 기법입니다.

FIFO에는 자료구조인 **큐(Queue)**가 사용되고, 큐에서의 상대적인 위치가 적재된 순서를 나타내는 것으로 교체의 대상은 항상 큐의 맨 앞이 되도록 유지, 관리합니다.

FIFO에서는 부재율을 낮추기 위해서 프레임을 더 추가할 경우 오히려 부재율이 올라가는 현상이 나타납니다.

이를 **FIFO 모순(FIFO Anomaly)**라고 합니다.


LRU(Least Recently Used) 기법

✅ 참조된 지 가장 오래된 페이지를 교체하는 기법입니다.

**LRU 스택(Stack)**을 사용하여 스택의 가장 밑(Bottom)에 있는 페이지가 교체 대상이 되도록 스택에서의 위치가 상태적인 참조 순서를 나타내도록 관리하는 방법이 있습니다.

Second-Chance(Clock) 기법

➡️ 이 기법은 적재된 후 한번이라도 더 참조된 페이지를 바로 교체시키지 않고 한 번 더 메모리에 머무를 수 있는 기회를 주는 기법입니다.

페이지에 참조 비트를 두어 교체 대상인 페이지의 참조 비트가 0이면 바로 교체되고, 1로 되어 있을 경우 즉, 적재된 후 한번 이상 참조된 경우 이 비트를 0으로 만들면서 큐의 맨 뒤로 보냄으로써 메모리에 머무를 기회를 한 번 더 줍니다.


2-5. Working Set 이론

✅ 프로세스가 특정 시점에서 집중적으로 참조하는 페이지들의 집합을 Working Set이라고 하며, Working Set을 메모리에 적재되도록 함으로써 페이지 부재를 최소화하는 것입니다.

  • 시점 _t_에서 프로세스의 Working Set, _w(t, ㅿt)_는 해당 프로세스가 [t-ㅿt, t] 시간 동안 참조한 페이지들의 집합입니다.

  • _ㅿt_는 일정 크기의 시간으로 **윈도우 크기(Window Size)**라고 합니다.

[프로세스의 Working Set]

[Working Set의 변화]

  • 아래 예시는 윈도우 크기가 5로 과거 5개까지를 Working Set 집합으로 설정하는 것입니다.


출처: https://itdexter.tistory.com/410


마무리

이번 시간에는 가상 메모리의 관리 기법에 대해서 알아보았습니다.

다음 시간에는 파일 시스템에 대해서 알아보겠습니다!

profile
매일 조금씩 성장하고 있는 개발자입니다.

0개의 댓글