[Daily morning study] 가상 메모리(Virtual Memory)와 페이징(Paging)
#daily morning study
가상 메모리(Virtual Memory)와 페이징(Paging)
가상 메모리와 페이징은 현대 운영 체제의 중요한 요소로, 효율적인 메모리 관리 및 프로세스 간의 메모리 독립성을 제공한다. 이 문서에서는 가상 메모리의 개념과 이를 구현하는 페이징 메커니즘에 대해 알아보자.
1. 가상 메모리(Virtual Memory)
1.1 정의
가상 메모리는 물리적 메모리(주기억장치)를 초과하는 크기의 메모리 공간을 프로세스에 제공하는 기술이다. 이 방법을 통해 각 프로세스는 독립적인 메모리 공간을 가지게 되며, 운영 체제는 필요할 때 물리적 메모리에 접근할 수 있도록 관리한다.
1.2 주요 특징
- 메모리 독립성: 각 프로세스는 자신의 가상 주소 공간만을 이용하므로, 서로 다른 프로세스 간의 메모리 충돌을 방지할 수 있다.
- 효율성: 필요한 데이터만 물리적 메모리로 로드함으로써 메모리 사용을 최적화할 수 있다.
- 확장성: 시스템의 물리적 메모리 용량보다 큰 프로그램을 실행할 수 있게 해준다.
1.3 가상 메모리의 이점
- 대형 프로그램의 실행 지원
- 메모리 보호 기능 제공
- 메모리 부족 시 디스크 스와핑 사용 가능
2. 페이징(Paging)
2.1 정의
페이징은 가상 메모리를 관리하는 기법으로, 주소 공간을 고정 크기의 블록(페이지) 단위로 나누어 운영한다. 이러한 페이지는 물리적 메모리의 페이지 프레임에 매핑된다.
2.2 페이징 구조
- 페이지(Page): 가상 메모리의 기본 단위
- 페이지 프레임(Page Frame): 물리 메모리에서 페이지가 저장되는 기본 단위
- 페이지 테이블(Page Table): 가상 페이지에서 물리 페이지 프레임으로의 매핑 정보를 저장하는 구조체
2.3 페이지 테이블
페이지 테이블은 각 가상 페이지에 대한 물리 페이지 프레임의 주소를 가지고 있다.
+---------------+-----------+
| 가상 페이지 번호 | 물리 페이지 번호 |
+---------------+-----------+
| 0 | 1 |
| 1 | 3 |
| 2 | 0 |
| 3 | 2 |
+---------------+-----------+
2.4 페이지 교체 알고리즘
페이징을 사용할 때, 메모리가 부족할 경우 만약 필요하지 않은 페이지가 존재한다면 이를 교체해야 한다. 여러 알고리즘이 존재하는데, 대표적인 몇 가지를 살펴보자:
- FIFO (First In, First Out): 가장 먼저 들어온 페이지를 가장 먼저 교체.
- LRU (Least Recently Used): 사용되지 않은 페이지 중에서 가장 오랫동안 사용되지 않은 페이지를 교체.
- OPT (Optimal): 미래에 가장 오랫동안 사용되지 않을 페이지를 교체(실제 구현은 어렵지만 이론적으로는 최적).
3. 가상 메모리와 페이징의 관계
가상 메모리는 페이징과 같은 테크닉을 통해 구현된다. 페이징은 프로세스의 가상 주소 공간에 맞추어 물리 메모리에 접근할 수 있도록 돕는 인프라로 작용한다. 운영 체제는 페이지 테이블을 기반으로 가상 주소를 물리 주소로 변환해 주며, 이러한 변환 때문에 프로세스는 한정된 물리 메모리에도 불구하고 대형 데이터를 다룰 수 있다.
3.1 주소 변환 과정
- 가상 주소를 페이지 번호와 오프셋으로 분리.
- 페이지 번호를 통해 페이지 테이블을 조회하여 물리 페이지 번호를 찾음.
- 물리 페이지 번호와 오프셋을 결합하여 최종 물리 주소를 생성함.
가상 주소 (VA) = [페이지 번호 | 오프셋]
물리 주소 (PA) = [물리 페이지 번호 | 오프셋]
4. 결론
가상 메모리와 페이징은 현대 운영 체제의 핵심 기술로, 효율적인 메모리 관리 및 프로세스 간의 독립성을 확보하는 데 중요한 역할을 한다. 이 두 가지 개념을 이해함으로써, 운영 체제의 작동 방식 전반에 대한 깊은 이해를 할 수 있을 것이다.
가상 메모리와 페이징의 원리를 바탕으로 더 나아가 성능 튜닝이나 메모리 관리 최적화를 공부하는 데 도움이 되길 바란다.