[운영체제] 가상 메모리 - (2)

Yeongsan Son·2021년 7월 3일
0

페이징 시스템

  • 페이징의 개념

    • 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리
    • 하드웨어 지원이 필요
      • 예) Intel x86 시스템(32비트)에서는 4KB, 2MB, 1GB 지원
    • 리눅스에서는 4KB로 페이징
    • 페이지 번호를 기반으로 가상 주소와 물리 주소 매핑 정보를 기록하고 사용
  • 리눅스 프로세스(4GB)의 PCB에 Page Table 구조체를 가리키는 주소가 있음

  • Page Table에는 가상 주소와 물리 주소간 매핑 정보가 있음

시스템 구조

  • page/page frame: 고정된 크기의 block (4KB)
  • paging system
    • 가상 주소 v = (p, d)
      • p: 가상 메모리 페이지
      • d: p 안에서 참조하는 위치

  • 페이지 크기 4KB 예
    • 가상 주소의 0비트에서 11비트가 변위를 나타냄
    • 12비트 이상이 페이지 번호가 될 수 있음

페이지 테이블

  • page table

    • 물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리 주소 정보를 매핑한 테이블
    • 가상 주소 v = (p, d)라면
      • p: 페이지 번호
      • d: 현재 페이지(첫 페이지부터 얼마 떨어진 위치의 페이지인지)
  • paging system 동작

    • 해당 프로세스에서 특정 가상 주소 액세스
      • 해당 프로세스의 page table에 해당 가상 주소가 포함된 page 번호가 있는지 확인
      • page 번호가 있으면 이 page가 매핑된 첫 물리 주소를 알아내고
      • p' + d가 실제 물리 주소가 된다

페이징 시스템과 MMU

  • CPU는 가자 주소 접근 시
    • MMU 하드웨어 장치를 통해 물리 메모리 접근

  • 프로세스 생성 시, 페이지 테이블 정보 생성
    • PCB 등에서 해당 페이지 테이블 접근 가능하고 관련 정보는 물리 메모리에 적재
    • 프로세스 구동 시, 해당 페이지 테이블 base 주소가 별도 레지스터에 저장(CR3)
    • CPU가 가상 주소 접근 시, MMU가 페이지 테이블 base 주소를 접근해 물리 주소 취득
profile
매몰되지 않는 개발자가 되자

0개의 댓글