Computer Science/Operating System(OS)

Memory Management(2)-메모리 관리

J._.cobb 2022. 3. 21. 02:51

Noncontiguous Allocation

Paging

  • Process의 virtual memory를 동일한 사이즈(보통 4KB)의 page 단위로 나눔
  • Virtual memory의 내용이 page 단위로 noncontiguous 하게 저장
  • 일부는 backing storage에, 일부는 physical memory에 저장

Basic Method

  • physical memory를 동일한 크기의 frame으로 나눔
  • logical memory를 동일 크기의 page로 나눔 (frame과 같은 크기)
  • 모든 가용 frame들을 관리
  • page table을 사용하여 logical address를 physical address로 반환
  • External fragmentation 발생 안 함
  • Internal fragmentation 발생 가능

 

Paging Example

  • page table에는 각 page별 entry가 존재하고 entry는 물리적인 frame의 위치를 알려줌

 

Address Translation Architecture

  • Offset: 페이지 내에서 얼마큼 떨어져 있는지 나타냄
  • Page 내부에서의 상대적인 위치(Offset)는 PageTable에서 Main Memory로 Page가 옮겨지더라도 똑같기 때문에 주소변환에도 영향을 받지 않음.

 

Implementation of Page Table

  • page table은 register와 cache에 들어가지 못하고, main memory에 상주
    • 32비트 주소체계의 컴퓨터는 약 4GB의 주소공간을 갖는 프로그램을 지원할 수 있다. 
    • Page의 단위가 4KB이기 때문에 1M(약 백만 개)가량의 page entry를 담기에는 용량이 부족하기 때문
    • 또한, Page table은 각 프로그램마다 존재하기 때문에 여러 개가 생성된다.
  • Page-table base register (PTBR)가 메모리 상의 page table의 시작 위치 가리킴
  • Page-table length register(PTLR)가 테이블 크기를 보관
  • 모든 메모리 접근 연산에는 두 번의 memory access 필요
    • page table을 통한 주소전환을 위해 접근 1번
    • 주소 전환 후 실제 데이터를 메모리에서 접근하기 위한 data/instruction 접근 1번
  • 속도의 향상을 위해 associative register 혹은 translation look-aside buffer(TLB)라 불리는 고속의 lookup hardware cache 사용
    • 두 번의 메모리 접근 연산은 비용이 크기 때문 (시간이 2배로 걸림)

*TLB : 일종의 cache, 메인 메모리보다 빠르고 메인 메모리와 CPU사이에 존재하는 주소변환을 해주는 계층

 

Paging Hardware with TLB

  • CPU가 논리적인 주소를 주게 되면 메모리 상에 있는 pagetable에 접근하기 전에 TLB에 먼저 접근해서 TLB의 정보로 주소변환이 가능한지 확인

 

Associative Register

  • Associative register (TLB)
    • TLB에는 page table 중 일부(빈번히 참조되는 엔트리)만 존재
      • parallel search(전체 탐색)가 가능
  • Address translation
    • page table 중 일부가 associative register에 보관되어 있음
    • 만약 해당 page #가 associative register에 있는 경우 곧바로 frame #을 얻음 (main memory 1번 접근)
    • 그렇지 않은 경우 main memory에 있는 page table로부터 frame #을 얻음 (main memory 2번 접근)
    • TLB는 context switch 때 flush (remove old entries)
      • 프로세스마다 주소변환 정보가 다르기 때문
  • page table과 TLB의 차이
    • 주소 변환 과정에 필요한 탐색 방법에 차이가 있음
      • TLB: parallel search
      • page table: p(page number) 번째 entry에 직접 접근
    • TLB는 page number와 frame number가 쌍을 이룸
      • 이를 통해 main memory에 1번만 접근 가능

 

Effective Access Time(실제 메모리 접근 시간)

  • Associative register lookup time은 main memory에 접근하는 시간인 1보다 매우 작음
  • <hit> = (1+ε)α
    • 1 : main 메모리에 접근하는 시간
    • ε : TLB에 접근하는 시간
    • α : TLB에서 정보가 찾아지는 비율
  • <miss> = (2+ε)(1-α)
    • 2 : main 메모리에 접근하는 시간
      • 주소변환을 위해 메모리에 있는 page table에 접근 1 + 주소변환 후 실제 데이터 접근을 위한 메모리 접근 1
    • ε : TLB에 접근하는 시간
    • 1-α : TLB에서 정보가 찾아지지 않는 비율
  • 따라서 전체 결과인, 2 + ε - α 는 α가 1에 가까운 높은 비율이기 때문에 페이지 테이블만 존재하는 경우보다 빠르다는 것을 알 수 있음

 

Two-level Page Table

  • 사용 목적: 시간이 더 걸려도 Page Table을 사용하기 위한 공간을 줄이는 것
    • 사용되지 않는 주소 공간에 대한 outer page table의 엔트리 값은 NULL로 지정하고 대응하는 inner page table은 만들지 않음.
  • 현재의 컴퓨터는 address space가 매우 큰 프로그램을 지원
    • 32 bit address 사용 시 : $2^{32}$ (4G)의 전체 메모리 주소 공간
      • page size가 4K 시 1M 개(약 백만 개)의 page table entry 필요
      • 각 page entry가 4B시 프로세스당 4MB의 page table 필요
      • 그러나, 대부분의 프로그램은 4G의 주소 공간 중 지극히 일부분만 사용하므로 page table 공간이 심각하게 낭비됨
      *page table이 비었다고 해서 그 공간을 없애고 page table을 구성할 수 없음 → 앞에서부터 p번째 page까지 index를 통해서 접근하기 때문
  • page table 자체를 page로 구성
    • 즉, 안쪽 page table의 크기는 page크기와 똑같음

 

Two-Level Paging Example

  • offset : Page 하나의 크기가 4KB(=2^(12) Byte)이므로 이를 구분하기 위해서는 12bit가 필요.
  • p2 : 각 entry의 크기는 4Byte이기 때문에 Page하나 당 1K(=2^(10))개씩 존재하므로 이를 구분하기 위해서 각각 10bit씩 필요
  • p1(바깥쪽 page table) : 32bit - offset(12bit) - p2(10bit) = 10bit

 

Address-Translation Scheme

  • 2단계 페이징

 

 

 

 

 

 

출처

KOCW :  이화여대 반효경 교수님 <운영체제, 2014>