가상 메모리(Virtual Memory)란?

이 글은 이전에 포스팅한 Cache에 대해 알고 있다는 전제하에 설명합니다.

Virtual Memory

컴퓨터 발전에서 큰 획을 그은 발상

Virtual Memory vs Physical Memory

  • 우리는 VA과 PA을 mapping 시켜주기 위해서 테이블이 필요합니다. 이 테이블을 memory에 두고 VA을 index로 해서 해당하는 PA값을 연결시켜 주는 것이 Virtual Memory System입니다.
  • 일단 지금은 테이블을 MainMemory(Ram) 메모리에 저장한다고 생각해도 됩니다.
  • 만약 한 페이지에 1 바이트라고 정한다면 32비트 메모리는 2^32, 즉 4G 크기의 table이 필요합니다.
  • 너무 크기 때문에 이렇게 저장을 하면 테이블만 넣어도 메모리의 용량이 꽉 차버립니다.

Page Table

Page

  • page란 저장의 단위로 한 페이지당 2^p만큼의 데이터를 저장하는 것입니다.
  • Vm와 Pm을 1byte씩 mapping시키지 않고 더 큰 단위로 mapping하면 page table을 저장하는 데 더 적은 메모리로 가능하기 때문입니다.
  • 만약 4KB로 페이지 테이블을 적용한다면 4KB = 2122^{12} byte이므로 32/12 = 20bit.
  • 2202^{20} = 1mb만으로 테이블을 표현할 수 있게 됩니다.
  • 여러 프로그램에서 메모리 주소 1000에 접근하려고 한다고 모두에게 같은 Physical Address를 주는 것은 좋은 생각이 아닙니다. 따라서 각각의 프로그램별로 고유의 페이지 테이블을 가지고 있습니다. 이를 가르키는 레지스터를 PTBR(Page Table Base Register)라고 하는데요. 지금은 이름만 기억해두겠습니다.

Page Table의 상태

  • page Table은 다음과 같이 생겼습니다.
  • PTE란 PageTableEntry의 약자로 VP(Virtual Page)의 페이지 인덱스라고 생각하면 됩니다.
  • VP는 PP(Physical Page)에 할당될 수도 있지만 PP의 공간이 부족할 경우 Disk에 할당될 수 있습니다.
  • valid : 해당 VP가 PP에 할당되었는지 즉 Disk에 저장되지 않고 PP에 Cache되었는지를 알려줍니다.
  • null : VP가 PP에도 Disk에도 할당되지 않은 상태입니다.
  • 빈 칸: VP가 Disk에 할당된 상태입니다.
  • 파란 칸 : VP가 PP 즉 Dram에 할당되어 있습니다. 이 상태를 Cache되었다고 합니다.

Mapping

  • allocate : VP를 Dram이나 Disk에 할당하는 것을 말합니다.
  • Cache : 할당되지 않았거나 Disk에 있던 VP를 Dram에 할당하는 것을 말합니다. Dram Cache라고도 합니다.

Page hit

  • Page hit은 Cache가

Page Fault( == Dram cache miss)

성능 평가

  • Locality
  • working set

댓글

이 블로그의 인기 게시물

[Linux, Unix] export, echo 명령어 알아보기

IEEE 754 부동 소수점 반올림과 근사