CS/운영체제

#15 가상 메모리(Virtual Memory) - 하이브리드(Hybrid)

Scala0114 2022. 1. 18. 16:28

1. 하이브리드 시스템(Hybrid Paging/Segmentation System)

  • 페이징 시스템과 세그멘테이션 시스템의 장점을 결합
  • 프로그램을 논리적인 단위인 세그먼트(segment)로 분할한 뒤 각 세그먼트를 다시 고정된 크기의
    page로 분할하여 메모리에 적재할 때는 page 단위로 적재하는 방식
  • sharing, protection 문제를 해결하기 위해 프로세스 자체는 세그먼트 단위로 분할했지만 결국
    메모리에 적재되는 것은 page이기 때문에 메모리 관리 방식은 FPM과 유사

  • SMT, PMT를 모두 사용하기에 테이블 수가 증가하여 메모리 사용량이 증가하고 주소 매핑 과정이
    복잡해진다.
  • SMT, PMT를 모두 참조하기 위해 메모리 액세스 횟수가 3번(SMT, PMT, 목적 주소)으로 증가하기 때문에
    직접 매핑 방식으로는 성능이 저하되는 문제가 있음(TLB 사용이나 다른 여러 기법으로 극복 가능)

 

2. 주소 매핑(Address Mapping)

  • (segment number, page number, offset)의 쌍으로 이루어진 가상주소를 사용

  • SMT와 PMT를 모두 사용
    • 프로그램은 세그먼트 단위로 분할되었기 때문에 각 프로그램(프로세스)마다 SMT를 가짐
    • 세그먼트는 페이지 단위로 분할되었기 때문에 각 세그먼트마다 PMT를 가짐

  • 주소 변환 과정
    • SMT의 시작 주소가 bs 이고 세그먼트 번호 s, 페이지 번호 p, offset d가 주어졌을 때,
      해당 세그먼트의 엔트리 탐색 (= bs + s * SMT_entrysize), PMT의 시작주소인 bp를 구한다.

    • PMT에서 해당 페이지의 엔트리를 탐색(= bp + p * PMT_entrysize)하고  residence bit를 체크,
      메모리에 적재되어있지 않을 경우 page fault를 발생시켜 메모리에 적재하는 과정을 거친다.

    • PMT를 참조하여 페이지 프레임 번호를 구하고 offset을 더해 메모리상의 실제 주소를 계산
      (= page frame number * page_size + d)

  • 메모리 적재 단위는 page이기 때문에 SMT에는 residence bit 이 존재하지 않음