CS/운영체제

가상 메모리(Virtual Memory)

나디아 Nadia 2025. 6. 1. 16:24

가상 메모리 (Virtual Memory)

  • 개요
    • 만약 운영체제나 프로세스가 4GB 메모리에서 동작하도록 만들어졌다면 이보다 작은 메모리의 컴퓨터에서는 실행되지 않음
      → 가상 메모리가 이런 문제를 해결함
    • 가상 메모리의 크기는 이론적으로는 무한대이지만, 실제로는 물리 메모리의 크기와 CPU의 비트 수로 결정됨
      • ex) 32비트 CPU인 경우 표현할 수 있는 주소값
        → 가상 메모리 크기: 4GB (2의 32승)

 

 

 

부족한 물리 메모리를 가상 메모리로 해결하는 방식

여러 프로세스를 실행하려는 경우

  • 32비트 CPU의 경우 최대 메모리 크기가 4GB인데, 4GB를 차지하는 프로세스 5개와 운영체제를 실행시키려면
    운영체제를 제외하고도 적어도 20GB가 필요함
    • 이럴 때 가상 메모리 시스템은
      • 물리 메모리 내용의 일부를 하드디스크에 있는 스왑 영역으로 옮기고,
      • 처리가 필요할 때 물리 메모리로 가져와 실행시킴
         
        운영체제와 프로세스 5개를 실행시킬 수 있음

 

 

 

동적 주소 변환 (Dynamic Address Translation, DAT)

: 메모리 관리자는 물리 메모리와 스왑 영역을 합쳐서 프로세스가 사용하는 가상 주소를 물리 주소로 변환함

  • 동적 주소 변환을 거치면, 프로세스는 마음대로 사용자 데이터를 물리 메모리에 배치할 수 있음

 

 

 

가상 메모리 할당 방식

    • 가상 메모리 시스템에서는 운영체제 영역을 제외한 나머지 영역을 일정한 크기로 나눠서 프로세스에게 할당
    • 할당 방식은 메모리처럼 가변 분할 방식과 고정 분할 방식으로 나뉨
      • 고정 분할 방식 (Fixed Partitioning)
        • 단순 고정 분할: 메모리를 몇 개의 고정 크기 구역으로 나눠서 할당
        • 동적 고정 분할: 프로세스 크기에 따라 미리 정해진 고정 크기 파티션 중 적당한 곳에 할당
      • 가변 분할 방식 (Variable Partitioning)
        • 세그멘테이션 (Segmentation): 논리적인 단위(코드, 데이터, 스택 등)로 나눠서 할당
        • 페이징 (Paging): 메모리를 같은 크기의 페이지 단위로 나눠서 할당

 

 

 

가상 주소와 물리 주소의 매핑

    • 프로세스는 메모리에 직접 접근하지 않음
      메모리 관리자에게 요청하면 메모리 관리자는 그 요청에 맞는 물리 메모리 위치를 찾아서 연결해줌
    • 이때 프로세스가 사용하는 주소는 가상 주소
      • 가상 메모리 시스템에서 가상 주소에 해당하는 데이터는 메모리나 하드디스크의 스왑 영역에 위치함
    • 메모리 관리자는 페이지 테이블이라는 표를 만들어서 가상 주소와 물리 주소를 1대1 매핑 테이블로 관리
      • CPU가 가상 주소로 명령을 실행하려고 하면
        → 페이지 테이블을 참고해서 실제 물리 주소를 찾아줌
        → 만약 메모리에 없고 디스크에 있으면, 디스크에서 메모리로 불러옴 (⇒ 페이지 폴트)