CS/운영체제

#12 가상 메모리(Virtual Memory) - 개념

Scala0114 2022. 1. 11. 12:43

1. 가상 메모리(Virtual Memory)

  • 실제로 사용 가능한 저장 장치를 논리적으로 추상화하여 실제 메모리처럼 보여주는 메모리 관리 기법

  • 사용자가 가상 주소(혹은 논리주소)를 사용하여 프로그램을 작성하면  가상 주소는
    메모리 관리 장치(Memory Management Unit)에 의해 실제 주소(혹은 물리주소)로 변환
  • 가상 주소는 논리적으로 연속적인 것처럼 보이지만 대응하는 실제 주소는 물리적으로
    연속적일 필요가 없기 때문에 비연속 할당(Non-Continuous Allocation) 방식이라고 할 수 있다.

  • 물리적으로 연속된 공간에 적재할 필요가 없기 때문에 프로세스 전체를 메모리에 적재할 필요 없이
    매 순간 필요한 부분만을 메모리에 적재하여 실행하는 방식을 취할 수 있다.
    => 적재되지 않은 부분은 swap device 에 저장되어있다.

  • 프로세스가 실제로 어떻게 적재되어있던 사용자는 프로세스가 연속된 메모리공간에 적재된 것으로
    간주하고 작업을 진행할 수 있다는 이점이 있다.

 

 

2. BMT(Block Map Table)

  • 커널 공간에 각 프로세스마다 하나씩 가지는 주소 매핑 테이블

  • 프로세스를 여러개의 블록(block)으로 나누고 각 블록이 메모리에 적재되어있는지 여부(residence bit),
    블록이 적재된 실제 주소(real address) 등의 정보를 관리

  • 사용자가 가상주소로 블록 b의 주소 d를 참조하려 할 때, b가 메모리에 적재되어있고(residence bit = 1)
    실제 주소가 a 라면 사용자가 참조하려는 실제 주소는 a + d가 된다.

 

 

3. 가상 메모리 기법의 종류

  • 페이징 시스템(Paging System)

  • 세그멘테이션 시스템(Segmentation System)

  • 하이브리드 시스템(Hybrid Paging-Segementation System)