9장

jhj603·2025년 8월 20일
0

Computer Systems: A Programmer's Perspective

제9장 가상 메모리 (Virtual Memory) - 정리본


🎯 학습 목표

  • 물리적 주소 지정과 가상 주소 지정의 차이점 이해
  • 주소 공간의 개념과 가상/물리적 주소 공간 구분
  • 가상 메모리가 캐싱 도구로서 작동하는 원리 파악

📖 서론: 가상 메모리란?

가상 메모리의 정의

가상 메모리(Virtual Memory, VM)는 하드웨어 예외, 하드웨어 주소 변환, 메인 메모리, 디스크 파일, 커널 소프트웨어의 우아한 상호작용으로 각 프로세스에게 제공하는 메인 메모리의 추상화입니다.

가상 메모리의 3가지 핵심 기능

기능설명
캐싱 도구메인 메모리를 디스크에 저장된 주소 공간의 캐시로 취급하여 효율적 사용
메모리 관리 도구각 프로세스에게 균일한 주소 공간 제공으로 메모리 관리 단순화
메모리 보호 도구각 프로세스의 주소 공간을 다른 프로세스의 손상으로부터 보호

9.1 물리적 주소 지정 vs 가상 주소 지정

물리적 주소 지정 (Physical Addressing)

CPU → 물리적 주소 (PA) → 메인 메모리

특징:

  • 컴퓨터 메인 메모리: M개의 연속적인 바이트 크기 셀 배열
  • 각 바이트는 고유한 물리적 주소(PA) 보유
  • 초기 PC, 임베디드 시스템에서 사용

가상 주소 지정 (Virtual Addressing)

CPU → 가상 주소 (VA) → [MMU에서 주소 변환] → 물리적 주소 (PA) → 메인 메모리

핵심 구성 요소:

  • 가상 주소(VA): CPU가 생성하는 주소
  • 주소 변환(Address Translation): VA를 PA로 변환하는 과정
  • MMU(Memory Management Unit): CPU 칩 상의 전용 하드웨어, 실시간 주소 변환 수행

9.2 주소 공간 (Address Spaces)

주소 공간의 정의

주소 공간: 음이 아닌 정수 주소들의 순서집합 {0, 1, 2, ...}

가상 주소 공간

  • 크기: N = 2^n 개의 주소
  • 표현: {0, 1, 2, ..., N-1}
  • 분류: n비트 주소 공간
  • 현대 시스템: 32비트 또는 64비트 지원

물리적 주소 공간

  • 크기: M바이트 물리적 메모리에 대응
  • 표현: {0, 1, 2, ..., M-1}
  • 가정: M = 2^m (논의 단순화)

🔑 핵심 개념

주소 공간은 데이터 객체(바이트)속성(주소) 사이의 명확한 구분을 만들어, 각 데이터 객체가 서로 다른 주소 공간에서 선택된 여러 독립적인 주소를 가질 수 있게 합니다.


9.3 캐싱 도구로서의 VM

기본 구조

가상 메모리 (디스크) ←캐싱→ 물리적 메모리 (DRAM)

페이지 단위 관리

  • 가상 페이지(Virtual Pages, VPs): 크기 P = 2^p 바이트
  • 물리적 페이지(Physical Pages, PPs): 크기 P 바이트 (페이지 프레임)

가상 페이지의 3가지 상태

상태설명특징
할당되지 않음 (Unallocated)VM 시스템에 의해 아직 할당되지 않음디스크 공간 차지 안함
캐시됨 (Cached)현재 물리적 메모리에 캐시됨빠른 접근 가능
캐시되지 않음 (Uncached)할당되었으나 물리적 메모리에 없음디스크에만 존재

9.3.1 DRAM 캐시 구성

용어 구분

용어설명
SRAM 캐시CPU와 메인 메모리 사이의 L1, L2, L3 캐시
DRAM 캐시VM 시스템이 가상 페이지를 캐시하는 메인 메모리

DRAM 캐시의 특성

📊 성능 비교

  • DRAM은 SRAM보다 최소 10배 느림
  • 디스크는 DRAM보다 약 100,000배 느림
  • 디스크 섹터의 첫 바이트 읽기는 연속 바이트보다 100,000배 느림

🏗️ 설계 특성

특성값/방식이유
페이지 크기4KB ~ 2MB큰 미스 비용과 첫 바이트 접근 비용
연관성완전 연관큰 미스 비용으로 인한 유연성 필요
교체 정책정교한 알고리즘잘못된 교체의 높은 비용
쓰기 정책쓰기-후 (Write-back)디스크의 큰 접근 시간

9.3.2 페이지 테이블 (Page Tables)

정의 및 역할

페이지 테이블: 가상 페이지 → 물리적 페이지 매핑 데이터 구조

페이지 테이블 엔트리 (PTE) 구성

구성 요소크기역할
유효 비트 (Valid bit)1비트가상 페이지가 DRAM에 캐시되어 있는지 표시
주소 필드n비트물리적 페이지 시작 주소 또는 디스크 주소

PTE 상태별 의미

유효 비트주소 필드의미
1물리적 주소DRAM에 캐시됨
0Null아직 할당되지 않음
0디스크 주소할당되었으나 캐시되지 않음

9.3.3 페이지 히트 (Page Hits)

동작 과정

1. CPU가 VP 2의 단어 읽기 요청
2. 주소 변환 HW가 가상 주소로 PTE 2 위치 확인
3. PTE 2를 메모리에서 읽기
4. 유효 비트 = 1 → VP 2가 메모리에 캐시됨 확인
5. PTE의 물리적 주소로 단어의 물리적 주소 구성

9.3.4 페이지 폴트 (Page Faults)

정의

페이지 폴트: 가상 메모리 용어로 DRAM 캐시 미스

페이지 폴트 처리 과정


폴트 발생 전:
VP 3이 캐시되지 않은 상태

폴트 처리 과정:
1. CPU가 VP 3의 단어 참조
2. 주소 변환 HW가 PTE 3 읽기
3. 유효 비트 = 0 → 페이지 폴트 예외 발생
4. 페이지 폴트 핸들러 실행:
   - 희생 페이지 (VP 4) 선택
   - VP 4 수정된 경우 디스크에 쓰기
   - VP 4의 PTE 업데이트
   - VP 3을 디스크에서 PP 3으로 복사
   - PTE 3 업데이트 (유효 비트 = 1)
5. 폴트 명령어 재시작
6. 이제 VP 3이 캐시되어 정상 처리

폴트 처리 후:
VP 3이 PP 3에 캐시됨, VP 4는 메모리에서 제거됨

관련 용어

용어의미
스와핑/페이징디스크와 메모리 간 페이지 전송 활동
스왑 인/페이지 인디스크 → DRAM 페이지 전송
스왑 아웃/페이지 아웃DRAM → 디스크 페이지 전송
요구 페이징미스 발생 시까지 기다렸다가 스왑 인하는 전략

9.3.5 페이지 할당 (Allocating Pages)

새 페이지 할당 과정

malloc 호출 등으로 새 가상 메모리 페이지 할당:

1. 디스크에 VP 5를 위한 공간 생성
2. PTE 5를 새로 생성된 디스크 페이지를 가리키도록 업데이트
3. 유효 비트는 0으로 유지 (아직 캐시되지 않음)

9.3.6 지역성의 구원 (Locality to the Rescue)

가상 메모리 효율성의 핵심: 지역성 원리

📈 성능 보장 메커니즘

전체 프로그램 참조 페이지 > 물리적 메모리 크기
하지만
특정 시점 활성 페이지 (작업 집합) < 물리적 메모리 크기

핵심 개념

개념설명
작업 집합 (Working Set)특정 시점에서 프로그램이 작업하는 활성 페이지 집합
상주 집합 (Resident Set)작업 집합과 같은 개념

정상 동작 vs 스래싱

✅ 정상 동작:
초기 오버헤드 → 작업 집합 메모리 적재 → 이후 히트만 발생

❌ 스래싱 (Thrashing):
작업 집합 크기 > 물리적 메모리 크기 → 지속적 스왑 인/아웃

⚠️ 성능 저하 징후

프로그램 성능이 급격히 저하되면 스래싱 가능성을 고려해야 합니다.


🔑 핵심 정리

  1. 가상 메모리는 3가지 도구: 캐싱, 메모리 관리, 메모리 보호
  2. 주소 변환: MMU가 VA를 PA로 실시간 변환
  3. 페이지 단위 관리: 가상/물리적 페이지로 메모리 분할
  4. DRAM 캐시 특성: 큰 페이지, 완전 연관, 쓰기-후
  5. 페이지 테이블: VP → PP 매핑, PTE로 구성
  6. 지역성 원리: 작업 집합이 성능의 핵심
profile
자라나라 실력 실력

0개의 댓글