본문 바로가기

운영체제

[운영체제] Virtual Memory

728x90
반응형

Virtual Memory

 

프로세스의 필요한 부분만 메모리에 적재하여 실행하는 방식이다.

 

해당 방식을 통해 논리적 주소 공간과 물리적 주소 공간을 분리하여 공간 낭비를 최소화할 수 있다.

 

 

 

 

 

Demand Paging

 

필요한 페이지만 메모리에 로드하는 기법을 의미한다.

 

Valid/Invalid Bit를 사용한다.

Valid는 메모리에 적재되어 있으며 Invalid는 메모리에 없고 디스크에서 가져와야 한다.

 

Page Fault Handling 과정

1. MMU가 page fault trap 발생

2. OS가 처리 (page fault handler 실행)

3. 필요한 page를 디스크에서 메모리로 가져옴

4. page table 갱신 후 프로세스 재개

 

Demand Paging는 I/O 횟수를 감소, 메모리 사용량을 절감, 빠른 응답 시간, 다중 프로그래밍 등의 장점이 있다.

 

 

 

 

Page Replacement

 

교체할 페이지를 선택하는 알고리즘이다.

 

Page Replacement의 목표는 Page Fault Rate를 최소화하는 것이다.

 

대표적으로 아래와 같은 알고리즘이 존재한다.

 

1. 최적 교체 (OPT, Optimal Algorithm)

가장 나중에 사용될 페이지를 교체한다.

이론적으로 최적이지만, 미래의 참조를 알 수 없기 때문에 실제 구현은 불가능하다.

 

2. FIFO (First In First Out)

먼저 들어온 페이지를 먼저 교체한다.

FIFO Anomaly 발생 가능성이 존재한다. (프레임이 증가해도 page fault 증가 가능)

 

3. LRU (Least Recently Used)

가장 오래 전에 참조된 페이지를 교체한다.

하드웨어 지원을 필요로 한다.

 

4. Clock Algorithm (Second Chance)

FIFO 방식 + 참조 비트(Reference Bit)를 사용한다.

1이면 기회를 부여하고, 0이면 교체한다.

 

5. LFU (Least Frequently Used)

참조 횟수가 가장 적은 페이지를 교체한다.

장기적인 참조 패턴을 반영하지만, 최근성 반영이 어렵다.

 

 

 

 

 

Page Frame Allocation

 

Equal Allocation: 모든 프로세스에 동일한 프레임 할당한다.

Proportional Allocation: 프로세스 크기에 비례하여 할당한다.

Priority Allocation: 프로세스 우선순위에 따라 다르게 할당한다.

 

 

Global vs Local Replacement

Global Replacement: 프로세스 간 프레임 공유 (교체 대상이 다른 프로세스 프레임일 수도 있다.

Local Replacement: 프로세스 내부에서만 프레임 교체한다.

 

 

 

 

 

 

Thrashing

 

페이지 교체가 지나치게 자주 발생하여 CPU 이용률이 급감하는 현상을 의미한다.

 

다중 프로그래밍이 증가할수록 page fault가 증가하여 I/O가 증가하기 때문에 CPU 사용률이 하락한다.

 

이때 두 가지 해결 방법을 사용할 수 있다.

 

Working Set Model

Locality(지역성) 개념 활용하여 일정 기간 참조된 페이지 집합 유지

Working Set이 메모리에 없으면 swap out (suspend)

 

PFF (Page Fault Frequency) Scheme

Page fault rate이 높으면 프레임 추가, 낮으면 프레임 감소

빈 프레임이 없으면 일부 프로세스 swap out

 

 

 

 

 

 

728x90
반응형

'운영체제' 카테고리의 다른 글

[운영체제] 5주차 Quiz  (0) 2025.02.09
[운영체제] Deadlocks  (0) 2025.02.09
[운영체제] 3주차 Quiz  (0) 2025.01.26
[운영체제] Process Synchronization  (0) 2025.01.26
[운영체제] 2주차 Quiz  (0) 2025.01.19