본문 바로가기

기본/운영체제

[OS] 메모리 가상화 (Memory Virtualization): 1. 메모리 가상화의 시작

 

*이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :)

 

 

가상화는 Virtual 머신, 도커, Amazon AWS와 같은 서버 가상화, CPU 가상화 등 여러 종류가 있다.

이번 글에선 그 중 메모리 가상화를 다뤄보려고 한다.

 


🧐 초기의 메모리는 어땠을까?

 

단 하나의 프로세스를 작동시키는 형태였다.

 

 

하나의 프로그램만을 넣고 작동하는 것

보기만 해도 정말 쉬운 형태지만, 그만큼 비효율적이다.

 

후에 multi-programmingtime-sharing을 하게 되면서 여러 개의 프로그램을 짧은 시간 동안 실행하게 되었다.

위 그림의 형태처럼 메모리에 현재 실행할 프로그램을 넣고, 실행하고 또 바꾸는 방식은 속도가 매우 느렸다.

(CPU 처리 속도에 비해 메모리 접근 속도가 더 느리다고 함)

 

이 때문에 차라리 메모리에 프로세스를 갈아끼우며 쓰는 것보다 아래 그림처럼 메모리에 모든 프로그램을 유지하게 되었다.

 

 

 

메모리에 여러 프로그램을 넣을 경우 생길 수 있는 문제가 바로 protection이다.

내가 Process A를 실행하기 위해 접근했는데, Process B나 C에도 접근이 가능하다는 점이다.

 


 

🧐 Memory를 가상화하자

 

위에서 말한 protection 문제를 대비하기 위해서 OS는 메모리를 가상화하였다.

유저가 접근할 수 있는 User mode에선 실질적인 physical address를 알 수 없고, 가상화된 virtual address만을 보여주었다.

 

일단 가상화를 위해 주소 공간(Address Space)이라는 개념을 만들었다.

주소 공간(Address Space)프로세스의 모든 정보가 포함된 공간이다.

 

*code, heap, stack 이외의 data 등 다른 것도 있다.

 

각 영역엔 아래와 같은 정보가 포함되어 있다.

  • Code: 코드
  • Heap: malloc된 데이터, 동적 자료 구조
  • Stack: 지역 변수, 리턴 값 등

 

그림에서 표현된 0KB부터 16KB가 바로 유저들이 볼 수 있는 가상화된 virtual address이다.

실제 physical address와 다르다.

 

이때 OS는 virtual address를 physical address로 매핑하는 역할을 해준다.

(WOW... 놀랍다....)

 


🧐 Memory 가상화의 목표

 

OS가 메모리 가상화를 멋지게 하기 위해 몇 가지 목표가 있다. (ㅋㅋ)

 

  1. Transparency
    유저는 메모리가 가상화되었다는 사실을 몰라야한다.
    즉, 철저하게 가상화된 메모리만을 보여주어야 한다.

  2. Efficiency
    메모리 가상화를 위해 너무 많은 시간, 공간을 사용하면 안된다.

  3. Protection
    자신 이외의 다른 프로세스에 접근하면 안된다.
    모든 프로세스를 isolate 시켜야 한다.

 

이번 글은 메모리 가상화의 시작을 다뤄보았다.

 

결론을 말하자면 현재 메모리는 모든 프로세스를 넣고 사용하며, 메모리 가상화를 통해 유저들에게 가상화된 메모리를 보여준다.

가상화된 메모리와 실제 메모리의 매핑은 운영체제가 해주고 있다.

 

운영체제가 중간에서 이런 역할을 해준다니 정말 놀랍ㄷr...

virtual address와 physical address 사이를 매핑해주는 부분에 대해 의문이 생겼을 것 같은데, (일단 난 생겼다.) 이 부분은 다음 글에서 적어보도록 하겠다.

 

↯ 다음글 ↯

https://koakwak.tistory.com/4

 

[OS] 메모리 가상화 (Memory Virtualization): 2. Address translation

*이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알

koakwak.tistory.com