저장소 logo 저장소

1. 가상 메모리 개념

가상 메모리(Virtual Memory)는 각 프로세스에 연속되고 독립적인 가상 주소 공간을 제공하고,
실제로는 그중 필요한 부분만 물리 메모리에 적재하여 실행할 수 있게 하는 메모리 관리 기법 의미. [1][2]

이 방식 덕분에 프로세스 전체가 항상 물리 메모리에 올라와 있지 않아도 실행 가능. [1][2]

또한 사용자 프로그램은 물리 메모리의 실제 배치 방식과 분리된 주소 공간을 사용하므로,
운영체제가 메모리 보호와 관리 효율을 높일 수 있음. [1][2]


2. 왜 필요한가

가상 메모리는 다음 이유로 중요.

즉, 프로그램 입장에서는 큰 연속 주소 공간을 사용하는 것처럼 보이지만,
운영체제는 필요한 페이지 중심으로 메모리를 관리하는 구조.


3. 요구 페이징 (Demand Paging)

가상 메모리는 보통 요구 페이징(Demand Paging) 방식과 함께 설명됨. [1][2]

요구 페이징은 실제로 참조되는 시점에 페이지를 메모리로 가져오는 방식 의미. [1][2]

즉, 프로세스를 시작할 때 모든 페이지를 한꺼번에 적재하지 않고,
당장 필요한 페이지부터 적재하는 구조.

이때 페이지 테이블에는 각 페이지가 현재 메모리에 있는지 나타내는
유효 / 무효 비트(valid / invalid bit)를 둘 수 있음. [2]

장점은 다음과 같음.


4. Page Fault

CPU가 참조한 페이지가 현재 물리 메모리에 없을 때 page fault가 발생. [1][2]

일반적인 처리 흐름은 다음과 같음.

  1. CPU가 어떤 가상 주소를 참조
  2. MMU가 페이지 테이블을 확인
  3. 해당 페이지가 메모리에 없으면 page fault trap 발생
  4. 운영체제가 해당 페이지를 보조기억장치에서 읽어 빈 프레임에 적재
  5. 페이지 테이블을 갱신하고, 중단된 명령을 다시 실행 [2]

즉, page fault는 단순 오류라기보다
필요한 페이지를 나중에 적재하기 위한 정상적인 제어 흐름의 일부일 수 있음. [2]


5. 페이지 교체 (Page Replacement)

Page fault가 발생했을 때 빈 프레임이 없다면,
현재 메모리에 있는 페이지 중 하나를 내보내고 새 페이지를 적재해야 함.
이 과정을 페이지 교체(Page Replacement)라고 함. [1][2]

페이지 교체의 목표는 전체 page fault 횟수를 줄이는 것. [1][2]

대표 알고리즘은 다음과 같음.

알고리즘 설명
FIFO 메모리에 가장 먼저 들어온 페이지를 먼저 교체
OPT(최적 페이지 교체) 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체
LRU 가장 오랫동안 참조되지 않은 페이지를 교체
LFU 참조 횟수가 가장 적은 페이지를 교체

여기서 OPT는 이론적으로 가장 좋은 기준이지만,
미래 참조를 알아야 하므로 실제 그대로 구현할 수는 없음. [2]

또한 LFU는 카운트 관리 비용이 크고 실제 사용 패턴을 항상 잘 반영하지 못해
전형적인 설명용 알고리즘으로 더 자주 다뤄짐. [2]


6. 면접에서 같이 말하면 좋은 포인트

가상 메모리 질문에서는 보통 다음 흐름으로 이어짐.

  1. 가상 메모리란 무엇인가
  2. 요구 페이징이 무엇인가
  3. page fault가 어떻게 처리되는가
  4. 페이지 교체 알고리즘에는 무엇이 있는가

즉, 가상 주소 공간, 요구 페이징, page fault, page replacement
한 흐름으로 연결해서 설명하면 정리가 잘 됨.


핵심 정리

가상 메모리

  • 프로세스에 연속된 가상 주소 공간을 제공하는 메모리 관리 기법
  • 필요한 부분만 물리 메모리에 적재하여 실행 가능

요구 페이징

  • 실제로 참조되는 시점에 필요한 페이지를 적재하는 방식

Page Fault

  • 참조한 페이지가 현재 메모리에 없을 때 발생
  • 운영체제가 페이지를 적재한 뒤 명령을 다시 실행

페이지 교체

  • 빈 프레임이 없을 때 기존 페이지를 내보내는 과정
  • 대표 알고리즘: FIFO, OPT, LRU, LFU

참고 자료

  1. KOCW, 운영체제 강의자료
    https://contents.kocw.or.kr/KOCW/document/2015/cup/weonsunghyun/8.pdf
  2. University of Illinois Chicago, Operating Systems Notes, “Virtual Memory”
    https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html

« Segmentation