운영체제 9-10강

yoneeki·2025년 4월 5일

knou

목록 보기
10/14

운영체제 9강

가상 메모리 (Virtual Memory)


✅ 가상 메모리 개념

  • 프로세스가 사용하는 주소 공간을 실제 물리 메모리가 아닌 보조기억장치에 위치시켜 관리
  • 실행 시 필요한 부분만 메모리에 적재 → 효율적 메모리 사용
  • 가상 주소 공간(V), 실 주소 공간(R)으로 구분

✅ 주소 변환 구조

  • 가상주소 → 실주소 매핑 필요
  • 연속적일 필요 없음 (비연속 사상 가능)
  • 동적 주소 변환 기법 필요
    • 사상표 이용 (매핑 정보 저장)

✅ 블록 기반 주소 변환

  • 가상 메모리를 일정한 블록 단위로 나눔
  • 실주소 = 시작 주소 + 변위(offset)
  • 블록 크기에 따라 사상표 크기 및 성능 영향

✅ 페이지(Page) 기반 관리

  • 페이지(Page): 가상 메모리의 고정된 크기 단위
  • 프레임(Frame): 페이지가 적재될 물리 메모리 공간
  • 페이지와 프레임의 크기는 같음

● 주소 변환

  • 가상 주소 = 페이지 번호 + 오프셋
  • 페이지 사상표(Page Table)를 사용하여 프레임 번호 결정

✅ 페이지 사상표 구성 요소

항목설명
페이지 프레임 번호해당 페이지가 위치한 프레임 번호
보조기억장치 주소디스크 상 위치
존재 비트메모리에 적재 여부 표시

✅ 연관 사상표 (TLB)

  • 최근 참조된 페이지에 대한 변환 정보를 캐시에 저장
  • 빠른 주소 변환 가능
  • TLB 미스 시 일반 사상표 접근

✅ 세그먼트(Segment) 기반 관리

  • 세그먼트: 논리적 의미를 가진 가변 길이 블록
  • 프로그램 구성 요소 (함수, 자료구조 등) 단위로 분리

● 세그먼트 사상표 구성

항목설명
시작주소실주소 공간의 시작 주소
길이세그먼트 크기
존재 비트메모리 상 존재 여부 표시
보조기억장치 주소디스크 위치 정보

✅ 세그먼트 + 페이지 혼합 기법

  • 세그먼트를 먼저 나눈 뒤 각 세그먼트를 페이지로 나눔
  • 변환: 세그먼트 → 페이지 → 오프셋

✅ 페이지 호출 기법

● 요구 호출 (Demand Paging)

  • 필요한 시점에 페이지를 메모리로 적재
  • 처음 시작 시 페이지 부재(fault) 많이 발생

● 예상 호출 (Pre-paging)

  • 필요할 것으로 예상되는 페이지를 미리 적재
  • 예측 실패 시 낭비 가능, 하지만 성능 향상 기대

✅ 페이지 교체 알고리즘 (다음 강의에서 계속)

  • 페이지 부재 발생 시 어떤 페이지를 제거할지 결정

✅ 요약

  • 가상 메모리는 프로세스 실행 시 메모리 요구량을 줄이고 효율을 높이는 핵심 기술
  • 페이지 기반, 세그먼트 기반, 혼합 방식 존재
  • 주소 변환에 사상표와 TLB(연관 사상표) 활용
  • 페이지 호출 방식에 따라 시스템 성능 영향

운영체제 10강

페이지 교체 알고리즘 & 워킹셋 모델


✅ 페이지 교체 과정

  1. 교체 대상 페이지 선택
  2. 보조기억장치에 보관
  3. 새로운 페이지를 메모리에 적재

✅ 페이지 교체 알고리즘

● OPT (Optimal)

  • 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체
  • 이론적으로 최적이나, 미래 예측이 불가능하여 실현 불가능

● FIFO (First-In First-Out)

  • 가장 오래된 페이지부터 교체
  • 구조: FIFO 큐 사용
  • Belady의 이상현상 발생 가능
    → 프레임 수를 늘렸는데 오히려 페이지 부재 증가

● LRU (Least Recently Used)

  • 가장 오래 전에 참조된 페이지를 교체
  • 시간 국부성 가정 (최근 참조 → 미래에도 참조 가능)
  • 테이블에 참조 시각 저장 필요 → 오버헤드 큼

● LFU (Least Frequently Used)

  • 참조 횟수가 가장 적은 페이지 교체
  • 초기에는 많이 사용되다 후에 사용되지 않는 페이지가 교체되지 않을 수 있음

● NUR (Not Used Recently)

  • 페이지에 참조 비트 추가
  • 참조되면 1, 아니라면 0
  • 비트가 0인 페이지를 우선 교체

● Second Chance (Clock Algorithm)

  • FIFO에 참조 비트 결합
  • 비트가 1이면 0으로 바꾸고 큐 뒤로
  • 0인 페이지는 교체
  • 시계 형태 포인터로 회전하며 검사

✅ 워킹 셋 (Working Set) 모델

  • 일정 시간(t) 동안 참조된 페이지의 집합
  • 이 집합을 메모리에 유지하면 성능 향상
  • 정확한 집합 추적은 어렵고 비용 큼

✅ 쓰래싱 (Thrashing)

  • 페이지 부재가 과도하게 발생하여, 실제 작업보다 교체에 더 많은 시간 소모
  • 워킹셋 부족, 실행 프로세스 과다로 발생

✅ 페이지 부재율 (Page Fault Frequency, PFF)

  • 페이지 부재 발생 후, 얼마나 빨리 다음 부재가 발생했는지 측정
  • 부재율이 너무 높으면 프레임 증가
  • 낮으면 프레임 감소

✅ 요약

  • 다양한 교체 알고리즘 존재 (OPT, FIFO, LRU, LFU, NUR, Clock 등)
  • 국부성(temporal/spatial locality)을 잘 반영한 알고리즘이 효과적
  • 워킹셋 모델과 PFF는 성능 유지에 유용
  • 쓰래싱 방지를 위해 프로세스 수 조절 또는 우선순위 조정 필요
profile
Working Abroad ...

0개의 댓글