본문 바로가기
IT

운영체제 #10

by 내일은교양왕 2025. 8. 27.

가상 메모리 개념

  • 가상 메모리(Virtual Memory) 는 물리 메모리를 추상화하여, 사용자에게는 매우 큰 균일한 저장장소 배열로 보이도록 한다.
  • 실제 물리 메모리보다 큰 주소 공간을 사용할 수 있도록 지원한다.
  • 가상메모리가 물리 메모리보다 크기가 크다.
    • 예) 32비트 시스템: 가상 주소공간 2의 32승 = 4GB, 물리 메모리 512MB

가상 메모리의 이점

  1. 물리 메모리보다 큰 프로그램 실행 가능
  2. 전체 프로그램이 메모리에 상주할 필요 없음
  3. 프로세스 간 메모리 공유 가능
  4. 프로세스 생성 효율성 향상 (예: 쓰기 시 복사)

페이징 - 배경

초기의 메모리 관리 방식은 연속 메모리 할당(Contiguous Allocation).

  • 프로세스는 실행을 위해 연속된 물리 메모리 공간이 필요했음.
  • 시간이 지날수록 외부 단편화(External Fragmentation) 발생
  • 총 여유 공간은 충분해도, 중간중간 잘린 공간 때문에 새 프로세스를 배치할 수 없는 상황.

페이징 - 등장

페이징은 이 문제를 해결하기 위해 고안됨.
핵심 아이디어:

  • 물리 메모리를 일정 크기의 프레임(Frame) 으로 나눔.
  • 프로세스 주소 공간을 동일 크기의 페이지(Page) 로 나눔.
  • 페이지 단위로 프레임에 적재 → 프로세스는 연속되지 않은 공간에도 올릴 수 있음.

즉, 프로세스는 논리적으로 연속된 주소 공간을 가지지만, 실제 물리 메모리에서는 조각난 프레임에 배치될 수 있음.

 

페이지 - 장점

외부 단편화 제거 페이지 단위로 나누니 큰 연속 공간이 필요 없음.
메모리 이용 효율 증가 작은 빈 프레임들을 조합해서 여러 프로세스를 동시에 실행 가능.
가상 메모리 구현 기반 페이지 단위로 디스크 ↔ 메모리 적재/교체 가능 (요구 페이징)
프로세스 보호와 공유 용이 페이지 테이블로 접근 권한 제어 가능.
동일 페이지를 여러 프로세스가 공유 가능 (예: 라이브러리).

 

페이지 - 단점

내부 단편화(Internal Fragmentation) 마지막 페이지가 프레임보다 작으면 공간 낭비
주소 변환 비용 가상 주소 → 물리 주소 변환 필요 → TLB 같은 하드웨어 지원이 필수.

 

 

요구 페이징 (Demand Paging)

  • 프로그램 실행 시 필요한 페이지만 메모리에 적재한다.
  • 요청되지 않은 페이지는 메모리에 올리지 않는다.
  • 페이지 폴트(Page Fault): 메모리에 없는 페이지에 접근할 때 발생.
    → 보조 저장장치(디스크)에서 해당 페이지를 읽어와 가용 프레임에 배치한다.

 

쓰기 시 복사 (Copy-on-Write, COW)

  • 자식 프로세스 생성 시, 부모 프로세스의 페이지를 공유한다.
  • 부모/자식이 실제로 페이지를 수정할 때만 복사본 생성.
  • 프로세스 생성 속도를 높이고 메모리 사용량을 절감한다.

 

페이지 교체 (Page Replacement)

  • 물리 메모리가 부족하면 기존 페이지를 디스크로 내보내고 새로운 페이지를 가져와야 한다.
  • 대표 알고리즘:
    • FIFO (First-In-First-Out)
    • Optimal (앞으로 가장 오랫동안 사용되지 않을 페이지 교체)
    • LRU (Least Recently Used, 가장 오랫동안 사용되지 않은 페이지 교체)
  • 순수 LRU는 구현 비용이 높아 → 대부분 근사 알고리즘 사용.
  • 전역 교체: 시스템 전체에서 교체할 페이지 선택
  • 지역 교체: 페이지 폴트를 일으킨 프로세스 내부에서 교체

 

스래싱 (Thrashing)

  • 시스템이 실행보다 페이지 교체에 더 많은 시간을 소모할 때 발생.
  • CPU 이용률 급격히 감소 → 프로세스 수 줄이거나 작업 집합 제어 필요.

 

지역성(Locality) & 작업 집합(Working Set)

  • 지역성(Locality): 함께 자주 사용되는 페이지 집합
    • 시간적 지역성: 최근 사용된 페이지가 곧 다시 사용됨
    • 공간적 지역성: 인접한 주소의 페이지가 함께 사용됨
  • 작업 집합(Working Set): 프로세스가 일정 시간 동안 실제로 사용하는 페이지 집합

 

메모리 압축

  • 여러 페이지를 압축해 적은 공간에 저장하는 기법
  • 페이징이 불가능한 모바일/임베디드 환경에서 주로 활용
  • 페이징의 대안으로 메모리 절약 가능

 

커널 메모리 관리

  • 사용자 모드와 분리된 방식으로 관리된다.
  • 연속된 다양한 크기의 블록으로 할당 필요.
  • 대표적 기법:
    • 버디 시스템: 2의 거듭제곱 크기로 분할 및 병합
    • 슬랩 할당자: 자주 사용되는 객체 단위로 미리 메모리를 확보

TLB와 TLB Reach

  • TLB (Translation Lookaside Buffer): 가상 주소 → 물리 주소 매핑 캐시
  • TLB Reach = TLB 엔트리 수 × 페이지 크기
  • TLB reach를 늘리는 방법:
    • TLB 엔트리 수를 늘리기
    • 페이지 크기 확대

 

'IT' 카테고리의 다른 글

운영체제 #9  (1) 2025.08.25
운영체제 #8  (0) 2025.08.24
운영체제 #7  (0) 2025.08.20
운영체제 #6  (2) 2025.08.19
운영체제 #5  (2) 2025.08.18