Data Engineering/혼공컴운

혼자 공부하는 컴퓨터구조 + 운영체제 14장 정리

potatode 2025. 4. 1. 20:37

14. 가상 메모리

14-1. 연속 메모리 할당

: 프로세스에 연속적인 메모리 공간을 할당하는 방식

스와핑

: 사용하지 않는 프로세스들을 보조기억장치로 쫓아내고, 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식

  • 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역
  • 스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
  • 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨지는 것
  • 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스 동시 실행 가능

메모리 할당

  • 비어있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식
  • 최초 적합
    • 검색 최소화 가능
    • 빠른 할당 가능
  • : 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스 배치하는 방식
  • 최적 적합
  • : 빈 공간을 모두 검색 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스 배치
  • 최악 적합
  • : 빈 공간을 모두 검색 후, 프로세스가 적재될 수 있는 공간 중 가장 공간에 프로세스 배치

외부 단편화

: 메모리 사이에 빈 공간이 생기지만, 그 공간보다 큰 프로세스를 적재하기 어려운 상황으로 메모리 낭비가 되는 현상

  • 해결방법
    • 압축
    • : 빈 공간을 하나로 모으는 방식
  • 페이징 기법

14-2. 페이징을 통한 가상 메모리 관리

페이징이란

: 논리 주소 공간을 페이지라는 일정한 단위로 자름

  • 프레임(메모리 물리 주소 공간)이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
  • 페이지 아웃
  • : 메모리에 적재될 필요가 없는 페이지들은 보조 기억 장치로 스왑 아웃
  • 페이지 인
  • : 실행에 필요한 페이지들은 메모리로 스왑 인

⇒ 한 프로세스 실행을 위해 프로세스 전체가 메모리에 적재될 필요가 없다.

페이지 테이블

: 페이지 번호와 프레임 번호를 짝지어주는 일종의 이정표

  • 현재 어떤 페이지가 어떤 프레임에 할당되어있는지 알려줌
  • CPU 내의 페이지 테이블 베이스 레지스터는 각 프로세스의 페이지 테이블이 적재되니 주소를 가리킴
  • TLB : 페이지 테이블의 캐시 메모리
    • 페이지 테이블의 일부 내용 저장
    • TLB 히트 : 논리주소에 대한 페이지가 TLB에 있을 경우
    • TLB 미스 : 없는 경우

페이징에서의 주소 변환

  • 페이징 시스템에서는 모든 논리 주소가 기본적으로 페이지 번호와 변위로 이루어짐
    • 변위 : 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보

페이지 테이블 엔트리

: 페이지 테이블의 각각의 행들

  • 유효 비트 : 해당 페이지에 접근 가능한지 여부
    • 유효비트가 0인 메모리에 적재 되어있지 않은 페이지로 접근하면
    • ⇒ 페이지 폴트 발생 = 예외
  • 보호 비트 : 페이지 보호 기능을 위해 존재하는 비트
    • 읽기, 쓰기, 실행의 권한 조합
  • 참조 비트 : CPU가 이 페이지에 접근한 적이 있는지 여부 나타냄
  • 수정 비트 : 페이지에 데이터를 쓴 적이 있는지 수정여부
    • 더티 비트

14-3. 페이지 교체와 프레임 할당

요구 페이징

: 프로세스를 메모리에 적재할 때 필요한 페이지만을 메모리에 적재하는 기법

  • 실행에 요구되는 페이지만 적재
  • 필요한 해결요소
    • 페이지 교체
    • : 쫓아낼 페이지를 결정하는 방법
    • 프레임 할당

페이지 교체 알고리즘

  • 좋은 페이지 교체 알고리즘 : 페이지 폴트를 적게 일으키는 알고리즘
  • 알고리즘 평가 방법 : 페이지 폴트 횟수
  • 페이지 참조열을 통해 페이지 폴트 횟수 알 수 있음
    • 페이지 참조열 : CPU가 참조하는 페이지들 중 연속되는 페이지를 생략한 페이지열
      • 생략하는 이유 : 중복된 페이지를 참조하는 행위는 페이지 폴트를 발생시키지 않기 때문
  • FIFO 페이지 교체 알고리즘
    • 아이디어와 구현은 간단하지만, 마냥 좋은 기법이 아님
      • 프로그램 실행 내내 필요할 수 있음
  • : 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식
  • 최적 페이지 교체 알고리즘
    • 가장 낮은 페이지 폴트율을 보장하는 알고리즘
    • 단점 : 구현이 어려움
      • 앞으로 오랫동안 사용되지 않을 페이지 예측이 어려움
      • 그래서 보통 성능 평가 목적으로 사용
  • : CPU에 참조되는 횟수를 고려하는 페이지 교체 알고리즘
  • LRU 페이지 교체 알고리즘
  • : 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘

스래싱과 프레임 할당

  • 사용할 수 있는 프레임 수가 적어도 페이지 폴트는 자주 발생
  • 스래싱 : 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
  • 멀티프로그래밍의 정도 : 메모리에서 동시 실행되는 프로세스의 수
    • 정도가 높음 → 많은 프로세스 동시 실행 중
    • 멀티프로그래밍 정도가 높음 ≠ CPU 이용률 증가
  • 스래싱 발생 이유 : 각 프로세스가 필요로 하는 최소 프레임수가 보장되지 않음
  • 프레임 할당 방식
    • 균등 할당
    • 비례 할당 : 크기에 따라 프레임 할당
  • 프레임 결정 방식
    • 작업 집합 모델
      • 프로세스가 일정 기간 동안 참조한 페이지 집합을 기억
      • 작업 집합 : 실행 중인 프로세스가 일정 시간동안 참조한 페이지의 집합
      ⇒ 작업 집합 크기 만큼 프레임 할당
    • 페이지 폴트 빈도
    • : 페이지 폴트율에 상한선, 하한선을 정하고, 이 범위 안에서만 프레임 할당
반응형