CPU의 가상 메모리, x86의 구현 및 작동

가상 메모리 현대 PC의 가장 중요한 요소 중 하나입니다. 지원 없이는 PC에서 복잡한 멀티 태스킹 운영 체제를 실행할 수 없습니다. 가상 메모리가 무엇이며 PC에서 그 기능이 무엇인지에 대한 빠른 검토를 제공합니다.

모든 CPU, 아키텍처에 관계없이 일반적으로 시스템과 통신하기위한 두 가지 유형의 핀이 있습니다. 메모리.

CPU의 가상 메모리

  • 데이터가 메모리와 송수신되는 데이터 핀.
  • 데이터가있는 메모리가 표시된 핀 주소 지정.

그러나 주소 지정은 무엇을 의미합니까? RAM 메모리는 물리적으로 테이블로 구성되며 특정 데이터에 직접 액세스 할 때 해당 데이터가 위치한 행과 열을 표시하는 것입니다. 예를 들어 주소가 6 비트이면 메모리에 64 개의 요소가있을 수 있습니다 (2 6 ) 약 3 비트는 행을 알려주고 다른 3 비트는 데이터가있는 열을 알려줍니다.

가상 메모리의 유용성과 정의

메모리아가상

가상 주소 지정은 메모리 주소를 직접 가리키는 방식으로 작동하지 않지만 대신 메모리 페이지로 구성된 가상 주소를 사용합니다.

국내 시장에 출시 된 최초의 8 비트 및 16 비트 CPU는 물리적 주소 지정 만 지원했지만, 그 시스템은 동시에 하나의 애플리케이션 만 실행했기 때문에 문제가되지 않았지만 시간이 지남에 따라 더 강력한 개인용 컴퓨터가 나왔습니다. . 동시에 여러 응용 프로그램을 실행하는 환경에서 작업 할 때 문제가 없어서 한 응용 프로그램이 다른 응용 프로그램과 운영 체제의 메모리 공간에 액세스하지 않는 경우 RAM 메모리에 대한 액세스를 처리하는보다 정교한 방법을 통합해야했습니다.

그렇기 때문에 80286부터 PC가 인텔 세그먼트별로 메모리를 처리하는 MMU를 CPU에 포함하기 시작했지만 거의 사용되지 않았으며 PC 운영 체제가 중요한 발전을 이룬 방향에 대한 세그먼트 및 페이지를 지원하도록 MMU가 개선 된 것은 80386이 나올 때까지 거의 사용되지 않았습니다. 품질 조건.

역사적 메모로서 Microsoft 출시 Windows 3.1은 90 년대 초반에 메모리 페이징 MMU를 필수로 만들어 386 시스템 이상에서만 작동하도록 만들었습니다. 80386부터 86 비트 시스템을 포함한 모든 x64 시스템은 RAM 자체에 통합 된 컨트롤러가 검색 할 데이터를 이해할 수 있도록 MMU에 의해 물리적 주소 지정으로 변환되는 논리적 주소 지정을 사용합니다.

RAM뿐만 아니라 CPU가

모든 메모리 장치와 통신하는 CPU는 가상 주소 지정을 사용하며, MMU는 CPU와 RAM의 통신을 관리 할뿐만 아니라 솔리드 디스크 및 솔리드 디스크와 같은 다른 I / O 주변 장치와 CPU의 통신을 담당합니다. MMU는 다른 인터페이스로 IOMMU와 통신합니다.

페이지, 테이블 및 디렉토리

80386의 표준은 각 페이지의 크기가 4KB (주소의 22 비트)입니다.

Pentium Pro (P6)부터 Intel은 CPU에 4MB 크기의 페이지를 처리 ​​할 수있는 기능을 추가했지만 Windows NT 커널과 Linux 커널은이 옵션을 사용할 때 생성되었습니다. x86에서는 사용할 수 없었으므로 해당 운영 체제의 페이지의 표준 크기는 대부분 4KB입니다. 첫 번째 버전은 Pre-Pentium Pro이고 응용 프로그램과의 하위 호환성을 위해 그렇지 않습니다. 변경되었으며 파일 시스템은 여전히 ​​작동 방식을 이해하는 데 사용할 4KB 페이지를 기반으로합니다.

계층 구조의 구성을 더 잘 이해하려면 메모리 페이지를 문서로 생각해보십시오.

페이지 문서

이러한 문서 / 페이지는 소위 페이지 테이블에 저장되며 문서가 저장되고 구성되는 폴더로 생각합니다.

페이지 테이블

그러나 하나 이상의 레벨이 있으며 페이지 테이블 / 문서 폴더는 페이지 디렉토리라고 부르는 파일 캐비닛과 같은 페이지 디렉토리에 저장됩니다.

명부 담당

운영 체제와 응용 프로그램은 가상 방식으로 메모리 주소를 참조합니다. 메모리 주소는 먼저 페이지 디렉토리를 나타내는 비트로 시작하고 페이지 테이블, 페이지 내 데이터 위치 순으로 시작합니다.

최신 x86 CPU의 가상 메모리

로고 x86

현재 시장에 나와있는 모든 x86 CPU는 64 비트이며, Intel인지 여부에 관계없이 x86-64 또는 x64라고도합니다. AMD, 그들은 모두 같은 방식으로 작동합니다.

그러나 주소 지정은 64 비트이지만 실제로는 최대 약 48 비트의 주소 만 지정합니다. 이는 처음 16 비트가 MMU가 메모리 페이지, 테이블 또는 디렉토리를 처리하는 방법을 나타내는 특수 비트이기 때문입니다.

  1. NX (eXecute 없음) : 활성 상태 일 때 NX 비트는 해당 페이지, 테이블 또는 가상 메모리의 디렉토리에 실행 코드가 없음을 나타내므로 특정 비트를 CPU에 대한 명령으로 해석하지 않고 데이터로만 해석합니다.
  2. 운영 체제 용으로 예약 된 첫 번째 비트입니다.
  3. 운영 체제 용으로 예약 된 두 번째 비트입니다.
  4. 운영 체제 용으로 예약 된 세 번째 비트입니다.
  5. G (iGnored) : CPU가 해당 메모리 페이지, 테이블 또는 디렉토리를 무시하고 다음 페이지로 이동하도록 지시합니다.
  6. S (크기) : 메모리 페이지의 크기 (4KB 또는 4MB)를 표시합니다.
  7. 이 비트의 값은 항상 0입니다.
  8. A (사용 가능) : 해당 순간에 프로세스가 데이터에 액세스하고 있는지 여부를 표시합니다.이 비트는 운영 체제에서 관리됩니다.
  9. D (더티) : 메모리 페이지를 CPU 캐시에 복사 할 필요가 없음을 표시하는 데 사용됩니다.
  10. 다음 비트의 값은 항상 0입니다.
  11. W (쓰기) : 페이지 수정 (쓰기) 가능 여부를 표시합니다.
  12. U (사용자) : 확인 운영 체제 (감독자) 또는 응용 프로그램 (사용자)에서 메모리 페이지에 액세스 할 수있는 경우
  13. R (읽기) : 확인 메모리 페이지를 읽을 수 있는지 여부. 이 페이지의 데이터를 읽을 수 있는지 여부를 확인하십시오.
  14. P (현재) : 이 비트는 운영 체제가 메모리 페이지를 메모리 계층 구조에서 하위 수준으로 이동할 때 표시됩니다 (예 : 하드 디스크 또는 솔리드 디스크로 복사 됨).

이러한 비트를 통해 MMU는 시스템 메모리에 대한 다양한 응용 프로그램 및 운영 체제의 액세스를 제어 할 수 있습니다. MMU는 시스템 운영 체제의 명령에 따라서 만 작동하며 가상 메모리 관리와 관련하여 최대 권한.

가상 메모리 및 비 x86 아키텍처

다른 레지스터 세트와 다음과 같은 명령어를 기반으로하는 아키텍처 ARM, PowerPC, MIPS, RISC-V도 가상 메모리를 지원하지만 자체 표준에 따라 다릅니다. 단순화를 위해이 보고서에서는 ISA x86-64를 사용한 CPU 작동을 예로 제시하기로 결정했습니다.