32비트 PAE와 64비트 커널의 차이점은 무엇입니까?

32비트 PAE와 64비트 커널의 차이점은 무엇입니까?

나는 메모리 주소 지정에 대해서만 이 질문을 하고 있습니다.

PAE 커널을 사용하면 운영 체제가 표준 32비트 커널보다 더 많은 메모리에 액세스할 수 있다는 것을 알고 있습니다. 하지만 이는 또 무엇을 의미합니까? 64비트 커널과 32비트 PAE 커널의 구체적인 차이점은 무엇입니까?

Wikipedia에 따르면 프로세스 주소 공간은 여전히 ​​32비트이므로 최대 4GB의 메모리에만 액세스할 수 있습니다. 그러나 운영 체제는 64GB 주소 공간에 액세스할 수 있으며 프로세스에 4GB 블록을 할당합니다.

이것은 내 생각에는 큰 차이점이지만 많은 사람들이 간과하는 것 같습니다.

답변1

커널은 물리적 메모리를 살펴보고 프로세스 보기를 제공합니다. 전체 머신에 512MB의 RAM만 있는 경우 프로세스가 어떻게 4GB의 메모리 공간을 가질 수 있는지 궁금하다면 이것이 바로 이유입니다. 각 프로세스에는 자체 가상 메모리 공간이 있습니다. 이 주소 공간의 주소는 물리적 페이지 또는 스왑 공간에 매핑됩니다. 공간을 교환하려면 프로세스가 페이지에 액세스하여 수정하기 전에 공간을 물리적 메모리로 다시 교환해야 합니다.

XQYZ의 답변(DOS highmem)에 있는 Torvalds의 예는 PAE가 일반적으로 나쁘다는 그의 결론에 동의하지 않지만 너무 터무니없는 것은 아닙니다. 특정 문제를 해결하고 장점도 있지만 이 모든 것이 논란의 여지가 있습니다. 예를 들어, 라이브러리 구현자는 구현이 쉽지 않다고 생각할 수 있지만, 라이브러리 사용자는 라이브러리가 유용하고 사용하기 쉽다고 생각할 수 있습니다. Torvalds는 구현자이므로 성명서에 있는 내용을 말해야 합니다. 최종 사용자의 경우 이는 최종 사용자가 우려하는 문제를 해결합니다.

PAE는 32비트 시스템에 남아 있는 또 다른 문제를 해결하는 데 도움이 됩니다. 이를 통해 커널은 전체 4GB 메모리를 매핑할 수 있으며 PAE가 없는 순수 32비트 커널에서 물리적 메모리가 부족함에도 불구하고 3.1GB 또는 3.2GB 메모리만 "볼" 수 있게 만드는 많은 시스템에 존재하는 BIOS 메모리 버그를 해결합니다. 4GB.

그럼에도 불구하고 64비트 커널의 경우 물리적 페이지와 가상 페이지 간의 관계는 대칭입니다(스왑 공간 및 기타 세부 사항에 관계없이). 그러나 PAE 커널은 프로세스 주소 공간 내의 32비트 포인터와 실제 메모리의 36비트 주소를 매핑합니다. 여기에는 더 많은 부기가 필요합니다. 키워드: "확장 페이지 테이블". 그러나 이것은 프로그래밍 문제에 가깝습니다. 이것이 주요 차이점입니다. 전체 선형 주소 공간보다 더 많은 기록이 필요합니다. PAE의 경우 언급한 대로 4GB 블록입니다.

게다가둘 다PAE 및 64비트는 대용량 페이지를 허용합니다(32비트의 표준 4KB 페이지 대신).

1권 3장인텔 프로세서 매뉴얼몇 가지 개요가 있으며, 읽고 싶다면 3A권("보호 모드 메모리 관리")의 3장에 더 자세한 내용이 있습니다.

이것은 내 생각에는 큰 차이점이지만 많은 사람들이 간과하는 것 같습니다.

네가 옳아. 하지만,대부분의 사람들은 구현자가 아닌 사용자입니다.. 그렇기 때문에 그들은 신경 쓰지 않을 것입니다. 응용 프로그램이 많은 메모리를 필요로 하지 않는 한 많은 사람들은 신경 쓰지 않을 것입니다(특히 호환성 계층이 있기 때문에).

답변2

Linus Torwalds가 이에 대해 뭐라고 말하는지 보고 싶을 수도 있습니다.여기:

PAE는 이 아주 단순한 사실을 뒤집어 상황을 엉망으로 만듭니다. 이 아이디어를 생각해낸 사람은 완전히 무능하고 DOS HIGHMEM의 고통을 모두 잊어버린 사람입니다. 우리가 HIGHMEM에 창문을 더 큰 물리적 공간으로 두는 대신 286을 버리고 386을 사용하기 시작한 데는 그럴 만한 이유가 있습니다.

[...]

제 말을 따라해주세요. PAE는 실제로 아무것도 해결하지 못합니다. 그것은 실수입니다. 이는 완전한 실패였으며 하드웨어 엔지니어가 소프트웨어를 이해하지 못한 결과였습니다.

답변3

CPU 관점에서 보면,

  1. PAE는외부적인 것들: CPU에는 메모리 주소를 지정하는 핀이 36개만 있습니다.
  2. 64비트임에도 불구하고내면의 것들: 레지스터의 상위 32비트를 사용합니다.

시스템의 나머지 부분의 관점에서는 PAE를 사용하든 64비트 커널을 사용하든 차이가 없습니다.이는 CPU 핀의 신호만 볼 수 있으며 두 경우 모두 CPU에는 메모리 주소를 지정하는 데 36비트가 있습니다.

물론 (2)에는 (1)도 자동으로 포함됩니다.

관련 정보