OS

[쉽게 배우는 운영체제] 8. 가상 메모리의 기초

noahkim_ 2024. 12. 12. 22:45

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다


1. 개요

  • 메모리의 크기는 컴퓨터마다 다름
  • OS가 물리 메모리의 크기에 의존한다면, 메모리 크기별로 프로그램이 동작하지 않을 수 있음

 

가상 메모리

  • 물리 메모리의 크기와 관계없이 프로세스에 큰 메모리 공간을 제공하는 기술
  • 프로세스는 특별한 고려 없이 메모리를 사용할 수 있습니다 (물리 메모리 크기, 위치 등) 

 

프로세스 가상 주소
  • 프로세스는 0번지부터 시작하는 연속된 메모리 공간을 가집니다.
  • 자신이 어느 위치에 있는지 신경쓰지 않아도 됩니다.

 

메모리 분할 방식
  • 운영체제를 제외한 나머지 메모리 영역을 일정한 크기로 나누어 프로세스에게 할당함
  • ex) 페이징, 세그먼테이션, 세그먼테이션-페이징 혼용

 

메모리 관리자

  • 메모리 자원을 효율적으로 관리하고 프로세스들이 요구하는 메모리를 적절히 제어하는 역할
기능 설명
스왑
물리 메모리가 부족하면 스왑 영역으로 일부 데이터를 보냄.
동적 주소 변환
가상 주소를 물리 주소로 변환하여 실제 메모리 위치를 참조.
매핑 테이블 관리
가상 주소와 물리 주소를 일대일로 매핑하는 테이블을 관리.

 

2. 페이징 기법

  • 고정 분할 방식을 이용한 가상 메모리 관리 기법
  • 물리 주소 공간을 같은 크기로 나누어 사용함

 

페이지 vs 프레임

페이지 프레임
가상 메모리에서 데이터를 저장하는 일정 크기의 블록
번호는 0번부터 시작하여 매겨짐.
물리 메모리에서 데이터를 저장하는 일정 크기의 블록.
페이지와 동일한 크기.

 

페이지 테이블

  • 어떤 페이지가 어떤 프레임에 있는지 기록하는 테이블

 

PTBR
  • 각 프로세스의 페이지 테이블의 시작 주소를 저장하는 레지스터
  • 각 프로세스의 PCB에 저장됨

 

관리
  • 프로세스마다 페이지 테이블을 운영함
  • 프로세스 수에 따라 페이지 테이블이 생겨나고, 페이지 테이블의 크기가 커지면 메모리 자원이 많이 필요
    • 페이지 테이블 용량이 커질수록, 실제 사용할 수 있는 영역이 줄어듬
    • 페이지 테이블의 크기를 적정하게 유지하는 것이 중요

 

페이지 테이블 관리 방식
매핑 방식 설명 장점 단점
직접 매핑 페이지 테이블이 물리 메모리에 상주 빠른 주소 변환 속도
많은 메모리 사용,
작은 메모리에서 비효율적
연관 매핑 페이지 테이블을 스왑 영역에 저장
일부만 로드
메모리 효율성
주소 변환 속도가 느릴 수 있음
집합-연관 매핑 페이지 테이블을 디렉토리로 나누어 관리 효율적인 주소 변환
연관 매핑의 문제 해결
일부 페이지 테이블을 여전히 검색 필요
역매핑 물리 메모리 프레임 번호 기준으로 테이블 관리 하나의 테이블만 존재
전체 테이블 스캔이 필요할 수 있음
  • 전체를 메모리에 관리할 경우와 일부를 스왑 영역에서 관리할 경우, 가상 주소를 물리 주소로 변환하는 방법이 달라짐
  • 프레임이 스왑 영역에 있을 경우, invalid라고 표시됨

 

주소 변환

  1. 가상 주소 x번지가 어느 페이지에 해당하는지 찾기
  2. 페이지 테이블의 페이지 y로 가서 해당 페이지의 프레임 찾기
  3. 물리 메모리 프레임 y의 (x번지 % 페이지 크기) 번째 위치에 접근

 

3. 세그먼테이션 기법

  • 프로세스의 크기에 따라 메모리를 분할
  • 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안됨 (limit 컬럼 사용)
  • 스왑 영역을 사용할 경우 address 컬럼에 'I'로 표시함

 

주소 변환

  1. 가상 주소에 따른 물리 주소를 구함
  2. 해당 물리 주소에서 쓰고자 하는 데이터가 범위에 넘어가는지 검사
  3. 물리 주소에 접근하여 원하는 데이터를 읽거나 씀

 

4. 세그먼테이션 - 페이징 기법

세그먼테이션 테이블 

  • 페이지 테이블의 페이지들 중 권한 비트가 같은 공통된 정보를 모아 관리하는 테이블

 

권한 비트
  • 페이지마다 접근 권한이 다름
  • 페이지 테이블의 모든 행에는 권한 비트가 추가됨
  • 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블의 권한 비트로 적절한 접근인지 확인함

 

중복된 권한 비트 문제 해결
  • 인접한 페이지에는 권한이 같은 페이지가 많은데, 중복적인 값이 많아 메모리를 낭비하게 됨
  • 이러한 문제를 해결하기 위해 세그먼테이션 테이블을 이용함
  • 논리적 단위(세그먼트)로 메모리를 나누고, 각 세그먼트마다 하나의 권한 비트 집합을 적용함

 

5. 캐시 매핑 기법

  • CPU 캐시와 RAM 사이에서 데이터를 효율적으로 교환하기 위해 사용하는 방법

 

태그

  • 캐시에 저장된 데이터가 원래 메모리의 어느 위치에서 온 데이터인지 식별하는데 사용하는 식별자

 

종류

항목 직접 매핑 연관 매핑
집합-연관 매핑
블록 각 메모리 블록은 하나의 고정된 캐시 위치에 매핑 메모리 블록이 캐시 메모리 어느 위치에나 매핑됨
캐시를 집합으로 나누고 각 집합 내에서 연관 매핑 사용
태그 캐시의 블록 번호 -
각 집합에 자리를 가지도록 설정
블록 거리 메모리 블록에서 캐시로 올라올 때의 위치 정보 - -
장점 캐시 히트나 캐시 미스를 빠르게 확인할 수 있음 캐시 충돌 적음
자리다툼 문제가 완화됨
단점 여러 메모리 블록이 같은 캐시 블록을 공유할 때 자리다툼 문제가 발생 캐시 검색이 느림
각 집합에서 직접 매핑을 사용하므로 자리다툼 문제를 완화하나 여전히 발생 가능