관리 메뉴

공부 기록장 💻

[운영체제/OS] 08장 가상 메모리 기초 본문

# CS Study/Opearing System

[운영체제/OS] 08장 가상 메모리 기초

dream_for 2022. 8. 21. 16:31

1. 가상 메모리 개요

1. 가상 메모리 시스템

  • 가상 메모리란, 물리 메모리 크기와 상관 없이 프로세스에 커다란 메모리 공간을 제공하는 기술
    • 프로세스는 운영체제가 어디에 있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용 가능하게 된다.

 

가상 메모리의 크기

  • 크기 = 물리 메모리 크기 + 스왑 영역의 크기
  • 가상 주소를 실제 메모리의 물리 주소로 변환하는 동적 주소 변환을 거치면 프로세스가 아무 제약 없이 사용자의 데이터를 물리 메모리에 배치할 수 있다.

 

가상 메모리의 메모리 분할 방식

  • 세그먼테이션(가변 분할)과 페이징(고정 분할)기법이 있으며, 세그먼테이션 기법은 외부 단편화의 문제로 잘 사용하지 않는다.
  • 따라서 세그먼테이션-페이징 혼용 기법을 주로 사용

 

 

 

2. 매핑 테이블의 필요성과 역할

  • 메모리 매핑 테이블(Memory Mapping Table) : 가상 메모리 시스템에서 메모리 관리자가 가상 주소와 물리 주소를 일대일 대응하는데 사용되는 매핑 테이블

 

 


2. 페이징 기법

1. 페이징 기법의 구현

  • 고정 분할 방식을 이용한 가상 메모리 관리 기법
  • 가상 주소의 분할된 각 영역인 **페이지(page)**에 번호를 매겨 관리하고, 물리 주소의 각 영역을 분할한 **프레임(frame)**에 번호를 매겨 관리한다.
    • 페이지와 프레임의 크기는 같으므로, 페이지는 어떤 프레임에도 배치될 수 있다.
    • 페이지 테이블을 통해 페이지와 매핑되는 프레임을 검색할 수 있다.
    • 페이지 테이블에 invalid는 해당 페이지가 스왑 영역에 있다는 것을 의미한다.

 


2. 페이징 기법의 주소 변환

  • 가상주소 VA = <P, D> (P: 페이지번호, D: 페이지의 처음 위치부터 해당 주소까지의 거리)
  • 물리주소 PA = <F, D> (F: 프레임 번호)

 


3. 페이지 테이블 관리

  • 다수의 프로세스가 있는 페이징 시스템
    • 프로세스의 수에 비례하여 페이지 테이블의 수와 크기도 같이 커지므로, 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어듬.
    • 따라서 페이지 테이블의 크기를 적정하게 유지하는 것이 페이지 테이블 관리의 핵심이다.

 

  • 물리 메모리(운영체제 영역) 내 페이지 테이블의 구조
    • 물리 메모리 크기가 작을 떄는 페이지 테이블의 일부 또한 스왑 영역으로 옮겨짐
    • 각 페이지의 테이블 시작 주소는 **페이지 테이블 기준 레지스터(PTBR)**에 보관되어 각 프로세스에 대한 페이지 테이블 접근 가능

 


 

 

4. 페이지 테이블 매핑 방식

  • 직접 매핑(direct mapping)
    • 페이지 테이블 전체가 물리 메모리의 OS영역에 존재
    • 별다른 부가 작업 없이 바로 주소 변환 가능

 

 

  • 연관 매핑
    • 전체 페이지 테이블을 스왑 영역에 두고, 페이지 테이블의 일부분을 변환 색인 버퍼(Translation Look-aside Buffer), 또는 연관 레지스터에 일부 페이지를 저장
    • 메모리에 접근하기 위해 먼저 변환 색인 버퍼에서 검색
      • TLB 히트: 변환 색인 버퍼에 있는 경우, 곧바로 물리 주소로 변환
      • TLB 미스: 스왑 영역에 저장된 직접 매핑 테이블을 사용해 프레임 번호로 변환

 

  • 장점: 전체 페이지 테이블을 물리 메모리에 보관하지 않기 때문에 메모리 절약 가능
  • 단점: TLB 미스가 번번히 발생하는 경우 시스템의 성능 저하, 변환 색인 버퍼를 모두 검색해야 한다는 단점

 

  • 집합-연관 매핑
    • 페이지 테이블을 같은 크기의 여러 묶음으로 나누고, 각 묶음의 시작주소를 가진 디렉터리 테이블을 새로 만들어 관리
    • 전체 페이지 테이블은 스왑 영역에 있으며, 일부 테이블은 묶음 단위로 메모리로 옮긴다.
    • 해당 묶음이 현재 메모리에 있는지, 스왑 영역에 있는지를 표시하는 디렉터리 테이블을 새로 만들어, 전체 테이블을 찾아보지 않아도 TLB 미스를 바로 알 수 있음

 

 

  • 역매핑
    • 물리 메모리의 프레임 번호를 기준으로 테이블 작성
    • 프레임번호가 인덱스이며, 테이블은 PID와 페이지 번호로 구성됨
      • 페이지 테이블의 행 수 = 프레임 수
    • 프로세스의 수와 상관없이 항상 일정 크기의 페이지 테이블을 유지 → 테이블의 크기가 매우 작음
    • 주소 변환 시 메모리 관리자는 주소 변환을 해야 하는 프로세스의 아이디와 페이지 번호가 물리 메모리에 있는지 역매핑 테이블에서 검색
      • 원하는 데이터가 없으면 스왑 영역에서 가져옴
    • 단점: 페이지 테이블을 모두 검사한 후에야 저장장치에 접근하기 때문에 검색 시간이 낭비됨

 

 


 

3. 세그먼테이션 기법

1. 세그먼테이션 기법의 구현

  • 세그먼테이션(segmentation) 기법
    • 메모리를 크기가 변할 수 있는 세그먼트로 나누는 기법
    • 세그먼트: 연관된 기능을 수행하는 하나의 모듈 프로그램
  • 세그먼테이션 테이블
    • limit: 세그먼트의 크기, address: 물리 메모리 상의 시작 주소
    • 각 세그먼트는 자신에게 주어진 메모리 영역(limit 만큼)을 넘어가선 안 됨

 

2. 세그먼테이션 기법의 주소 변환

  • 가상주소 VA = <S, D> (S: 세그먼트 번호, D: 해당 세그먼트의 물리주소 시작 위치로부터의 거리)
  • 세그먼트 S번의 시작 주소(address)를 알아낸 후, 거리 D만큼을 더해 물리 주소 번지를 구함
    • 거리가 세그먼트의 크기(limit)보다 큰 경우, 해당 프로세스를 강제 종료함

 

 


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

1. 메모리 접근 권한

  • 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한이 모두 다르다.
    • 읽기(read)/쓰기(write), 실행(execute), 추가(append) 권한 등
  • 프로세스의 영역별 메모리 접근 권한
    • 코드: 읽기 및 실행 권한
    • 데이터 영역: 읽기 및 쓰기 권한

 

2. 세그먼테이션-페이징 혼용 기법의 도입

  • 페이징 기법 + 접근 권한까지 고려한 테이블
  • 페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에 메모리 접근 권한과 관련된 권한 비트가 추가된다. → 주소 변환이 이루어질 때마다 메ㅗ리 관리자는 권한 비트를 이용해 유용한 접근인지 확인해야 함
    • 페이지 테이블의 각 행마다 권한 비트가 추가되면 페이지 테이블의 크기가 매우 커지는 문제가 있다.

 

3. 세그먼테이션-페이징 혼용 기법의 주소 변환

  • 가상 주소 VA = <S, P, D> (S: 세그먼트 번호, P: 페이지 번호, D: 거리)

  • 세그먼테이션 테이블의 해당 세그먼트 번호로 가서, 자신의 영역을 벗어나는 불법 접근이 아닌지, 권한이 없는 페이지에 접근하는 것이 아닌지 등을 확인 → 트랩 발생 시 프로세스 강제 종료
  • 이후 페이지 테이블에서 프레임 번호를 찾음 → Invalid인 경우 스왑 영역으로 이동

 

 

728x90
반응형
Comments