Operating Systemmedium면접 빈도: high

Virtual Memory & Demand Paging

#virtual-memory#demand-paging#page-replacement#page-fault#memory-management

📚먼저 읽어야 할 개념

이 문서를 이해하려면 아래 개념을 먼저 학습하는 것이 좋습니다.

Virtual Memory & Demand Paging

📝 가상 메모리란?

실제 메모리 용량보다 커 보이게 하는 기술

프로세스 전체가 메모리에 없어도 실행 가능

RAM과 디스크를 하나의 추상화된 메모리 영역으로 제공


🎯 등장 배경

1. 시스템 안정성 확보

프로그램 비정상 종료 시 시스템 전체 영향 방지

프로세스 공간을 가상 세계로 제한


2. 큰 프로세스 실행

실제 메모리보다 큰 프로세스 실행


3. 참조 지역성 활용

전체 프로세스가 메모리에 없어도 실행 가능


✅ 가상 메모리 장점

1. 메모리 크기 제한 없음

프로그램이 실제 물리 메모리 크기에 제한받지 않음


2. 멀티 프로그래밍

여러 프로그램 동시 실행

CPU 이용률과 처리율 증가


3. I/O 감소

프로그램 스왑 필요 I/O 감소


🗺️ 가상 주소 공간

사용자/프로세스의 논리적 메모리 공간

0번지부터 시작

MMU(Memory Management Unit)에 의해 물리 주소로 변환


🔧 핵심 기술

1. 요구 페이징 (Demand Paging)

필요할 때 페이지를 메모리에 적재


2. 페이지 교체 (Page Replacement)

메모리 부족 시 페이지 교체


📄 요구 페이징 (Demand Paging)

논리 주소 공간의 각 페이지를 실제로 필요할 때만 메모리 적재


특징

사용 안 하는 페이지: 스왑 공간에 저장

메모리 절약

스왑 시간 감소


🔍 Valid/Invalid Bit

페이지의 논리적 위치 구분


Valid

페이지가 메모리에 있는 상태


Invalid

페이지가 스왑 공간에 있는 상태


🚨 Page Fault 처리 과정

1. Page Table 참조

프로세스가 새 데이터 접근

해당 페이지는 Invalid


2. Page Fault Trap 발생

내부 인터럽트 발생

OS 인터럽트 핸들러로 전달


3. I/O 작업 시작

스왑 공간에서 데이터 읽기


4. 메모리 적재

필요한 데이터를 메모리에 적재


5. Page Table 갱신

Invalid → Valid


6. 프로세스 재시작

인터럽트 종료

프로세스 진행


⚡ 성능 고려 사항

1. 이론적 성능

Page Fault율에 영향

통상 10배 성능 저하

참조 지역성으로 실제 저하는 드묾


2. 스왑 공간 관리

일반 파일 I/O보다 빠른 I/O 제공

큰 데이터 입출력 단위(block) 사용

파일 검색, 간접 할당 기법 미사용


3. Page Fault 최소화

프로세스 형태에 의존적

페이지 교체 알고리즘에 의존적


🔄 페이지 교체 (Page Replacement)

메모리 과할당 시 페이지 교체


📊 메모리 과할당

물리 메모리 모든 영역이 할당된 상태

빈 메모리 프레임 없음


💡 해소 방법

1. 프로세스 종료

메모리 관리 목적 위배


2. 프로세스 스와핑

전체 스와핑은 비용 큼

멀티 프로세싱 정도 낮춤


3. 일부 페이지 스와핑

페이지 교체

요구 페이징의 필수 요소


🔧 페이지 교체 알고리즘

목표: 페이지 폴트 최소화


1. FIFO (First In First Out)

가장 오래된 페이지 교체

Queue로 관리

간단하지만 성능 보장 안 됨

Belady 모순 발생 가능


2. OPR (Optimal Page Replacement)

가장 오랫동안 사용 안 될 페이지 교체

Belady 모순 없음

실제 구현 불가능 (미래 예측 필요)

다른 알고리즘 성능 비교 기준


3. LRU (Least Recently Used)

OPR에 근사한 방법

과거 참조 이력 기반

최근에 사용 안 된 페이지 교체


LRU 구현

페이지 이력 기록 필요

하드웨어 지원 필요

스택으로 페이지 정보 유지

최근 참조 페이지 → 스택 top

교체 페이지 → 스택 bottom


4. Counting

페이지 사용 횟수 기록

LFU/MFU로 나뉨


LFU (Least Frequently Used)

참조 횟수 가장 적은 페이지 교체


MFU (Most Frequently Used)

참조 횟수 가장 많은 페이지 교체


❓ 면접 질문 예시

Q1. 가상 메모리란 무엇인가요?

답변: 가상 메모리는 실제 메모리 용량보다 커 보이게 하는 기술로, 프로세스 전체가 메모리에 올라가지 않아도 실행할 수 있습니다. RAM과 디스크를 하나의 추상화된 메모리 영역으로 제공하며, 참조 지역성을 활용하여 필요한 부분만 메모리에 적재하고 나머지는 디스크에 저장합니다.

Q2. 요구 페이징이란 무엇인가요?

답변: 요구 페이징은 논리 주소 공간의 각 페이지를 실제로 필요할 때만 메모리에 적재하는 기법입니다. 사용되지 않는 페이지는 스왑 공간에 저장되어 메모리를 절약하고 스왑 시간을 감소시킵니다.

Q3. Page Fault 처리 과정을 설명해주세요.

답변:

  1. 프로세스가 새 데이터 접근 시 Page Table 참조하여 Invalid 확인, 2) Page Fault Trap 발생하여 OS 인터럽트 핸들러로 전달, 3) 스왑 공간에서 데이터 읽는 I/O 작업 시작, 4) 필요한 데이터를 메모리에 적재, 5) Page Table을 Invalid에서 Valid로 갱신, 6) 프로세스 재시작하여 진행합니다.

Q4. 페이지 교체 알고리즘의 종류는?

답변: FIFO는 가장 오래된 페이지를 교체하지만 Belady 모순이 발생할 수 있습니다. OPR은 가장 오랫동안 사용 안 될 페이지를 교체하여 최적이지만 미래 예측이 필요해 구현 불가능합니다. LRU는 OPR에 근사하여 과거 참조 이력 기반으로 최근에 사용 안 된 페이지를 교체합니다. Counting은 LFU와 MFU로 나뉘어 사용 횟수를 기록합니다.

Q5. LRU 알고리즘은 어떻게 구현하나요?

답변: LRU는 페이지 이력을 기록할 수 있어야 하고 하드웨어 지원이 필요합니다. 스택으로 페이지 정보를 유지하며, 최근 참조된 페이지는 스택 top으로 이동하고, 교체될 페이지는 스택 bottom에 위치합니다.


📚 원본 참고 자료

출처: 2023-CS-Study

추가 학습 자료

🔗관련 문서

이 개념과 함께 학습하면 좋은 문서들입니다.