[OS] - Virtual Memory - Paging System

오동훈·2021년 4월 16일
0

Operating System

목록 보기
8/16

1. Paging System

  • 프로그램 같은 크기의 블록으로 분할(Pages)
    - Page: 프로그램의 분할된 Block
    - Page frame: 메모리의 분할 영역
    Page와 같은 크기로 분할
  • 특징
    - 논리적 분할이 아님 (크기에 따른 분할)
    - Page 공유(sharing) 및 보호(Protection) 과정이 복잡함
    Segmentation 대비
    - 간단하고 효율적임
    Segmentation 대비
    - No external fragmentation (외부 단편화)
    - Internal fragmentation (내부 단편화) 발생 가능
    - Windows page size: 4KB

1.1 Address Mapping

  • Virtual Address: v = (p, d)
    - p : Page Number
    - d : Displacement(offset)
  • Address Mapping
    - PMT(Page Map Table) 사용
  • Address Mapping Mechanism (맵핑 방법)
    1. Direct Mapping(직접 사상) = block 맵핑과 비슷함
    2. Associative Mapping(연관 사상)
    - TLB(Translation Look-aside Buffer)
    3. Hybrid direct / Associative Mapping

1. Page Map Table (PMT)

  • PMT entry size = entry size (한 행의 크기를 entry size)
  • Page size = PageSize (프로세스의 page 크기)

2. Direct Mapping

  1. 해당 프로세스의 PMT가 저장되어 있는 주소 b에 접근
  2. 해당 PMT에서 Page p에 대한 entry 찾음
    - p의 entry위치 = b + p * entrysize
  3. 찾아진 entry의 존재 비트 검사
    1). Residence bit = 0인 경우 // Page fault
    - Swap device에서 해당 page를 메모리로 적재, PMT를 갱신한 후 3-2 단계 수행
    2). Residence bit = 1인 경우, 해당 entry에서 Page frame 번호 p'를 확인
  4. p'와 가상 주소의 변위 d를 사용하여 실제 주소 r 형성
    - r = p' * pagesize + d
  5. 실제 주소 r로 주기억장치에 접근

2.1 Direct Mapping Problem

  1. 메모리 접근 횟수가 2배이다. 이말은 즉, 성능 저하로 이루어진다.
    해결방안으로 Associative Mapping(TLB)가 있다
  2. PMT를 위한 메모리 공간이 필요하다.
    해결방안으로 PMT를 위한 전용 기억장치를 사용하는 방안이 있다.

3. Associate Mapping

  • Direct Mapping의 메모리 접근 횟수 단점 보완
  • TLB(Translation Look-aside Buffer)에 PMT 적재
  • PMT를 병렬 탐색
  • Low overhead, high speed
  • 비싸서 큰 PMT를 다루기가 어려움

3.1 Associate Mapping

4. Hybrid Direct / Associative Mapping

  • Direct Mapping과 Associate Mapping을 혼합하여 사용
  • 작은 크기의 TLB 사용
    - PMT: 메모리(커널 공간)에 저장
    - TLB: PMT중 일부 entry들을 적재
    최근에 사용된 page들에 대한 entry 저장
    - Locality(지역성) 활용
    프로그램의 수행과정에서 한번 접근한 영역을 다시 접근
    or 인접 영역을 다시 접근 할 가능성이 높음

4.1 Hybrid Direct / Associative Mapping

>> 프로세스의 PMT가 TLB에 적재되어 있는지 확인
1. TLB에 적재되어 있는 경우
- residence bit를 검사하고, Page frame 번호 확인
2. TLB에 적재되어 있지 않은 경우
- Direct Mapping으로 Page frame 번호 확인
- 해당 PMT entry를 TLB에 적재함

5. Memory Management

  • Page와 같은 크기로 미리 분할하여 관리 / 사용
    - page frame
    - FRM 기법과 유사
  • Frame Table
    - Page frame당 하나의 entry
    • 구성
      - Allocated / available field
      - PID field
      - Link field: For free list (다음에 누가 비어져있나 가리켜주는 애)
      - AV : Free list header (빈 공간을 찾아주는 포인터)

5.1 Page Sharing

  • 여러 프로세스가 특정 Page를 공유 가능
    Non-continuous allocation

>> 공유 가능 Page
1. Procedure Pages
- Pure code
2. Data Page
- Read-only data
- Read-write data
병행성(concurrency) 제어 기법 관리하에서만 가능

  1. 아래 사진은 Page를 공유하는 사진입니다. 다만, 다음과 같이 부르는 이름이 다르게 되면 엉뚱한 곳에 도달할 수 있다는 문제점을 가지고 있습니다.

  1. 위와 같은 문제점을 해결하기 위해, 공유할 Data의 이름을 같게 하는것 입니다. 프로세스들이 shared page에 대한 정보를 PMT의 같은 entry에 저장하도록 합니다.

5.2 Page Protection

  • 여러 프로세스가 Page를 공유할 때, Protecton bit 사용
VRWEBits 종류
1100타당, 비타당(V) 비트: 메인 메모리에 적재 여부
1110읽기(R) 비트: 읽기 여부
0000쓰기(W) 비트: 수정 여부
1111실행(E) 비트: 실행 여부

5.3 Paging System Summary

  • 프로그램을 고정된 크기의 Block으로 분할(Page)
    - 외부 단편화 문제 X
    - 메모리 통합 / 압축 불필요
    - 프로그램의 논리적 구조 고려하지 않음
    Page Sharing이 복잡
  • 메모리를 Block Size로 미리 분할(Page frame)
  • 필요한 Page만 Page frame에 적재하여 사용
    - 메모리의 효율적 활용
  • Page Mapping overhead
    - 메모리 공간 및 추가적인 메모리 접근 필요
    - 전용 H/W 활용으로 해결 가능
    하드웨어 비용 증가

지금까지의 내용은 HPC Lab의 강의와 자료를 참조했습니다

profile
삽질의 기록들🐥

0개의 댓글