# 물리 메모리 크기의 극복: 메커니즘

## 스왑 공간

**개념**: 물리 메모리가 부족하면 사용하지 않는 페이지를 하드 디스크의 특정 영역(스왑 공간)에 백업하고, 필요하면 다시 메모리로 불러오는 기술

**장점**

- 물리 메모리보다 훨씬 저렴한 하드 디스크 공간을 활용하여 가상 메모리 공간을 확장 가능

![image](https://github.com/chu-aie/os-2024/assets/133697595/798ba7ee-3772-4b69-b7da-04dd624c5d39)

스왑 공간 사용 방식 - 가상 메모리 공간이 부족하면 사용하지 않는 페이지를 스왑 공간으로 백업하고, 필요하면 다시 메모리로 불러온다.

**단점**

- 하드 디스크는 메모리보다 훨씬 느려 페이지 폴트 발생 시 성능 저하

## Present Bit

**개념**: 페이지 테이블에 존재하는 각 엔트리에 설정되는 플래그 비트

**기능**: 해당 페이지가 현재 물리 메모리에 존재하는지 여부를 나타냄

**활용**

- Present bit가 1이면 페이지가 메모리에 존재하므로 바로 접근 가능
- Present bit가 0이면 페이지가 스왑 공간에 존재하므로 페이지 폴트 발생

## 페이지 폴트

**개념**: 프로세스가 메모리에 존재하지 않는 페이지에 접근하려는 경우 발생하는 예외 상황

**처리 과정**

1. 운영체제는 해당 페이지를 스왑 공간에서 메모리로 로드
2. 페이지 테이블을 업데이트하여 Present bit를 1로 설정
3. 프로세스가 다시 해당 페이지에 접근하도록 허용

**영향**: 페이지 폴트는 메모리 접근 지연을 야기하여 성능 저하를 초래한다.

## 메모리에 빈 공간이 없으면?

**LRU (Least Recently Used) 알고리즘**: 최근에 사용되지 않은 페이지를 스왑 공간으로 교체하는 알고리즘

(그림)

LRU 알고리즘 동작 방식 - 가장 오랫동안 사용되지 않은 페이지를 스왑 공간으로 교체한다.

**다른 알고리즘**: FIFO, Modified Page Count 등 다양한 알고리즘 존재

## 페이지 폴트의 처리

**시간 소요**: 페이지 폴트는 메모리 접근 지연을 야기하여 성능 저하를 초래

**최소화 방안**

- 페이지 크기 조절: 작은 페이지 크기는 페이지 폴트 빈도 증가, 큰 페이지 크기는 페이지 폴트 처리 지연 증가
- 효율적인 페이지 교체 알고리즘 사용: LRU, Modified Page Count 등 다양한 알고리즘 활용

## 교체는 실제 언제 일어나는가?

**실제 메모리 할당 시점**: 새로운 페이지를 메모리에 로드할 때 발생 가능성이 높음

**페이지 폴트 발생 시**: Present bit가 0인 페이지를 메모리로 로드할 때 발생

## 요약

메모리 가상화는 스왑 공간, Present bit, 페이지 폴트 등의 기술을 사용하여 물리 메모리 크기의 제약을 극복하는 기술입니다. 하지만 페이지 폴트 발생 시 성능 저하가 발생할 수 있으므로 효율적인 알고리즘 사용이 중요합니다.

## 추가 설명

- 메모리 가상화는 가상 주소 공간과 물리 주소 공간을 매핑하는 페이지 테이블을 사용합니다.
- 페이지 테이블은 메모리 관리 장치(MMU)에 의해 관리됩니다.
- MMU는 가상 주소를 물리 주소로 변환하여 실제 메모리에 접근하도록 합니다.
- 메모리 가상화는 다중 프로그래밍, 다중 사용자 환경, 운영 체제에서 중요한 역할을 합니다.
