포털:고등학교/정보·통신 계열 전문 교과(2015)/컴퓨터 시스템 일반/가상 기억 장치 관리

위키배움터

1. 가상기억장치란?


실행될 프로그램이나 데이터가 주기억 장치보다 크거나 여러 개인 경우 주기억 장치 공간이 부족하여 프로그램이 제대로 실행되지 못하는 상황이 발생할 경우에 사용하는 장치이다. 실행에 필요한 부분만 주기억 장치에 저장하고, 사용하지 않는 프로그램을 보조기억장치 안의 특별한 영역으로 옮겨서, 그 보조기억장치 부분을 주기억장치처럼 사용할 수 있다. 이때 사용되는 보조기억장치의 일부분을 가상기억장치라고 한다. 프로그램을 여러 개의 작은 블록 단위로 나누어서 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 나누어 처리하는 가상기억장치를 사용하면 주기억장치의 크기보다 큰 프로그램을 실행할 수 있고, 주기억장치의 이용률과 다중프로그램의 효율을 높일 수 있다.




2. 가상기억장치의 장단점?


(1) 장점

- 시스템 관리적 측면 : 실제의 물리적 기억 용량에 구애받지 않고 어떤 크기를 가진 프로세스라도 실행 가능하다. 우선순위를 고려하여 실행 속도를 조절할 수 있다.

- 사용자 입장 : 프로그래머들이 가상기억 장치 관리를 위한 세부적 사항들을 고려할 필요가 없다.


(2) 단점

- 가상기억 장치는 일반적으로 가상기억 장치를 채택하지 않는 시스템에서의 실행 속도보다 느리며 소프트웨어를 통해 추가로 관리해야 한다.




3. 가상 메모리 관리?


가상기억 장치를 관리하는 응용 프로그램의 한 부분이다. 페이지 단위로 관리할 수도 있으며, 세그먼트 단위로 관리할 수도 있고 또 세그먼트와 페이지를 섞어서 같이 관리할 수도 있다.


  • 세그먼트 : 전체 길이를 같은 크기의 여러 개 구간 또는 부위로 나누었을 때 한 개 구간 또는 부위


(1) 블록 분할 방법

일반적으로‘페이징 기법'‘세그먼테이션 기법’으로 분류할 수 있다.


- 페이징기법 : 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜서 실행하는 기법이다. 프로그램을 일정한 크기로 나눈 단위를 페이지라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임이라고 한다. 페이징 기법을 사용하게 되면 내부 단편화가 발생할 수 있다. 외부 단편화는 발생하지 않는다.


- 세그먼테이션 기법 : 가상기억장치에 보관되어 있는 프로그램을 배열이나 함수 등과 같은 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜서 실행시키는 기법이다. 기억공간을 최대한 낭비 없이 효율적으로 사용하기 위해서 사용된다. 세그먼테이션 기법은 페이징 기법과 반대로 내부 단편화는 발생하지 않지만 마지막에 외부 단편화가 발생할 수도 있다.


  • 내부 단편화 : 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상
  • 외부 단편화 : 중간 중간에 생긴 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황


(2) 페이지 교체 알고리즘

- 최적교체 (OPT : Optimal Replacement) : 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법이다. 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘이지만 각 페이지의 호출 순서와 참고 상황을 미리 예측해야 하므로 실현 불가능한 기법이다.


- FIFO (First In First Out) : 가장 간단하게 들어온 순서대로 나가는 선입선출 방법이다. 초기에 쓰였던 알고리즘으로 설계가 간단하다. 하지만 프로세스에 할당된 페이지 프레임 수가 증가하면 페이지 부재의 수가 감소하는 것이 당연하더라도 페이지 프레임 수가 증가할 때, 현실적으로 페이지 부재가 더 증가하는 모순적인 현상이 발생하는 기법이다.


- LRU (Least Recently Used) : 페이지에서 교체할 때 가장 오랫동안 사용하지 않은 것을 교체하는 기법으로 각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이다.


- NUR (Not Used Recently) : LRU와 비슷한 알고리즘으로 최근에 사용하지 않은 페이지를 교체하는 기법이다. 최근의 사용 여부를 확인하기 위해 각 페이지마다 참조비트와 변형비트 2개의 비트를 사용한다. 참조비트와 변형비트의 값에 따라 순서가 결정되고 페이지를 교체하는 기법이다.


  • 참조비트 : 주기억 장치의 페이지 단위로 설정되어 있는 제어 비트


- LFU (Least Frequently Used) : 사용빈도가 가장 낮은 페이지를 교체하는 기법이다.