가상 주소 공간과 관련된 커널 주소 공간 매핑 - Robert Love의 텍스트를 기반으로 한 질문

가상 주소 공간과 관련된 커널 주소 공간 매핑 - Robert Love의 텍스트를 기반으로 한 질문

존재하다리눅스 커널 개발(LKD) 3판, 12장 영역 아래 Robert Love는 다음과 같이 말합니다.

특히 Linux는 메모리 주소 지정에 있어 두 가지 하드웨어 단점을 해결해야 합니다.

  1. 일부 하드웨어 장치는 특정 메모리 주소에 대해서만 DMA(직접 메모리 액세스)를 수행할 수 있습니다.

  2. 일부 아키텍처는 가상으로 처리할 수 있는 것보다 더 많은 양의 메모리를 물리적으로 처리할 수 있습니다. 따라서 일부 메모리는 커널 주소 공간에 영구적으로 매핑되지 않습니다.

내 질문:

  1. 첫 번째는 괜찮습니다. 2는 무엇을 의미합니까?
  2. 그가 의미하는 바는 다음과 같습니다. 일부 아키텍처에는 주소를 지정할 수 있는 가상 주소보다 주소를 지정할 수 있는 실제 메모리가 더 많습니까?
  3. 어떻게 이럴 수있어? 가상 주소 공간은 실제 메모리보다 크거나 적어도 (있는 경우) 실제 메모리와 같다고 생각합니다.
  4. 또한 VAS(Virtual Address Space)가 물리적 메모리보다 크기 때문에 일부 메모리는 KAS(Kernel Address Space)에 영구적으로 매핑되지 않습니다.

하지만 KAS에는 물리적 메모리만 매핑되는 것 같아요. 위의 2번 항목이 무엇을 의미하는지, 그리고 여기서 내가 만들고 있는 잘못된 가정이 무엇인지 알려주세요.

답변1

PAE(물리적 주소 확장)그가 말한 것과 정확히 같은 소리였습니다.

32비트 CPU는 시스템에 더 많은 메모리가 있더라도 최대 4GB의 메모리만 매핑할 수 있습니다. 그러나 PAE를 사용하면 4GB 이상을 사용할 수 있지만 한 번에 4GB만 매핑할 수 있습니다(단일 프로세스는 4GB 이상을 사용할 수 없음).

따라서 기본적으로 커널은 활발하게 실행 중인 프로세스를 변경할 때 가상 메모리를 해당 프로세스에서 현재 사용 중인 물리적 메모리로 다시 매핑합니다.

관련 정보