RAM과 같은 주기억장치의 용량이 부족하다면,주기억장치를 확장하는 방법도 있지만, HDD와SSD등의 보조기억장치 일부 영역을 주기억장치와 논리적으로 합쳐서 사용하는 방법도 있다.이때 합쳐진 보조기억장치의 영역을가상기억장치(Virtual Memory)라고 한다.
가상기억장치의 사용은 같은 용량의 주기억장치를 물리적으로 확장한 것에 비해 처리 속도가 느리다는 단점이 있으나,가격 대비 고용량의 주기억장치를 사용할 수 있다는 것이 장점이다.따라서 프로세스 간의 메모리 침범 가능성이 줄어들며,메모리 관리 측면에서 매우 효율적이다.
가상기억장치는 페이징 기법과(Paging)세그먼테이션 기법(Segmentation)을 사용하여 관리한다.
[참고] 메모리의 단편화
기억 장치에 공백 영역이 발생하거나 데이터가 여러 개의 조각으로 나뉘는 현상을 단편화라고 한다. 단편화에는 내부 단편화와 외부 단편화가 있다. 내부 단편화는 분할된 기억 장치의 빈 영역에 프로세스가 적재될 때 자투리 공간이 발생하는 경우를 말한다. 외부 단편화는 기억 장치의 공백 영역이 프로세스의 크기보다 작을 경우, 큰 프로세스가 적재될 수 없는 경우를 말한다.
2.페이징(Paging)
가상기억장치를 일정한 크기의 페이지(Page)단위로 미리 나누고,주기억장치를 같은 크기의 프레임(Frame)단위로 나누어,가상기억장치 내의 프로세스(Process)를 필요에 따라 주기억장치에 할당하는 기법을페이징(Paging)기법이라고 한다.
페이징(Paging)기법을 사용하는 가상기억장치 시스템에서는 내부 단편화가 발생할 수 있다.마지막 페이지(Page)크기가 프레임(Frame)크기와 일치하지 않을 수 있기 때문이다.내부 단편화는 각 프로세스(Process)의 마지막 페이지에서 소량(평균적으로 각 프로세스 당 반 페이지 정도의 내부 단편화가 발생할 수 있다.반면,외부 단편화는 발생하지 않는다.페이지(Page)크기와 프레임(Frame)크기를 같이 분할하고,모든 빈 프레임(Frame)을 프로세스(Process)에게 할당할 수 있기 때문이다.
3.세그먼테이션(Segmentation)
가상기억장치 내의 프로세스(Process)가 주기억장치에 적재될 때,가변적인 크기의 세그먼트(Segment)단위로 논리적으로 나누어 주기억장치에 동적으로 할당하는 기법을세그먼테이션(Segmentation)기법이라고 한다.
페이지,프레임과 달리 분할된 세그먼트(Segment)영역들은 서로 크기가 다르다.운행 중,분할된 세그먼트(Segment)영역들은 자유 영역(공백)으로 되돌려질 수 있는데,이 자유 영역들이 너무 작을 때 외부 단편화(적재 불가)가 발생할 수 있다.반면,내부 단편화는 발생하지 않는다.
4.혼합 기법
페이징(Paging)기법과 세그먼테이션(segmentation)기법을 혼하여 사용하는 기법을혼합 기법이라고 한다.혼합 기법에서는 모든 세그먼트(Segment)를 페이지(Page)단위로 다시 나누어 외부 단편화 문제를 해결할 수 있다.그러나 내부 단편화 현상은 여전히 존재할 수 있다.
[참고] Windows 가상 메모리 설정
Windows 운영체제에서 가상기억장치를 설정하기 위해서는 아래 경로를 통해 가상 메모리 변경 창을 실행하면 된다.
시스템 속성 → 고급 탭 → 성능 설정(S) → 고급 탭 → 가상 메모리 → 변경(C)
드라이브별로 가상기억장치 사용 여부 및 처음 크기, 최대 크기 설정을 할 수 있으며, 시스템이 자동으로 관리하도록 설정해 둘 수도 있다. 게임과 같은 일부 응용프로그램의 경우 주기억장치(RAM) 용량이 넉넉하더라도 프로그램 설계상 소용량의 가상 기억공간을 요구할 수도 있다. 그러므로 주기억장치 용량이 넉넉하다고 해서 가상기억장치를 아예 비활성화하는 것보다는 프로그램에 따라 소용량을 할당해 주는 것이 가장 바람직하다.