가상 메모리

Seung jun Cha·2023년 4월 29일
0
  • 가상메모리는 실제의 물리 메모리와 논리 메모리를 분리하여, 사용자가 메모리 크기를 고려하지 않게 하는 기술이다.
    논리적 메모리는 프로세스가 인식하는 메모리 크기로 실제 물리적인 메모리와는 독립적으로 정의된다.
    어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점을 고려해서 만들어졌다.

  • 개념과 필요성 : 각 프로세스에게 실제 물리적인 메모리보다 큰 독립된 가상 주소 공간을 제공한다.
    가상주소를 물리적인 메모리와 매핑시켜서 프로세스가 가상 주소에 접근하면, MMU(Memory Management Unit)가 가상 주소와 매핑된 물리적인 주소를 찾고, 프로세스가 물리주소를 통해 실제 메모리에 접근합니다. 가상 메모리는 프로그램의 크기와 복잡성에 유연하게 대응하기 위해서 사용한다.

  • 가상메모리 작동방식 : 운영체제는 프로세스가 사용하는 메모리가 물리적인 메모리보다 클 경우, 보조기억장치를 사용하여 스왑인, 스왑아웃하면서 메모리를 관리한다. 그러면 물리적 메모리가 부족한 상황에서도, 프로세스가 요구하는 메모리 공간을 모두 할당할 수 있게 됩니다.

    • 스왑인은 운영 체제가 보조 기억장치에서 필요한 데이터를 읽어와 실제 메모리로 가져오는 작업을 말한다. 스왑인은 가상 주소와 실제 메모리 주소의 매핑 정보를 참조하여 적절한 위치에 데이터를 로드하게 됩니다.
    • 스왑아웃은 운영 체제가 메모리에 저장된 데이터나 프로세스를 보조 기억장치로 이동시키는 작업을 말한다. 스왑아웃은 메모리 부족 상황에서 다른 데이터를 사용하기 위한 작업이다. 이때 운영 체제는 어떤 데이터나 프로세스를 스왑아웃할지를 결정하고, 해당 데이터를 보조 기억장치로 이동시킵니다.
  • MMU(Memory Management Unit) : 가상 메모리와 실제 메모리 간의 매핑을 관리하는 하드웨어 장치입니다. 가상 주소의 페이지 번호를 물리 주소와 매핑하여 실제 메모리에 접근할 수 있게 해줍니다.

  • 페이지 : 프로세스의 코드와 데이터가 담겨 있는 가상메모리의 가장 작은 단위로 일반적으로 페이지 크기는 4KB, 8KB 또는 16KB와 같은 고정된 크기로 정해져 있다. 각 페이지는 고유한 페이지 번호를 가지고 있다.

  • 페이지 테이블 : 가상 주소와 실제 메모리 주소 간의 매핑 정보를 담고있다. 각 페이지는 페이지 번호가 있으며, 페이지 번호는 페이지 테이블의 인덱스로 사용됩니다. 페이지 테이블은 MMU가 관리한다.

  • 페이지 폴트 : 가상 주소에 매핑되는 물리주소가 없는 경우 발생한다. 페이지 폴트가 발생하면 운영 체제는 페이지 폴트 예외를 처리하고, 스왑인을 통해 요청한 페이지를 물리 메모리로 로드하여 가상 주소와 물리 주소 간의 매핑을 수행합니다. 그리고 프로세스는 해당 페이지에 다시 물리주소에 접근하여 작업을 계속할 수 있습니다.

  • 과정 : 각 프로세스마다 페이지 테이블을 가지고 있고 PCB는 테이블에 접근이 가능하다. 페이지 테이블의 주소는 별도의 레지스터에 저장된다
    CPU가 가상메모리에 접근 시 MMU가 레지스터에 있는 페이지 테이블 주소에 접근하고, 물리주소를 가져온다
    (프로세스 - 레지스터 - 페이지테이블 - MMU - 물리주소)

  1. 물리적인 메모리를 효율적으로 사용할 수 있습니다.
  2. 물리적인 메모리보다 큰 프로그램을 실행할 수 있습니다.
  3. 각 프로세스에게 독립된 가상 주소 공간을 제공하기 때문에, 프로세스 간 메모리 침범을 방지할 수 있습니다.
  4. 메모리 내/외부에서 파일을 읽어들이거나 쓸 때, 페이지 단위로 입출력을 처리하기 때문에 I/O 처리 속도가 향상됩니다.
  • 페이징 : 내부 단편화 문제발생

  • segmentation 기법 : 외부단편화 문제 발생 , 각 세그먼트는 고유한 이름과 크기를 가진다. 기억장치 보호키가 필요하다

0개의 댓글