[OS] Lecture 9. Virtual Memory (2_5) - kibitzing/EnGrow GitHub Wiki

유튜브 링크


진구

  • page: 책의 페이지가 페이지마다 크기가 다르지 않은 것을 생각하면 쉽다. 같은 크기로 프로세스 메모리를 잘라서 관리한다.
  • 페이지를 알아도 어디서 부터 시작할지가 중요. 책의 시작을 찍어주는게 b (base address)
  • real memory address = b + p * p_size + d
  • paging은 크기 위주로 잘라서 공유나 보안에는 약하다고 함
  • 다이렉트는 그냥 하면 되고, associate mapping은 하드웨어의 도움을 받음. 페이지 체크를 병렬처리해주는 하드웨어 (TLB), 비싸다고 함
  • 하이브리드는 그냥 최근에 본 친구들을 TLB에 얹어두는 것
  • page 가 메모리에 없고 스왑 메모리에 있으면 page fault가 난다고 함. 이게 성능에 안 좋다고.. 자주 보던 segmentation fault 가 생각나네.

세영

Paging system: 프로그램을 같은 크기의 블록(page)으로 분할

  • Page: 프로그램이 분할된 block
  • Page frame: 메모리의 분할, page의 크기와 같음
  • 물리적인 분할으로, 공유 및 보호 과정이 복잡
  • 간단하고 효율적
  • Internal fragmentation이 발생할 수 있음
  • Direct Mapping, Associative Mapping 방법이 있음

Direct Mapping

  1. 프로세스의 PMT (Page map table)가 저장되어 있는 주소에 접근
  2. PMT에서 page의 entry 획득
  3. residence bit 검사
    1. 0일 경우 page fault이므로 swap device에서 페이지를 메모리에 적재한 후 bit를 1로 변경
    2. 1일 경우 page frame 번호 확인
  4. page frame 번호와 offset을 사용하여 physical address 획득
  • 단점:
    • 메모리 접근 횟수가 2배
    • PMT를 위한 공간 필요

Associative Mapping

  • TLB (Translation Look-aside Buffer, 전용 하드웨어) 활용
  • PMT를 병렬 탐색하는 방법
  • 다 좋은데 비쌈

Hybrid Mapping

  • 지역성을 활용(최근에 사용된 페이지 가져오기)해서 TLB 에다가 PMT 중 일부 entry들만 적재