Ch09 가상 메모리 관리 요약

0. 메모리 관리자 하는 일

  • 가져오기 정책(when) : 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책
  • 배치 정책(where) : 가져온 프로세스를 메모리의 어느 위치에 올려 놓을지 결정하는 정책
  • 재배치 정책(which process) : 메모리가 꽉 찼을 때, 메모리 내에 있는 어떤 프로세스를 내보낼지 결정하는 정책

1. 운영체제

  • 필요한 모듈만 메모리에 올려 실행하고 나머지 모듈은 필요하다고 판단될 때 메모리로 불러온다. 
  • 프로세스의 일부만 메모리로 가져오는 이유
    • 메모리 효율적으로 관리 : 꽉 차면 관리 어려움 -> 적은 양의 프로세스만 유지
    • 응답 속도 향상 : 용량 큰 프로세스 전부 메모리로 가져오면 응답 느려짐

2. 요구 페이징

요구페이징

  • 개념 : 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것
  • 장점 : 메모리 절약, 효율적 관리, 응답 속도 향상
순수한 스와필 swapping 게이른 스와퍼 lazy swapper
프로세스를 구성하는 모든 페이지를 메모리에 올리는 것 사용자가 요구할 떄 메모리에 올리는 것

 

페이지 테이블 엔트리 (PTE):

가상 메모리 크기 = 물리 메모리 + 스왑 영역
  • 구성요소:
    • 페이지 번호 (Page Number) : 페이지를 식별하는 번호.
    • 프레임 번호 (Frame Number) : 페이지가 위치한 물리적 메모리 프레임 번호.
    • 플래그 비트 (Flag Bits) : 페이지 상태를 나타내는 여러 비트들.
      • 접근 비트 : 페이지가 메모리에 올라온 후 사용한 적이 있는지 알림. 접근 시, 접근 비트 -> 1 ( = 참조 비트)
      • 변경 비트 : P가 M에 올라온 후, 페이지 데이터가 변경되었는지 알림. 변경 시, 변경 비트 -> 1( = 더티 비트)
      • 유효 비트 : 페이지가 실제 메모리에 있는지 나타냄. ( = 현재 비트)
      • 읽기, 쓰기, 실행 비트: 페이지에 대한 권한을 나타냄. ( = 접근 권한 비트)

페이지 부재 :

요청한 페이지가 메모리에 없을 때 발생. 스왑 영역에서 페이지를 가져와 처리.

  • 반대 개념 -> 미리 가져오기 (앞으로 필요할 것이라 예상하고 미리 가져오는 방식 ex. 캐시)

3. 페이지 교체 알고리즘

  • 개요: 메모리에서 사용할 페이지를 결정하는 알고리즘.
  • 종류:
    • 무작위 교체: 무작위로 페이지를 선택. 성능이 떨어짐.
    • FIFO: 가장 오래된 페이지를 교체. 성능이 떨어짐.
    • 최적 교체: 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체. 이상적이나 구현 어려움.
    • LRU: 가장 오랫동안 사용되지 않은 페이지를 교체. 시간, 카운터, 참조 비트로 구현.
    • LFU: 사용 횟수가 적은 페이지를 교체.
    • NUR: 참조 비트와 변경 비트로 최근 사용되지 않은 페이지를 교체.
    • FIFO 변형: 2차 기회, 시계 알고리즘 등으로 성능 개선.

4. 스레싱과 프레임 할당

  • 스레싱: 페이지 부재로 인한 과도한 하드디스크 입출력으로 CPU 작업이 중단되는 상태.
  • 프레임 할당 방식:
    • 정적 할당: 균등 할당(프로세스 크기 무관), 비례 할당(프로세스 크기 비례).
    • 동적 할당: 작업집합 모델(최근 참조된 페이지 유지), 페이지 부재 빈도 기반 할당.
  • 전역 교체와 지역 교체: 전역 교체는 전체 프레임 대상으로, 지역 교체는 현재 프로세스 프레임 대상으로 적용.