오늘은 가상 메모리의 관리에 대해서 알아보겠습니다.
➡️ 가상 메모리가 효율적으로 운영되기 위해서는 사상에 걸리는 시간을 최소화해야 하는데 TLB 같은 추가 하드웨어를 사용할 수 있습니다.
즉, 추가적인 비용을 들여 필요한 하드웨어를 장착하여 활용하는 것입니다.
➡️ 실행에 필요한 페이지를 언제 메모리에 적재할 것인가를 결정하는 정책입니다. 크게 보아 요구 적재, 예측 적재 이렇게 2가지로 나눌 수 있습니다.
➡️ 디스크로부터 가져온 페이지를 메모리의 어디에 적재할 것인가를 결정하는 정책입니다.
메모리의 빈 프레임만 발견되면 어떤 프레임에 적재하든 문제가 없고 따라서 배치 정책을 따로 신경 쓰지 않아도 됩니다.
➡️ 프로세스들에게 메모리를 얼마큼씩 줄 것인지를 결정하는 정책입니다.
프로세스에게 같은 개수든 서로 다른 개수든 시스템에서 정해놓은 개수를 사용하도록 하고, 개수의 변동이 없도록 운영한다면 고정 할당(Fixed Allocation)이라고 합니다.
반면에 실행 도중 프로세스에 부여된 프레임의 수에 변동이 있도록 한다면 가변 할당(Variable Allocation)이라고 합니다.
해당 프로세스에게 할당된 프레임 중에서 교체될 페이지를 선택하게 하면 지역 교체(Local Replacement)이고, 메모리의 모든 프레임들이 대상이 되면 전역교체(Global Replacement)라고 합니다.
➡️ 메모리에 빈 프레임이 없을 때 적재될 페이지를 위해 적재된 페이지 중 교체 대상이 되어야 하는데, 이때 어떤 페이지를 선택할 것인가를 결정하는 정책입니다.
각 기법에 대해서 알아보겠습니다.
✅ 적재된 지 가장 오래된 페이지를 교체하는 기법입니다.
FIFO에는 자료구조인 큐(Queue)가 사용되고, 큐에서의 상대적인 위치가 적재된 순서를 나타내는 것으로 교체의 대상은 항상 큐의 맨 앞이 되도록 유지, 관리합니다.
FIFO에서는 부재율을 낮추기 위해서 프레임을 더 추가할 경우 오히려 부재율이 올라가는 현상이 나타납니다.
이를 FIFO 모순(FIFO Anomaly)라고 합니다.
✅ 참조된 지 가장 오래된 페이지를 교체하는 기법입니다.
LRU 스택(Stack)을 사용하여 스택의 가장 밑(Bottom)에 있는 페이지가 교체 대상이 되도록 스택에서의 위치가 상태적인 참조 순서를 나타내도록 관리하는 방법이 있습니다.
➡️ 이 기법은 적재된 후 한번이라도 더 참조된 페이지를 바로 교체시키지 않고 한 번 더 메모리에 머무를 수 있는 기회를 주는 기법입니다.
페이지에 참조 비트를 두어 교체 대상인 페이지의 참조 비트가 0이면 바로 교체되고, 1로 되어 있을 경우 즉, 적재된 후 한번 이상 참조된 경우 이 비트를 0으로 만들면서 큐의 맨 뒤로 보냄으로써 메모리에 머무를 기회를 한 번 더 줍니다.
✅ 프로세스가 특정 시점에서 집중적으로 참조하는 페이지들의 집합을 Working Set이라고 하며, Working Set을 메모리에 적재되도록 함으로써 페이지 부재를 최소화하는 것입니다.
[프로세스의 Working Set]
[Working Set의 변화]
출처: https://itdexter.tistory.com/410
이번 시간에는 가상 메모리의 관리 기법에 대해서 알아보았습니다.
다음 시간에는 파일 시스템에 대해서 알아보겠습니다!