본문 바로가기

CS Fundamental

[CS Fundamental] 가상 메모리란?

https://www.techtarget.com/searchstorage/definition/virtual-memory

1) 가상 메모리란?

- 가상 메모리는 보조 메모리를 주 메모리의 일부인 것처럼 사용할 수 있는 

  메모리 관리 기술입니다. 

  가상 메모리는 컴퓨터 운영 체제(OS)에서 일반적으로 사용되는 기술입니다. 

 

- 가상 메모리는 하드웨어와 소프트웨어를 모두 사용하여

  컴퓨터가 물리적 메모리 부족을 보상하고,   

   RAM에서 디스크 저장소로 데이터를 일시적으로 전송할 수 있도록 합니다. 

   메모리 청크를 디스크 파일에 매핑하면 컴퓨터가 보조 메모리를 주 메모리인 것처럼 

   처리할 수 있습니다. 

 

- 오늘날 대부분의 개인용 컴퓨터(PC)에는 최소 8GB(기가바이트)의 RAM이 있습니다.

  하지만 때로는 이것만으로는 여러 프로그램을 한 번에 실행하기에 충분하지 않습니다.

  이 때, 가상 메모리가 등장합니다. 

 

- 가상 메모리는 최근에 사용되지 않은 데이터를 하드 드라이브나 SSD와 같은 

  저장 장치로 스왑하여 RAM을 비웁니다. 

 

- 가상 메모리는 시스템 성능 향상, 멀티태스킹 및 대용량 프로그램 사용에 중요합니다.

  그러나 사용자는 가상 메모리에 지나치게 의존해서는 안됩니다.

  가상 메모리는 RAM보다 상당히 느리기 때문입니다. 

  

- OS가 가상 메모리와 RAM 간에 데이터를 너무 자주 스왑해야 하는 경우

  컴퓨터 속도가 느려지기 시작합니다.

  이를 스래싱(thrashing)이라고 합니다. 

 

- 가상 메모리는 실제 메모리(RAM)이 비쌌던 시기에 개발 되었습니다.

  컴퓨터에는 한정된 양의 RAM이 있으므로

  여러 프로그램을 동시에 실행하면 결국 메모리가 고갈됩니다.

  

- 가상 메모리를 사용하는 시스템은 하드 드라이브의 일부를 사용하여 RAM을 에뮬레이트합니다.

  가상 메모리를 사용하면 시스템은 더 크거나 여러 프로그램을 동시에 실행하여

  더 많은 RAM을 구매하지 않고도 각 프로그램이 더 많은 공간이 있는 것처럼 작동할 수 있습니다. 

 

 

2) 가상 메모리의 작동 방식

- 가상 메모리는 하드웨어와 소프트웨어를 모두 사용하여 작동합니다.

  애플리케이션이 사용중일 때 해당 프로그램의 데이터는 RAM을 사용하여 물리적 주소에 저장됩니다.

  메모리 관리 장치(MMU)는 주소를 RAM에 매핑하고 주소를 자동으로 변환합니다.

  예를 들어, MMU는 논리적 주소 공간을 해당 물리적 주소에 매핑할 수 있습니다. 

 

- 어느 시점에서든 RAM 공간이 더 시급한 작업에 필요한 경우 데이터를 RAM에서 가상 메모리로

  스왑할 수 있습니다.

  컴퓨터의 메모리 관리자는 물리적 메모리와 가상 메모리 간의 이동을 추적합니다.

  해당 데이터가 다시 필요한 경우 컴퓨터의 MMU는 컨텍스트 전환을 사용하여 실행을 재개합니다. 

 

- 가상 메모리를 물리적 메모리에 복사하는 동안 OS는 고정된 수의 주소가 있는 메모리를

  페이지 파일 또는 스왑 파일로 나눕니다.

  각 페이지는 디스크에 저장되고, 페이지가 필요할 때 OS는 디스크에서 주 메모리로 복사하고

  가상 주소를 실제 주소로 변환합니다. 

 

- 그러나 가상 메모리를 물리적 메모리로 스왑하는 프로세스는 다소 느립니다.

  즉, 가상 메모리를 사용하면 일반적으로 성능이 눈에 띄게 저하됩니다.

  스와핑으로 인해 RAM이 더 많은 컴퓨터는 성능이 더 좋다고 여겨집니다. 

 

 

3) 가상 메모리의 종류

- 컴퓨터의 MMU(메모리 관리 장치)는 가상 메모리 작업을 관리합니다.

  대부분의 컴퓨터에서는 MMU 하드웨어가 중앙 처리 장치(CPU)에 통합되어 있습니다. 

  CPU는 또한 가상 주소 공간을 생성합니다.

  일반적으로 가상 메모리는 페이지 방식(paging) 또는 세그먼트 방식(segmentation)으로 나눕니다. 

 

(1) 페이지 방식(Paging)

- 페이지 방식은 메모리를 섹션 또는 페이지 파일로 나눕니다.

  컴퓨터가 사용 가능한 RAM을 다 사용하면, 사용하지 않는 페이지는 하드 드라이브의 스왑 파일로 전송됩니다.

  스왑 파일은 컴퓨터의 RAM을 확장하는 가상 메모리로 사용되는 하드 드라이브의 공간입니다.

 

- 스왑 파일이 필요할 때, 페이지 스와핑(page swapping)이라는 프로세스를 통해 다시 RAM으로 전송됩니다.

  이 시스템은 컴퓨터의 운영 체제(OS)와 응용 프로그램이 실제 메모리가 부족하지 않도록 보장합니다.

 페이지 파일의 최대 크기는 컴퓨터의 물리적 메모리 크기의 1.5배에서 4배까지 가능합니다. 

 

- 가상 메모리 페이지 방식은 페이지 테이블(page table)을 사용하여,

  OS와 응용 프로그램이 사용하는 갓아 주소를 MMU가 사용하는 물리적 주소로 변환합니다.

  페이지 테이블의 항목은 페이지가 RAM에 있는지 여부를 나타냅니다.

  OS나 프로그램이 RAM에서 필요한 것을 찾지 못하면,

  MMU는 페이지 폴트(page fault) 예외를 발생시켜, OS가 필요한 페이지를 메모리로 다시 이동하도록 합니다.

  페이지가 RAM에 있으면, 그 가상 주소는 페이지 테이블에 나타납니다. 

 

(2) 세그먼트 방식(Segmentation)

- 세그먼트 방식은 가상 메모리를 다른 길이의 세그먼트로 나누어 관리합니다.

  메모리에서 사용되지 않는 세그먼트는 하드 드라이브의 가상 메모리 공간으로 이동할 수 있습니다. 

  세그먼트화된 정보나 프로세스는 세그먼트 테이블(segment table)에서 추적되며,

  이 테이블은 세그먼트가 메모리에 있는지, 수정되었는지, 물리적 주소가 무엇인지 등을 보여줍니다.

 

- 또한, 세그먼트 방식에서는 파일 시스템이 프로세스의 잠재적인 주소 공간에 매핑된 세그먼트들로만 구성됩니다.