Post

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.