본문 바로가기

SW정글사관학교

[SW 정글] 5/6 TIL 가상메모리

반응형

가상 메모리 : 가상 메모리 또는 가상 기억 장치(가상기억기, virtual memory, virtual storage)는 메모리 관리 기법의 하나로, 기계에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 (주) 메모리로 보이게 만드는 것

주기억 장치 용량이 작기 때문에 보조기억장치를 마치 주기억 장치 처럼 사용하여 주기억 장치의 공간을 확대하는 효과를 내기 위한 기억 장치 관리 방법

 

 

 

 

물리 및 가상 주소 방식

 

CPU가  메모리에 접근하는 가장 자연스러운 방식은 물리주소를 사용하는 것이다.

 

위와 같은 접근 방법을 물리 주소 방식이라한다.

 

실행과정은

CPU가 로드 인스트럭션을 실행할때 유효 물리 주소를 생성 -> 이것을 메모리 버스를 거쳐서 메인 메모리에 전달

-> 메인 메모리는 물리주소 4에서 시작하는 4바이트 워드를 선입 -> 이것을 CPU에 보내고 -> 레지스터에 저장한다.

 

초기의 PC들은 물리 주소 방식을 사용했지만, 현대의 프로세스들은 가상주소 방식이라는 주소형태를 사용한다.

 

CPU는 가상 주소 지정으로 가상주소(Virtual Address:VA)를 생성해서 메인 메모리에 접근하며,

이것을 메모리로 보내기 전에 적절한 물리 주소로 변환한다.

CPU 칩 내의 메모리 관리 유닛(MMU:Memory Management Unit)이라고 부르는 전용 하드웨어는 메인메모리에 저장된 참조 테이블을 사용해서 실행 중에 가상주소를 번역하며, 이 테이블의 내용은 운영체제가 관리한다.

 

! 주소 번역 : 가상 주소를 물리 주소로 변환하는 작업

예외 처리처럼 주소 번역은 CPU하드웨어와 운영체제 간에 긴밀한 협력을 필요로 한다.

 

주소 공간

 

가상메모리의 기본 아이디어

- 각 데이터 객체가 다중 독립 주소를 가질 수 있도록 하고, 이 각각의 주소는 서로 다른 주소 공간에서 선택되었다.

메인 메모리의 각 바이트는 가상 주소공간으로부터 선택된 가상주소를 가진다.

 

 

캐싱 도구로서의 VM

가상 메모리는 디스크에 저장된 N개의 바이트 크기의 셀 배열로 구성된다.

각 바이트는 특정한 가상 주소를 가지며, 배열의 인덱스로 작용한다. 디스크 안의 배열 정보는 메인 메모리에 캐시된다.

메모리 계층 구조 안에 있는 캐시는 블록 단위로 분할되며, 디스크와 메인 메모리 사이에 징검다리 역할을 한다.

 

VM system은 가상 메모리를 규정된 사이즈 블록 단위로 분할하여 관리한다.

 

분할된 블록들은 '가상페이지' 라한다.

 

시간상의 어느 시점에서도 가상페이지의 집합은 세 개의 중첩되지 않는 부분집합으로 나누어진다.

- Unallocated : VM 시스템에 의해 아직까지 할당되지 않은 페이지들. 데이터도 차지한 공간도 없다.

- Cached : 현재 물리 메모리에 캐시되어 할당된 페이지들

- Uncached : 물리 메모리에 캐시되지 않은 할당된 페이지들

 

DRAM 캐시가 SRAM 캐시보다 느리지만 미스 비용이 크다. 그래서 운영체제는 SRAM 캐시에 대해서 처리하는 것보다 훨씬 더 복잡한

DRAM 캐시를 위한 교체 알고리즘을 사용한다.

 

디스크의 큰 접근 시간때문에 DRAM은 항상 write-through 대신 write-back을 사용한다.

 

write-through

- cpu가 데이터를 사용하면 캐시에 저장되는데, 데이터가 캐시됨과 동시에 주기억 장치 또는 디스크로 기입되는 방식이다.

  즉, 캐시와 메모리에 둘다 업데이트 하는 방식이다.

- 장점 : 캐시와 메모리에 업데이트를 같이하며, 데이터 일관성을 유지한다.

- 단점 : 속도가 느린 주기억, 보조기억장치에 기록할 때, cpu 대기시간이 필요해서 성능이 떨어진다.

 

write-back

- 캐시로부터 해체될 때에만 주기억, 보조기억 장치에 기록되는 방식

   즉, 데이터를 쓸 때는 캐시에만 기록된다.

- 장점 : write-through보다 상대적으로 빠르다.

- 단점 : 캐시는 업데이트하고 메모리는 하지 않기 때문에 캐시와 메모리가 서로 값이 다른 경우가 발생한다.

 

 

data loss(데이터손실)이 발생하면 안되는 상황 -> write-through

 

빠른 서비스를 원하는 상황 -> write-back

 

을 사용한다.

 

페이지

 

Swapping(= Paging) : 디스크와 메모리 사이에 페이지를 전송하는 동작

 

페이지들은  디스크에서 DRAM으로 스와핑해서 들어오며, DRAM에서 디스크로 스와핑되어 나간다.

 

미스가 발생할 때, 하나의 페이지로 스와핑되어 들어오는 마지막 순간까지 기다리는 전략을 Demand Paging(요구 페이징)이라한다.

 

페이징 기법뿐만아니라 segment기법도 있다. 다음에 알아보도록 하자.

 

 

 

 


 

 

참고

 

Computer Systems : A progammer's Perspective

https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EB%A9%94%EB%AA%A8%EB%A6%AC

 

 

 

화잍팅!

반응형