이번 글에서는 파편적으로 가지고 있던 가상메모리에 대해 아는것을 쭉 정리하여 써보고자한다.

개요

가상메모리(Virtual Memory)란 이름 그대로 ‘실제 물리 메모리’가 아니라 가상으로 부여된 메모리를 의미한다.

프로그램이 내부 메모리, 정확히는 가상 메모리에 접근하고자 할 때, 다음과 같은 과정을 거친다.

  1. TLB라는 내부 캐시를 확인하여, ‘가상 메모리’와 매핑된 ‘물리 메모리’가 존재하는지 확인한다.
    1. TLB hit인 경우, 해당하는 ‘물리 메모리’를 반환한다. (end)
    2. TLB miss인 경우, 아래 단계로 넘어간다.
  2. MMU라는 CPU내부 모듈에 접근하여 page table을 조회한다.
  3. page table에 매핑된 ‘물리 메모리’가 존재한다면 이를 반환한다. (end)
    1. 존재하지 않는다면 page fault로 처리되어 다음 과정으로 넘어간다.
  4. 커널이 매핑할 수 있는 물리 메모리를 찾아서 이를 page table에 적용한다.
  5. 적용된 물리 메모리는 요청된 프로그램으로 반환된다.
  6. 이때, 적용된 메모리는 TLB에 캐싱된다.