CS/OS

가상 메모리

KDGdev 2023. 2. 11. 02:23

가상 메모리


가상 메모리란 프로세스를 실행할 때 실행에 필요한 일부(페이지)만 메모리에 로드하고 나머지는 디스크에 둠으로써 컴퓨터가 실제로 이용 가능한 메모리 자원을 매우 큰 메모리로 보이게 만드는 기법입니다.

 

 

가상 메모리는 TLB와 Page Table를 통해 필요한 페이지에 접근합니다.

TLB은 가장 최근에 접근한 페이지의 가상주소와 물리주소,

페이지 테이블은 각각의 프로세스마다 프로세스가 가진 모든 페이지의 가상주소와 물리주소가 존재합니다.

 

  • TLB(Translation Lookaside Buffer)
    • 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시입니다.
    • Page Table에 있는 리스트 중 일부를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상할 수 있는 캐시 계층입니다.
  • Page Table
    • 물리 기억장치(RAM) 상에 존재하는 가상 주소와 실제 주소가 매핑되어 있는 테이블입니다.
    • 각각의 프로세스마다 하나의 Page Table을 가지고 있습니다.

 

위 그림은 가상메모리의 과정을 간략히 설명하였습니다. 이어서 구체적으로 설명해 보겠습니다.

  1. 프로세스가 필요한 페이지의 요청합니다. 
  2. TLB에서 필요한 페이지에 해당하는 가상주소가 있는지 확인합니다.
    1. 있으면 매핑된 물리주소를 확인하고 주기억장치에 해당하는 주소로 접근이 가능합니다. -> TLB Hit
    2. 없으면 3번으로 이동합니다. -> TLB Miss
  3. 주기억장치로 이동하여 Page Table을 확인해 해당하는 가상주소를 가진 페이지가 있는지 확인합니다.
    1. 있으면 TLB에 해당 페이지를 갱신하고 다시 1번 과정으로 돌아와 요청을 재개합니다. 이렇게 되면 주기억장치에 총 2번 접근해야 합니다. (Page Table 접근, 필요한 페이지 접근)
    2. 없으면 4번으로 이동합니다. -> Page fault
  4. 보조장치에서 해당하는 페이지를 주기억장치에 로드합니다. 만약 주기억장치에 공간이 있을 때는 바로 적재할 수 있으나 공간이 없을 때는 특정한 알고리즘을 통해 원래 있던 페이지와 교체합니다.
    1. 주기억장치에 해당하는 페이지를 적재한 후 Page Table과 TLB를 갱신하고 1번 과정으로 돌아와 요청을 재개합니다.

우리는 알맞은 알고리즘을 통해 4번의 경우인 Page fault가 일어나지 않게 해야합니다. 알고리즘의 내용은 다음 포스팅에서 다루겠습니다.

 

※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.