[운영체제] 가상메모리 관리 전략

ijnuyh·2025년 1월 7일

OS

목록 보기
1/1

가상메모리 관리

관리 전략

  • 가상메모리 페치(적재)
    : 페이지 or 세그먼트를 2차 저장소에서 메인메모리로 가져올 시점을 결정

    • 요구페치 전략
      프로세스가 페이지 or 세그먼트를 참조할 때까지 대기 후, 메인메모리에 로드.

    • 예측페치 전략
      반응시간을 줄이기 위해 사용.
      참조 가능성이 높고, 메모리 공간에 여유가 있을 때 해당 페이지 or 세그먼트를 참조 전에 메인메모리에 로드.

    • 페이지/세그먼트 교체 전략
      ; 유입되는 페이지 or 세그먼트를 위한 공간을 내주기 위해, 어떠한 페이지 or 세그먼트를 교체할 지를 결정.

요구 페이징

가상 메모리 시스템에서 구현하는 가장 간단한 페치 정책
요구전략 = 요청이 들어와야 진행.

  1. 프로세스가 처음 실행될 때, 해당 명령어를 담은 페이지를 메인메모리로 로드. (2차저장소 -> 메인메모리)
  2. 페이지를 한번에 하나씩 축적
    새로운 페이지 참조 시, 프로세스는 시스템이 메인메모리로 가져올 때까지 대기.
  3. 프로세스의 시공간 지수 = 메인메모리 차지공간의 양 x 실행시간 측정치

프로세스의 일부만 메모리로 가져오는 이유?

  • 메모리가 꽉차면 관리하기 어려워서 가급적 적은 양의 프로세스만 유지
  • 용량이 큰 프로세스를 전부 메모리로 가져와서 실행하면,
    응답이 늦어질 수 있어 필요한 모듈만 돌려 실행.

ex ) 포토샵 - 사용자가 요청할 때, 노이즈 제거 필터등을 메모리로 가져옴.

장점 정리

  • 메모리의 절약 (낭비X)
  • 효율적인 메모리 관리
  • 프로세스의 응답속도 향상

예측페이징

프로세스들이 요구하는 페이지들을 예측, 미리 로드.

같이 실행될 가능성이 큰 프로세스들을 미리 로드.
"경험적 지식 ; 시간적/공간적 지역성에 따라 예측"

신중한 설계가 필요함.
잘못 결정할 경우, 요구페이징보다 성능이 저하됨.

이에 따른 해결책
=> 프로세스의 가상주소 공간에 있는 페이지를 2차 저장소에서도 그룹화

스왑 영역 (교체)

할당되었던 자원의 상호간의 이동이 되는 공간

실제 메모리가 가득차면 Swap공간이 사용
-> 물리 메모리의 비활성 페이지가 Swap 공간으로 이동 및 사용
-> 만약 물리 메모리의 공간이 여유가 되서 동작을 위한 용량이 확보되면 다시 Swap공간에서 물리메모리 영역으로 페이지가 할당.

조건
1. 요구페이징으로 인해 처음부터 물리메모리에 못올라 간 경우.
2. 메모리가 꽉차서 스왑영역으로 옮겨온 경우.

PTE 페이지 테이블 엔트리

구성

  • 페이지번호
  • 프레임 번호 : 가상 주소 -> 물리주소로 변환하는 인덱스 역할, 주소필드
  • 플래그 비트
    = 접근비트(사용유무) + 변경비트 + 유효비트(존재) + rwe비트(읽기쓰기실행)

유효비트 = 0

페이지가 메모리에 있음 = 스왑영역에 없음
=> 주소필드 : 물리메모리 프레임 번호 저장

유효비트 = 1

스왑영역에 있음 = 페이지가 메모리에 없음
=> 주소필드에 스왑영역 페이지 주소 저장

Page Falut

페이지를 요청했는데, 해당 페이지가 메모리에 없을 때.
=> 스왑영역에서 해당 페이지를 물리메모리로 옮겨야 함.

페이지 부재 해결 = Fetch

  1. 프로세스가 page 3을 요청.
  2. 페이지 테이블 유효비트 1 = 물리메모리에 부재. "Page Falut"
  3. 스왑영역에서 0번에 있는 페이지를 물리메모리의 비어있는 5번 프레임으로 스왑인
  4. 프레임 5로 접근해 해당 데이터를 프로세스에 넘김
  5. 페이지 테이블 갱신. [유효비트와 주소필드(스왑->물리메모리)]

메모리가 꽉 찼을 때의 페이지 부재

메모리 페이지 중의 하나를 스왑 영역으로 보내야함. (스왑아웃)

Segmentation Falut vs Page Falut

세그멘테이션 오류

접근할 수 없는 곳에 접근 했을 때 발생.
해결방안 : 해당 프로세스 강제종료

페이지 부재

접근하고자하는 페이지가 물리메모리에 없을 때 발생. 프로세스관련 X
해결방안 : 메모리관리자가 스왑 영역에서 페이지를 물리메모리로 옮김.

지역성 Locality

개념

프로세스가 편중된 패턴으로 메모리를 참조하는 경향.

기억장치에 접근하는 패턴이 특정 영역에 집중되는 성질.
페이지 교체 알고리즘이 쫓아낼 페이지를 찾을 때 바탕으로 하는 개념.

메모리 영역에서의 지역성

  • 페이징 시스템
    - 프로세스가 페이지들의 특정 부분 집합을 선호함.
    • 프로세스의 가상 주소공간에서 서로 가까이 모여있을 경향이 높음. (공간적)

종류

공간 지역성 ; 데이터의 위치

시간 지역성 ; 가까운 시간에 접근했던 데이터 우선

순차 지역성 ; 순서대로 진행


🔄 페이지 교체 알고리즘

goal : 앞으로 사용할 가능성이 적은 페이지를 선정해 쫓아내기.

성능평가 기준

같은 메모리 접근 패턴을 사용했을 때, 부재횟수와 성공횟수 비교

FIFO (First In First Out)

시간상 제일 먼저 들어온 페이지를 쫓아냄.

LRU ; Least Recently

페이지에 접근한 시간을 기준으로 선정.
가장 오랫동안 사용되지않은 페이지를 스왑 영역으로 옮김.
시간적 지역성 사용
많은 Overhead 발생

LFU ; Least Frequency

몇 번 사용됐는지 기준으로 페이지 선정
각 페이지가 사용된 정도를 기반으로 교체할 페이지 결정

NUR ; Not Used Recently

성능은 좋으나 오버헤드 ⬆️
참조비트와 변경비트 로 판단. (접근/변경)
참조비트가 0인 페이지 우선, 변경비트 0 (2순위)
같은 비트의 페이지가 여러개 = 랜덤 (3순위)

2차 기회 페이지 교체

가장 오래된 페이지의 참조 비트를 확인.
참조를 했었는지 확인.
오래됐는데, 참조비트도 off? 너 교체

시계 알고리즘

2차기회에 비해 참조비트 하나씩 추가 (초깃값 0)
원형큐 사용.
참조비트 1인 페이지는 0으로 바꾼 뒤에 안내쫓고 건너뜀. (2차기회)
페이지폴트 발생 시마다, 리스트의 포인터가 내려감.

profile
ad astra per aspera

0개의 댓글