가상메모리

Virtual Memory

1 개요

일반적으로 한 시스템의 여러 프로세스들은 CPU와 메인 메모리를 공유한다. CPU를 공유하는 부분에 대해서는 일반적으로 순서를 기다리느라 단지 느려질 뿐, 심각한 오류는 발생하지 않는다. 그러나 프로세스들이 존재하는 메모리가 여유가 없이 지나치게 많은 요구에 의해 오염될 경우,[1] 프로그램의 논리와 무관하게 오류가 난다. 이를 방지하기 위한 기술이 바로 가상메모리이다.

이런 가상메모리 기술은 무엇보다도 사용자가 신경 쓸 필요 없이 OS 측면에서 자동으로 작동한다는 점, 또한 사용자가 프로세스를 올리고 내림에 있어서 역시 사용자가 신경 쓸 필요 없이 OS의 가상메모리를 활용하여 자동으로 메모리 관리를 위임할 수 있다는 점이 가장 큰 성공 요인일 것이다.

2 기능

가상 메모리의 주요한 기능은 다음 3가지로 요약할 수 있다.

2.1 메인메모리의 효율적 관리

메인메모리[2]를 하드디스크에 대한 캐시로 설정하여, 당장 사용하는 영역만 유지하고 쓰지 않는 데이터는 하드디스크로 옮긴 뒤, 필요할 때만 램에 데이터를 불러와 올리고 다시 사용하지 않으면 하드디스크로 내림으로써 램을 효과적으로 관리한다.

2.2 메모리 관리의 단순화

각 프로세스마다 가상메모리의 통일된 주소 공간을 배정할 수 있으므로 메모리 관리가 단순해진다.

2.3 메모리 보장

한정된 램이 아닌 거의 무한한 가상메모리 공간을 배정함으로써 프로세스들끼리 메모리 침범이 일어날 여지를 제거한다.

3 방식

하드디스크나 SSD 등의 보조기억장치에 메모리의 내용 일부를 읽고 쓰는 식이다. 가상메모리의 크기와 구조는 운영체제에 따라 다르다.

4 단점

보조기억장치을 백업으로 두다 보니, RAM 용량을 초과하는 데이터를 다룰 경우 속도가 확연하게 느려진다. 보조기억장치 중 빠른 편에 속하는 SSD에서도 느려진 게 눈에 띄는데, 하드디스크라면 더 이상 말할 필요가 없다. 물론 메모리가 없어서 프로그램이 뻗는 것보다는 느리게나마 계속 쓰게 해 줄 수 있게 한다는 의의는 있다.

5 참조

언젠간 다 작성할거야. 언젠간...
  1. 의도치 않게 덧씌워진 경우 등.
  2. 항상 RAM이지는 않으나, 일반적으로 이 역할을 RAM이 하므로 이하 램이라 한다. 또한 보조메모리는 그냥 하드디스크로 부른다. SSD는?