가상 메모리 (2)

Updated:

가상 메모리가 필요한 이유는 뭘까???

  1. 프로그램이 메모리보다 큰 경우
  2. 여러개의 프로그램을 실행할 수 있다.

MMU(Memory Management Unit)

가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소로 변환해주는 하드웨어 장치


TLB(Translation Lookaside Buffer)

가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시(Page Table에 대한 일종의 Cache)


cass miss가 나서 메인메모리에 접근할 경우 TLB를 먼저 확인
TLB에 있으면(TLB hit) : 물리 주소에 접근하여 데이터를 가져옴
TLB에 없으면(TLB miss) : Page Table을 확인


요구 페이징(Demand Paging)

프로세스의 모든 데이터를 메모리에 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재함.


페이지 폴트(Page Fault) 인터럽트

  • 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트
  • 운영체제가 page fault가 일어나면, 해당 페이지를 물리 메모리에 올림

  1. 처음에 CPU가 가상 주소를 요청한다.
  2. MMU는 TLB로 가서 해당 물리주소가 존재하는지 확인한다.
    2-1) 해당 주소가 존재할 경우 CPU에서 바로 처리를 한다.
    2-2) 해당 주소가 존재하는지 모르는 경우 CR3레지스터로 page table에 접근한다.
  3. 물리주소가 invalid할경우, 페이지 폴트 인터럽트가 운영체제에 던져준다.
  4. 운영체제는 페이지 폴트 인터럽트를 처리하기 위해서 해당 페이지를 저장매체(4)에서 가져와서, 해당 데이터를 메모리에 올려주고 , (5) page table을 업데이트 한 뒤 해당 CPU에게 다시 던져준다.