IT/Hardware

[OS] Virtual Memory

wakelight23 2025. 1. 22. 21:17

가상 메모리 (Virtual Memory)

● 컴퓨터 시스템에서 물리적 메모리(RAM)의 크기보다 더 큰 메모리 공간을 사용할 수 있게 하는
   메모리 관리 기법

 

● 물리적으로 용량을 늘리면 되는데 왜 필요할까?

  - 초기 컴퓨터 시스템에서는 프로그램이 RAM에 직접 적재되어야 했다.

  - 최근에야 RAM에 용량이 높아졌고 비용적인 부분도 효율적으로 변했지만, 초기에는 그렇지 못함.

  - 메모리 용량이 부족할 경우 프로그램 실행이 제한되거나, 여러 프로그램을 동시에 실행하지 못함.

→ 물리적 메모리보다 큰 주소 공간을 제공하고, 여러 프로그램을 동시 실행할 수 있도록 만들어준다.

 

● 작동 원리

  - 실제 물리적 메모리 주소 대신 가상 주소(Virtual Address)를 사용하여 데이터를 읽고 쓴다.

  - CPU가 가상 주소로 데이터를 접근하려 할 때, 주소 변환(Address Translation) 과정을 거쳐
    가상 주소를 물리주소(Physical Address)로 변환

  - 컴퓨터에서 실행되는 프로그램은 가상 주소를 통해 메모리에 접근

     → 실제 데이터는 물리 주소에 저장

  - 가상 주소는 프로세스마다 고유의 메모리 공간을 제공하는 역할을 함

  - 서로 다른 프로세스가 동일한 가상 주소를 사용하더라도 출동하지 않고 독립적으로 실행

  - 변환 작업에는 메모리 관리장치(MMU: Memory Management Unit)에 의해 수행

 

 

Page & Page Table

● 가상 메모리 시스템에서 메모리 단위 = 페이지(Page)

  ○ Page : 가상 메모리와 물리 메모리를 일정한 크기로 나눈 단위

  ○ Page Table : 가상 주소와 물리 주소의 매핑 정보를 저장하는 테이블

     - 각 페이지마다 가상 주소와 물리 주소의 대응 관계가 저장되어 있으며, 이를 통해 주소 변환

 

Page, Page Table 원리

 

● 가상 메모리 시스템

  - 메모리 공간의 효율성을 위해 사용되지 않는 페이지는 보조 기억 장치(SSD, HDD)에 임시 저장

     → 필요할 때만 메모리에 로드

 

 ○ 페이지 부재(Page Fault) :

   - CPU가 접근하려는 가상 주소에 해당하는 페이지가 물리 메모리에 없는 경우

   - 페이지 부재 발생 시 보조 기억 장치에서 해당 페이지를 메모리로 가져오는 작업을 수행

 

 ○ 스왑(Swap) :

   - 메모리가 포화 상태인 경우, 더 이상 필요하지 않는 페이지를 보조 기억 장치로 내보내는 작업

 

 

가상 메모리를 사용하면 좋은 점과 비효율적인 것

● 좋은 점

  - 효율적인 메모리 사용으로 물리적 메모리보다 큰 프로그램도 실행 가능

  - 각 프로세스가 고유의 가상 주소 공간을 가지기 때문에,
    다른 프로세스에 영향을 미치지 않고 안정적으로 실행이 가능하다.

  - 페이지 테이블을 사용한 접근 제어로 프로세스 간 메모리 접근을 제한할 수 있다.

    = 메모리 보호

 

● 비효율적인 것

  - 페이지 부재가 빈번하면 디스크 I/O가 많아져 성능이 저하된다.

  - 페이지 테이블을 유지하고 관리하는 데 추가적인 메모리와 연산이 필요하다.

  - 물리 메모리의 작은 페이지 단위로 인해 CPU 캐시가 효율적으로 동작하지 않는다.

    = Cahce Miss