해나아부지 개발일지

Virtual Memory란? 본문

Developers/Coding Question

Virtual Memory란?

__APPA 2020. 8. 6. 23:30

가상 메모리 또는 가상 기억 장치

RAM을 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식

이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로도 사용된다.

가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address) 라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소(physical address) 또는 실주소(real address)라고 한다. 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라고 한다.

가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다. 대부분의 현대적 아키텍처와 운영 체제는 가상 메모리 기능을 제공하며, 각 응용 프로그램에 더 적합한 메모리 관리를 위해 어도비 포토샵과 같은 일부 응용 프로그램은 스스로 가상 메모리를 관리하기도 한다.

가상 메모리의 개념은 1957년에 발표되었다. 실제 적용된 것은 맨체스터 대학교가 Atlas용으로 1961년에 개발한 것이 최초이다. 1965년에 MIT가 개발한 멀틱스 시스템 이후 본격적으로 채용되기 시작했다.

가상 메모리는 크게 나누어 세그먼트(segment) 방식과 페이징 방식의 2종류가 있다. 예를 들어 MC68000 시스템에서는 68451(세그먼트(segment) 방식)과 68851(페이징 방식) 두 가지의 MMU가 준비되어 있었다.

 

메모리 세그먼트 방식(Memory segmentation)

메모리 보호를 수행하는 가장 일반적인 방법 가운데 하나이다. 또다른 방식으로는 페이징이 있다. 세그먼트를 사용하는 컴퓨터 시스템에서 메모리 위치를 참조하는 명령어 피연산자는 세그먼트와 그 세그먼트 안의 오프셋을 증명하는 값을 포함하고 있다.

이러한 이용은 인텔 8086, 인텔 8088과 같은 초기 x86 프로세서에 쓰인 메모리 세그먼트의 이용과 혼동해서는 안 된다. 왜냐하면 이들은 어떠한 보호 기능도 제공하지 않았기 때문이다. (어떠한 프로그램도 제한 없이 세그먼트에 쉽게 접근할 수 있었고 세그먼트는 64 KiB라는 고정 길이와 시작 위치로만 구성되어 있었다.) 인텔 80286 이후의 메모리 세그먼트 방식에는 보호 기능이 제공된다.

 

페이징 기법(paging)

컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치[a]로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다.즉, 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지(page)라고 한다. 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.

 

 

 

'Developers > Coding Question' 카테고리의 다른 글

UTF-8  (0) 2020.10.08
비대칭 암호화란  (0) 2020.09.03
Cashe란?  (0) 2020.08.07
동적 계획법(Dynamic Programming)  (0) 2020.04.29
PNG 와 JPEG 차이점은?  (0) 2020.04.17
Comments