[TIL/크래프톤 정글] DAY 46

배재준·2025년 4월 24일

크래프톤 정글 - TIL

목록 보기
39/93
post-thumbnail

2025.04.24

TIL(TODAY I LEARN)


  • 오늘한 내용 : CS - 가상메모리 9.1 ~ 9.5

  • WEEK06: 메모리 누수, 균형 이진 탐색 트리(AVL Tree, Red-Black Tree)


9. 가상 메모리

세 가지 주요 기능을 수행

  • 캐싱 도구: 느린 디스크 데이터를 빠른 DRAM으로 페이지 단위로 캐싱
  • 메모리 관리 도구: 프로그램의 동적 메모리 요청을 유연하게 처리
  • 보호 도구: 프로세스 간 메모리 접근을 격리하여 보안과 안정성 보장

9.1 물리 및 가상주소 방식

용어정의
가상 주소 (Virtual Address)프로세스가 사용하는 논리적 주소 공간 (예: 0x8048000)
물리 주소 (Physical Address)실제 RAM의 주소 공간 (예: 0x3fbc0000)
주소 변환 (Address Translation)가상 주소 → 물리 주소로 변환하는 과정
MMU (Memory Management Unit)주소 변환을 수행하는 하드웨어 구성요소
페이지 테이블 (Page Table)가상 주소 → 물리 주소 매핑 정보를 저장하는 자료구조

9.2 주소공간

  • 비음수 정수 주소의 정렬된 집합
    • {0,1,2,…} → 선형적! 선형 주소공간이라 칭함
  • 프로세스마다 독립된, 선형적인 가상 주소 공간을 제공하여 물리 메모리를 추상화한다.
  • n비트 주소 공간은 2n2^n개의 주소를 표현하고, 최대 주소는 2n12^n - 1이다.
  • 기본 주소 단위는 바이트(byte)

9.3 캐싱 도구로서의 VM

  • 디스크를 위한 캐시 역할
    • 디스크의 코드와 데이터를 페이지 단위로 RAM에 불러와 캐싱
  • 가상 페이지 : 가상메모리를 규정된 사이즈 블록 단위로 분할한 것
    • 3가지 상태를 가짐
      1. Unallocated(미할당)
        • 해당 가상 페이지는 아직 어떤 객체에도 연결되지 않은 상태
        • 메모리 요청이 없었고, 운영체제가 페이지를 생성하지도 않았음
        • 접근 시 → 세그멘테이션 폴트(segmentation fault) 발생
      2. Cached (DRAM에 있음)
        • 해당 가상 페이지는 DRAM에 존재하며, 실제 물리 메모리와 매핑되어 있음
        • 즉, 페이지 테이블 항목이 유효(valid)하고, 물리 프레임과 연결됨
        • CPU가 해당 페이지를 즉시 접근 가능
      3. Uncached (디스크에 있음)
      • 해당 가상 페이지는 가상 주소 공간에는 존재하지만, 지금은 DRAM에 없음
      • 운영체제가 해당 페이지를 디스크(스왑 영역 또는 파일)로 내보냄
      • 접근 시 → 페이지 폴트(page fault) 발생 → OS가 디스크에서 로드함

9.3.1 DRAM 캐시의 구성

  • SRAM 캐시 : L1, L2, L3 캐시 메모리
  • DRAM 캐시 : 디스크의 페이지를 위한 VM 시스템 캐시
  • 완전 결합성(fully associative)에 가까움
    • 어떤 가상 페이지도 메모리의 아무 페이지 프레임에나 저장될 수 있음

      방식설명
      Direct-mapped하나의 캐시 블록에 하나의 위치만 가능
      Set-associative정해진 개수의 후보 위치에 저장 가능
      Fully associative아무 위치에나 저장 가능 (가상 메모리 방식)
  • 페이지 미스 발생시 디스크 접근하므로 신중하게 페이지 교체된다.
  • 항상 write back을 사용한다.
정책설명특징
Write-through쓰기 즉시 메모리에도 반영단순하지만 느림
Write-back변경사항을 캐시에만 반영 → 나중에 메모리에 반영성능 좋지만 복잡

9.3.2 페이지 테이블

  • 가상주소를 물리 주소로 매핑하는 자료구조
[ 가상 주소 (Virtual Address) 48 bits]
├── [VPN] Virtual Page Number (36 bits)
└── [VPO] Virtual Page Offset (12 bits)

-----
주소 변환 과정

1. CPU → Virtual Address 생성
2. MMU → VPN을 추출
3. 페이지 테이블에서 VPN에 해당하는 PTE 검색
4. valid bit 확인:
    - 1이면 → PFN 추출 → VPO로 물리 주소 계산
    - 0이면 → 페이지 폴트(Page Fault) 발생

페이지 테이블 구조:
+------+---------------------------+
| VPN  |        PTE                |
+------+---------------------------+
| 0x001| [valid=1, PPN=0x020, R/W] |
| 0x002| [valid=0, ...           ] |
| 0x003| [valid=1, PPN=0x01F, R/O] |
+------+---------------------------+

9.3.3 페이지 적중

  • CPU가 가상 주소를 통해 접근하려는 가상 페이지가 이미 물리 메모리에 로드되어 있는 상태
  • PTE의 valid bit = 1

9.3.4 페이지 오류

  • 가상 페이지가 물리 메모리에 존재하지 않을 때 발생하는 예외 상황
  • PTE의 valid bit = 0
CPU → 가상 주소 접근
     ↓
 MMU → TLB miss
     ↓
Page Table lookup
     ↓
Valid bit == 0 ?
     ↓
[ Page Fault 발생 ]
     ↓
OS:
 1. 디스크에서 페이지 읽기
 2. 물리 메모리에 적재(스와핑)
 3. PTE & TLB 업데이트
     ↓
[ 명령 재시도 → 성공 ]
  • 페이지 폴트는 느린 작업 (디스크 접근 포함 → ms 단위 지연)
  • 페이지 폴트가 너무 자주 발생하면 시스템 전체 성능 저 (thrashing)

9.3.5 페이지의 할당

  • 새로운 페이지를 교체할 때 알고리즘
정책설명
LRU (Least Recently Used)가장 오래 전에 사용된 페이지 제거
FIFO (First-In First-Out)가장 먼저 들어온 페이지 제거
Random무작위로 하나 제거 (간단하지만 비효율)
Clock (Second Chance)LRU를 근사화한 실용적 알고리즘

9.3.6 문제해결을 위한 또 한 번의 지역성의 등장

종류설명예시
시간 지역성 (Temporal Locality)최근에 접근한 데이터는 곧 다시 접근될 가능성 높음반복문에서 사용하는 변수
공간 지역성 (Spatial Locality)가까운 주소의 데이터들이 함께 접근될 가능성 높음배열 순회
  • 스래싱(Thrashing) : working set이 물리 메모리보다 커지면 페이지들이 계속 해서 스와핑됨 → 프로그램 성능이 급격하게 저하됨.
    • 페이지 폴트가 너무 잦아서 디스크 I/O에만 시간을 다 씀.

9.4 메모리 관리 도구로서의 VM

  • 링킹 단순화
    • 모든 프로그램은 같은 가상 주소에서 실행되도록 설계 가능
    • 코드 재사용성 증가, 이식성 향상
  • 로딩 단순화
    • 프로그램의 일부만 메모리에 올려 실행 시작 가능
    • 페이지 단위로 적재(→ 지연 페이징)
      • 지연 페이징 : 가상 페이지에 처음 접근하기 전까지는 그 페이지를 물리 메모리에 올리지 않는 전략
  • 공유 단순화
    • 여러 프로세스가 같은 물리 페이지를 공유하되, 가상 주소는 독립적으로 유지 가능
      • 메모리 절약
      • copy on write를 통해 빠른 fork 구현 가능
  • 메모리 할당 단순화
    • 비연속적인 물리 메모리 조각들을 하나의 연속된 가상 메모리로 매핑 가능
      • 프로세스는 “연속된 큰 공간”처럼 보이게 할 수 있음
      • 메모리 관리 자유도 ↑, 단편화 ↓
기능설명효과
링킹 단순화모든 프로그램이 같은 가상 주소에서 시작코드 재사용, 모듈성 ↑
로딩 단순화실행 시점에 필요한 페이지만 로드로딩 속도↑, 메모리↓
공유 단순화코드/데이터를 여러 프로세스가 공유 가능메모리 절약
메모리 할당 단순화비연속 메모리를 연속처럼 사용 가능큰 공간도 유연하게 할당 가능

9.5 메모리 보호를 위한 도구로서의 VM

가상 메모리는 프로세스 격리(Isolation)와 접근 권한 제한을 통해 시스템의 안정성과 보안을 보장하는 역할을 함.

  • 페이지 테이블의 보호 비트(protection bits)
    메모리 접근을 하드웨어 수준에서 제한
  • 메모리에 대한 모든 접근은 MMU가 권한을 체크하며,
    잘못된 접근 시 예외(interrupt)를 발생시킴
보호 유형설명효과
코드 실행 보호데이터 영역에서 코드 실행 차단버퍼 오버플로우 방지
읽기/쓰기 보호코드 수정, 읽기 금지, 비허가 쓰기 차단무결성 보장
프로세스 격리다른 프로그램 메모리에 접근 불가보안과 안정성 향상

0개의 댓글