08 OS - 가상메모리
08 OS - 가상메모리
1. 가상 메모리
1. 가상메모리
- 모든 프로세스가 동시에 메모리를 전부 사용하는 것이 아니기 때문에,
- 논리 주소와 물리 주소 바인딩(MMU) 을 통해
- 당장 필요한 페이지만 물리 메모리에 올리고,
- 사용하지 않는 페이지는 디스크(보조기억장치)에 저장(swap) 해두는 방식으로,
- 프로세스에게는 실제 메모리보다 더 큰 공간을 제공하는 것처럼 착각하게 만드는 기술
2. 요구페이징
1. 요구페이징
- 프로세스가 실행되면서 실제로 필요한 페이지가 요청될 때까지, 해당 페이지는 메모리에 올리지 않고 기다리는 방식
- 필요한 순간까지 메모리에 적재하지 않는 동적 적재(Dynamic Loading)의 한 형태
2. 페이지 부재 (Page Fault)
- 의미: 프로세스가 접근하려는 메모리 페이지가 현재 물리 메모리에 없을 때 발생하는 예외 상황
- 상황: CPU가 특정 페이지를 참조하려고 했는데, 그 페이지가 메모리에 없으면 OS에 “페이지 부재” 인터럽트가 걸림
- 처리 과정:
- OS가 디스크(스왑 영역)에서 해당 페이지를 읽어 메모리에 적재
- 페이지 테이블 업데이트
- 중단됐던 명령어 재실행
3. 페이지 성능 (Page Performance)
- 의미: 페이지 부재가 얼마나 자주 발생하는지, 그리고 그로 인한 성능 영향
- 지표: 페이지 부재율 (Page Fault Rate)
- 낮을수록 성능 좋음
- 높으면 CPU가 페이지 부재 처리에 자주 멈춰 성능 저하
4. 페이지 대치 (Page Replacement)
- 의미: 메모리가 가득 차서 새 페이지를 올릴 공간이 없을 때, 기존에 메모리에 있던 페이지 중 하나를 골라 내리고 새 페이지를 적재하는 작업
- 목적:
- 페이지 부재 발생 시, 메모리에 공간 확보
- 효율적으로 교체해서 부재율 최소화
3. 페이지 대치 알고리즘 🔖
알고리즘 | 개념 | 장점 | 단점 |
---|---|---|---|
선입선출 대치 알고리즘 (FIFO) | 가장 먼저 올라온 페이지를 가장 먼저 제거 | 구현이 간단 | 자주 쓰는 페이지도 제거될 수 있음 (Belady’s Anomaly 발생) |
최적페이지 대치알고리즘 (Optimal) | 앞으로 가장 오래 사용되지 않을 페이지를 제거 | 이론적으로 가장 효율적 | 미래 예측이 필요해 실제 구현 불가능 |
최근 최소사용대치알고리즘 (LRU) | 가장 오랫동안 사용되지 않은 페이지를 제거 | 실사용 패턴에 근접 | 시간/공간 오버헤드 큼 (스택, 타임스탬프 필요) |
최근 최소 사용 근접 알고리즘 (Approx. LRU) | 최근 사용 여부만 추적해 LRU 흉내 (ex. Clock 알고리즘 사용) | 구현 간단, 성능도 준수 | 정확한 LRU는 아님, 근사치일 뿐 |
4. 프레임할당 알고리즘
알고리즘 | 개념 | 장점 | 단점 |
---|---|---|---|
균일 프레임 할당 | 모든 프로세스에 동일한 수의 프레임을 균등 분배 | - 구현이 단순함 - 공정하게 보일 수 있음 | - 큰 프로세스는 프레임 부족으로 페이지 부재 ↑ - 작은 프로세스는 프레임 낭비 |
비례 프레임 할당 | 각 프로세스의 크기(페이지 수)에 비례하여 프레임 분배 | - 자원 효율성 향상 - 스래싱 감소 | - 계산이 복잡함 - 프로세스 동적 변화에 대응 어려움 |
5. 기타 용어
1. 스래싱 (Thrashing)
- 정의 : 시스템이 너무 많은 페이지 부재(Page Fault)를 처리하느라 CPU는 거의 작업을 못하고, 메모리 입출력(I/O) 작업에만 몰두하는 상태
- 원인 : 프로세스에 할당된 프레임이 너무 적어서 자주 페이지 교체가 발생할 때
- 결과 : 시스템 전체 성능 급격히 저하
2. 지역성(지역구, Locality)
- 정의 : 프로세스가 특정 시간 동안 메모리의 일부 주소(지역)만 집중적으로 참조하는 성질
- 종류 :
- 시간 지역성: 최근 참조한 주소를 다시 참조할 가능성 높음
- 공간 지역성: 최근 참조한 주소 주변을 참조할 가능성 높음
- 중요성 : 가상 메모리와 캐시 설계에서 성능 최적화의 기본 원리
3. 직접 집합 모델 (Direct Mapped Model)
- 정의 : 주로 캐시 메모리에서 사용되는 매핑 방식
- 특징
- 각 메모리 블록이 캐시 내 특정 하나의 블록(슬롯)과 1:1 대응
- 매핑이 단순하고 빠르지만, 충돌 발생 가능성이 큼
- 관련 : 페이지 테이블의 간단한 매핑 방식과는 별개로, 주로 캐시 설계에서 쓰임
4. 페이지 부재 비율 (Page Fault Rate)
- 정의 : 전체 메모리 접근 중 페이지 부재가 발생하는 비율
- 의미 : 낮을수록 가상 메모리 성능이 좋고, 시스템 효율이 높음
- 관리 목표 : 페이지 대치 알고리즘과 프레임 할당 알고리즘을 통해 페이지 부재 비율을 최소화하려고 함
5. 대치범위 (Replacement Scope)
- 정의: 페이지 교체(대치) 알고리즘이 어느 범위 내에서 교체할 페이지를 선택하는지 결정하는 기준
- 종류:
- 지역 대치(Local Replacement): 현재 실행 중인 프로세스의 페이지 중에서만 교체
- 전역 대치(Global Replacement): 시스템 전체(모든 프로세스)의 페이지 중에서 교체
- 차이점:
- 지역 대치는 프로세스가 할당받은 프레임 내에서만 교체, 다른 프로세스 영향 없음
- 전역 대치는 모든 프로세스의 프레임을 대상으로 교체 가능, 더 유연하지만 공정성 문제 발생 가능
6. 프리페이징 (Prepaging)
- 정의: 페이지 부재를 줄이기 위해, 프로세스 실행 전에 예상되는 페이지들을 미리 메모리에 적재하는 기법
- 목적:
- 페이지 부재 발생 시 디스크 접근 지연을 줄임
- 실행 초반에 성능 향상 기대
- 대조: 요구 페이징(Demand Paging)은 실제 요청할 때 페이지를 적재하는 방식
7. 페이지 크기 (Page Size)
- 정의: 가상 메모리와 물리 메모리를 나누는 단위인 페이지와 프레임의 크기
- 특징:
- 일반적으로 4KB, 8KB, 16KB 등 2의 제곱 크기
- 페이지 크기가 크면 페이지 테이블 크기가 작아지지만 내부 단편화가 늘어남
- 페이지 크기가 작으면 단편화는 줄지만 페이지 테이블이 커져 관리가 복잡
8. 페이지 테이블의 구조
- 역할: 논리 주소(가상 주소)의 페이지 번호를 물리 주소의 프레임 번호로 변환하는 매핑 정보 저장소
- 구성 요소:
- 페이지 번호 → 프레임 번호
- 플래그: 유효 비트, 접근 권한, 수정 비트, 참조 비트 등
- 종류:
- 단일 레벨 페이지 테이블: 1차원 배열, 간단하지만 큰 주소 공간에 비효율적
- 다단계 페이지 테이블: 여러 단계로 나눠서 관리, 메모리 절약
- 해시 페이지 테이블, 역 페이지 테이블 등 다양한 구조 존재
This post is licensed under CC BY 4.0 by the author.