본문 바로가기

Computer science/OS

가상 메모리는 왜 필요할까?

공학은 최소한의 돈으로 최대한의 효율을 뽑아내는 일입니다. 

 

메모리는 스택 메모리, 힙 메모리에서 보았듯이, 프로그램을 실행하는데 필요합니다.

프로그램을 실행하는데 필요한 정보를 저장하기 때문입니다. 

 

메모리에는 캐시, 램, SSD, HDD 등이 있습니다.

캐시가 가장 비싸며 처리 속도가 가장 빠르고, HDD가 가장 싸고 처리 속도가 늦습니다.

 

캐시는 CPU 내부에 있습니다. (캐시 용량에 따라 CPU 가격도 크게 차이가 납니다.)

그러니 비교하기 쉽게 램과 HDD를 비교해보겠습니다. 

http://prod.danawa.com/list/?cate=1131326&15main_11_03
http://prod.danawa.com/list/?cate=1131401

상단의 32GB의 용량을 갖는 램은 17만원입니다.

반면, 1T의 용량을 갖는 HDD는 6만원입니다.

1GB당 가격을 생각하면 램은 대략 5천원 정도이지만, HDD는 60원 정도입니다. 무려 100배 정도 차이가 납니다. 

돈이 많다면 램을 1T 사서 컴퓨터에 부착하면 되겠지만, 1T 램을 사려면 500만원 정도 돈이 들겠네요. 

 

앞에 말했듯이 공학에선 가성비가 중요합니다. 가정용 컴퓨터를 사는데 수천만원을 사용하긴 힘듭니다.

그래서 만든 개념이 메모리의 계층 구조입니다.

 

캐시 - 램 - SSD(HDD)로 메모리 계층 구조를 만들어서, 자주 쓰는 메모리는 빠른 캐시를 이용하고 가끔 쓰는 메모리는 상대적으로 크고 느린 SSD에 저장하게 됩니다. 사용할지 모르는 메모리를 작은 캐시에 모두 올려놓아 괜히 자리를 차지할 필요가 없기 때문입니다. 

(물론 캐시, 램은 휘발성 메모리고 SSD, HDD는 비휘발성 메모리 등의 다른 차이점도 존재합니다. 다만 여기선 메모리 크기와 접근 속도를 비교하여 왜 가상 메모리가 필요한지 알아보겠습니다.)

 

이제 게임을 실행하고 동영상을 시청하는 일반적인 상황을 예로 들겠습니다.

당신의 컴퓨터는 8GB의 램과 1T의 SSD를 가지고 있다고 가정해보겠습니다.

당신이 실행할 게임은 고사양의 게임으로 용량이 12GB입니다. 

게임을 실행하려면 게임 프로그램 데이터를 램에 올려야 하는데 게임 용량보다 램이 더 작습니다. 

따라서 게임을 실행할 수가 없습니다. 게임을 실행하는데 필요한 정보가 램에 다 적재되지 않았으니까요.

 

여기서 가상 메모리가 사용됩니다.  

당장 게임을 실행하는데 필요한 부분만 램에 적재하고, 나머지는 SSD에 그대로 놔두는 것입니다.

예를 들어 로그인을 해야 게임을 접속할 수 있으니까, 로그인 페이지를 구동하는데 필요한 데이터만 먼저 메모리에 적재하는 방식입니다. 

이제 로그인을 했으면 메인 화면이 나올 것입니다. 그럼 로그인 페이지에 사용된 데이터를 다시 SSD로 내리고, 메인 화면에 필요한 데이터를 램에 적재합니다. 

이 과정을 페이징이라고 합니다. 데이터를 하나의 페이지로 묶어, 필요한 페이지를 램에 적재하는 것입니다.

 

동영상 시청도 이와 같습니다. 

동영상도 결국은 1과 0으로 이루어진 데이터를 화면에 보여주는 것입니다. 

모자이크, 점묘화와 같은 원리입니다. 색을 가진 작은 픽셀들이 뭉쳐 하나의 그림을 표현하는 것이죠. 

2시간 길이의 동영상을 볼 때, 동영상 전체를 램에 올릴 필요는 없습니다.

32분 30초를 보고 있다면 32분 ~ 40분 정도의 데이터만 램에 있어도 영화를 상영하는 데는 아무 문제가 없을 것입니다. 

40분이 될 때 32분 ~ 40분 데이터를 SSD로 반납하고, 40분 ~ 50분 데이터를 SSD에서 램으로 적재하면 되니까요. (몇 분 단위로 데이터를 업로드하는지는 정확하지 않습니다.)

 

위 두 예시에서 볼 수 있듯이, 가상 메모리가 있기 때문에 작은 램을 가지고도 램 용량보다 큰 프로그램을 실행할 수 있습니다. 반대로, 가상 메모리가 없다면 동시에 여러 가지 프로그램을 실행하기도 힘들 것이고, 램 용량보다 큰 프로그램은 실행할 수 조차 없을 것입니다. 

 

 

가상 메모리가 왜 필요할까?라는 질문에는 돈을 아끼기 위해서라고 말할 수 있지 않을까 싶습니다.

 

 

'Computer science > OS' 카테고리의 다른 글

스택 메모리, 힙 메모리  (0) 2021.04.02