1 분 소요

가상 메모리

  • 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것
  • 가상 주소 공간 : 프로세스가 메모리에 저장되는 논리적인 번지
  • 페이지 공유를 통해 파일이나 메모리가 프로세스들에 공유될 수 있는 장점이 있다.

요구 페이징 (Demand Paging)

  • 메모리에 필요한 것들만 적재한다.
  • 필요한 페이지는 swap in, 필요 없으면 swap out
  • 스와핑 기법과 비슷 - 페이저라는 용어 사용

기본 개념

  • 메모리에 존재하는 페이지에 접근하면 실행, 존재하지 않는다면 페이지 부재 트랩 발생
  • 페이지 부재 처리 과정
    • 메모리 참조가 유효한지, 무효한지 판단.
    • 무효하다면 프로세스 중단, 유효하지만 페이지가 없다면 디스크로부터 가져오기
    • 빈 공간 (자유 프레임)을 찾는다.
    • 새로 할당된 프레임에 페이지를 읽어 들이도록 요청한다.
    • 페이지 테이블 갱신, 프로세스의 내부 테이블 수정
    • 트랩에 의해 중단된 명령어 수행.

페이지 교체

  • 페이지 교체 과정
    • 디스크에서 필요한 페이지의 위치를 알아낸다.
    • 빈 페이지 프레임을 찾는다.
      • 빈 프레임이 있다면 사용한다.
      • 없다면 희생될 프레임을 선정하기 위해 페이지 교체 알고리즘을 실행한다.
      • 희생될 페이지를 디스크에 기록하고, 테이블을 수정한다.
    • 빼앗은 프레임에 새 페이지를 읽어오고 테이브를 수행한다.
    • 트랩이 발생한 지점에서부터 프로세스를 실행한다.

페이지 교체 알고리즘

  • FIFO (First In First Out)
    • 가장 오래 된 페이지 교체
    • 이해하기 쉽고, 구현도 쉽다.
    • 성능이 항상 좋지 않다. 교체한 페이지가 자주 사용되는 페이지일 수도 있다.
    • Belady의 모순 프로세스에게 프레임을 더 주었는데 페이지 부재율은 더 상승한다.
  • 최적 페이지 교체 (Optimal Page Replacement)
    • 가장 오랫동안 사용되지 않는 페이지 교체
    • 가장 낮은 페이지 부재율 보장
    • 구현하기 어렵다.
    • Belady 모순 X
  • LRU (Least Recently Used)
    • 가장 오랜 기간동안 사용되지 않은 페이지 교체
    • 카운터 변수나 스택을 사용한다.
    • Belady 모순 X
  • LFU (Least Frequently Used)
    • 가장 참조 횟수가 적은 페이지 교체
    • 교체 대상이 여러 개인 경우, LRU 이용
    • 구현 비용이 크다.

스레싱 (Thrashing)

  • 페이지 부재가 연속적으로 발생 돼 프로세스 수행 시간보다 페이지 교체 시간이 더 많을 경우

스레싱의 원인

  • 부적절한 페이지 교체 알고리즘
    • Belady 모순
  • 시스템 리소스 부족
    • 작은 캐시
    • 낮은 메모리 용량
  • 프로그램 메모리 관리 실패
    • 과도한 스레드 생성, 무분별한 fork

스레싱 해결 방법

  • Working Set Model
    • 프로세스가 많이 참조하는 페이지 집합을 메모리 공간에 계속 상주시켜 빈번한 페이지 교체현상(스레싱)을 줄이는 방법
    • 다중 프로그래밍 높임, CPU 사용률 최적화
    • Working set 관리 복잡, Window 사이즈 설정 모호
    • 지역성 활용
  • Page Fault Frequency
    • 페이지 부재율의 상, 하한으로 페이지 부재율을 예측하고 조절
    • 페이지 부재율이 높으면 프레임 할당, 낮으면 회수
    • 페이지 부재 발생 시에만 실행, 직접 페이지 부재율 조절 가능
    • 프로세스 중지 과정 발생
    • Working set보다 오버헤드가 작다.

카테고리:

업데이트: