ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 운영체제 ] 6. 가상메모리 와 페이징
    CS/운영체제 2021. 10. 3. 16:05

    전 포스팅  "4. 메모리 구조"  에서 유닉스 계열의 운영체제에서는 프로세스당 4GB 의 메모리를 할당한다고 했다. 그러나 보통 8GB , 16GB 를 사용하는 우리가 아주 많은 프로세스를 돌릴 수 있는 원리는 무엇인가?

    이에 대한 해답이 가상메모리에 있다. 

     

    1. 가상메모리란?

     

    : 메모리가 실제 메모리 보다 많아 보이게 하는 기술

    • 프로세스의 모든 데이터가 당장 필요하지 않는다
    • 프로세스 구조에 데이터들은 가상 주소로 매팽되고, 실제 해당 주소에서 데이터를 실행(읽고 / 쓸때) 만 물리 주소로 바꾸어 주면 된다.
    • CPU (program counter 레지스터) 에는 가상 메모리 주소가 저장되고 이를 사용할때 물리주소 데이터를 전달받아 처리한다.

     

    MMU (Memory Management Unit):  CPU에 코드 실행시 , 가상 주소 메모리에 접근하고 해당 주소의 물리 주소값으로 변환하여 CPU 에게 제공하는 하드웨어 장치

     

     

    2. 페이징 시스템

     

    • paging: 크기가 동일한 page로 가상 공관과 이에 매핑되는 물리주소 공간을 관리하는 것
    • page(page frame) : 고정된 동일한 크기의 block
    • page table : 프로세스 PCB에 Page Table 구조체를 가리키는 주소가 있고 이 PageTgable 에는 물리 메모리에 있는 page frame 번호와 해당 페이지의 첫 물리 주소 정보를 메ㅠㅣㅇ한 표이다.

    예를 들어 리눅스에서 4kb 로 paging 하고 page Table 에 해당 정보를 기록 /사용한다.

     

     

    P : 가상 메모리의 Page 번호

    d : P 안에서 참조하는 위치 (변위 , offset ) 

    1.  CPU 에서 가상 주소의 실행을 통해 데이터를 요청하게됨
    2.  Page tabe 에 해당 가상 주소와  그  Page 번호 (P) 가 있는지 확인한다.
    3.  page 번호 가 존재하고 이와 매핑된 첫 물리 주소인 P' 를 알아낸다.
    4.  P' 로 주터 변위 만큼을 더해 실제 물리주소를 구해낸다.
    5.  CPU로 해당 주소를 전달한다.

    만약 메핑된 물리주소가 없다면 페이지 폴트가 발생한다.

     

    3. 요구 페이징 Demandin paging 

    • 프로세스의 모든 데이터를 메로리로 적재하지 않고 , 실행 중 필요한 시점에서만 메모리로 적재함
      • 미리 모든 프로세스 관련 데이터를 메모리에 올리는 선행 페이징과 반대개념
      • 더 이상 필요하지 않는 페이지는 다시 저장 매체 저장 (페이징 교체 일고리즘 필요)

     

    4. 페이지 부재(Page Fault)

    • CPU 에서 접근하려는 페이지가 물리 메모리에 없는 경우 발생하는 하나의 인터럽트이다.
    • 페이지 폴트는 많은 리소스 낭비를 유발하므로 이를 최소화 할수 있는 페이지 교체 정책이 필요함
      • FIFO , LRU(Least Recently Used : 가장 오래전에 사용된 페이지 교체) , LFU ...

     

    5. 정리

     

     

    CPU가 가상 메모리 주소를 MMU에 요청하면 MMU는 TLB에 최근에 프로세스에서 그 가상 메모리 주소와 물리 메모리 주소를 매핑한 적이 있는지 찾아보고 있다면 그 물리 메모리 주소로 변환하고, 없다면 CR3 레지스터에 있는 값을 이용해서 그 프로세스 의 page table에 있는 값과 매핑을 시켜서 그 물리 메모리 주소로 변환한다. 이 때 만약 요구 페이징 시스템에 의해서 아직 물리 메모리 주소와 매핑이 되지 않았다면 (valid-invalid 값 확인해서 i라면), 페이지 폴트 인터럽트가 일어나게 되고 그때가 돼서야 필요한 페이지가 물리 메모리에 올려지고 page table이 업데이트가 된다. 이후 물리 메모리 주소에 접근하여 데이터를 전달하게 된다.

    댓글

Designed by Tistory.