Debian Linux는 프로세스당 최대 128TiB의 가상 주소 공간을 허용하지만 물리적 메모리는 64TiB만 허용하는 이유는 무엇입니까?

Debian Linux는 프로세스당 최대 128TiB의 가상 주소 공간을 허용하지만 물리적 메모리는 64TiB만 허용하는 이유는 무엇입니까?

난 방금 읽었어여기:

  • 프로세스당 최대 128TiB 가상 주소 공간(2GiB 대신)
  • 4GiB(또는 PAE 확장이 포함된 64GiB) 대신 64TiB 물리적 메모리 지원

왜 그런 겁니까? 내 말은, 물리적 메모리 지원이 커널이나 현재 하드웨어에 의해 제한된다는 뜻인가요?

실제로 주소를 지정할 수 있는 물리적 메모리보다 두 배 더 많은 가상 메모리 공간이 필요한 이유는 무엇입니까?

답변1

이러한 제한은 Debian이나 Linux가 아니라 하드웨어에서 비롯됩니다. 아키텍처(프로세서 및 메모리 버스)마다 제한 사항이 다릅니다.

현재 x86-64 PC 프로세서에서 MMU는 다음을 허용합니다.48비트 가상 주소 공간. 이는 주소 공간이 256TB로 제한됨을 의미합니다. 1비트를 사용하여 커널 주소와 사용자 영역 주소를 구별하면 프로세스 주소 공간에 128TB의 공간이 남습니다.

현재 x86-64 프로세서에서는물리적 주소는 최대 48비트를 사용할 수 있습니다.즉, 최대 256TB까지 보유할 수 있습니다. amd64 아키텍처가 도입된 이후 이 제한은 점차 증가했습니다(제 기억이 맞다면 40비트부터 시작). 주소 공간의 각 비트에는 일부 배선 및 디코딩 로직(이로 인해 프로세서가 더 비싸고, 느리고, 뜨거워지는)이 필요하므로 하드웨어 제조업체는 크기를 축소하려는 인센티브를 갖습니다.

Linux에서는 물리적 메모리를 커널 공간에 완전히 매핑할 수 있으므로 물리적 주소는 최대 2^46(즉, 최대 64TB)까지만 허용됩니다. 주소 공간에는 48비트가 있고 하나는 커널/사용자용이고 47비트는 커널 주소 공간용으로 남겨져 있습니다. 그 중 절반은 최대 물리적 메모리를 직접 처리하고 나머지 절반은 커널이 필요한 모든 것을 매핑할 수 있도록 합니다. (Linux는 동시에 완전히 매핑될 수 없는 물리적 메모리를 처리할 수 있지만 이로 인해 추가적인 복잡성이 발생하므로 필요한 플랫폼에서만 수행됩니다.PAE가 포함된 x86-32LPAE가 포함된 armv7. )

실제 메모리보다 큰 가상 메모리를 갖는 것은 다음과 같은 이유로 유용합니다.

  • 이를 통해 커널은 전체 물리적 메모리를 매핑하고 추가 가상 매핑을 위한 공간을 남겨둡니다.
  • 물리적 메모리 매핑 외에도 스왑, 파일 및 장치 드라이버에 대한 매핑도 있습니다.
  • 일부 장소에서는 매핑되지 않은 메모리를 갖는 것이 유용합니다. 캡처할 가드 페이지버퍼 오버 플로우,왜냐하면ASLR, 등.

답변2

이유는 모르겠지만 물리적 메모리 크기의 두 배인 주소 공간을 지원하는 것이 유용한 일곱 가지 이유를 생각해 볼 수 있습니다.

  1. 첫 번째는 추가 메모리가 필요한 애플리케이션을 실행할 수 있다는 점입니다. 이는 디스크로 교체해야 하는 경우에도 가능합니다.
  2. 메모리 사용을 분할하기 위한 더 깨끗한 메모리 레이아웃. 예를 들어, 운영 체제는 더 높은 번호의 주소를 사용하고 애플리케이션이 더 명확하게 구분되도록 하기 위해 더 낮은 번호의 주소를 남겨 둘 수 있습니다.
  3. 주소 공간 레이아웃 무작위화더 효과적입니다.
  4. 페이지를 실행 가능으로 표시하면 메모리가 남아 있을 수 있습니다.
  5. 메모리 매핑된 I/O.
  6. 메모리 할당이 더 쉽습니다. 더 큰 청크를 한 번에 할당할 수 있습니다.
  7. 메모리 조각화 감소

답변3

이는 하드웨어 제한 사항입니다. 현재 x86_64/amd64 하드웨어는 48비트 가상 주소와 다양한 크기(구현에 따라 다름 - 예를 들어 내 워크스테이션은 36비트만 지원함)의 물리적 주소를 허용합니다. Linux 커널은 가상 주소 공간을 절반으로 나눕니다(x86에서와 마찬가지로 커널용 절반, 사용자 공간용 절반).

그래서 당신은 다음을 얻습니다:

2⁴⁸ 바이트 ¼ 2 = 2⁴⁸ 바이트 = 128TiB

실제 주소 크기는 실제로 물리적 주소이기 때문에 일반적으로 더 작습니다. CPU의 핀/패드, 트랜지스터, 연결부 등은 물론 보드의 트레이스도 차지합니다. 칩셋에서도 마찬가지입니다. 프로세서 코어나 소켓의 설계 수명을 넘어서 많은 메모리를 지원하는 것은 의미가 없습니다. 이 모든 것은 비용이 듭니다. (32개의 DIMM 슬롯과 슬롯당 64GiB DIMM을 사용해도 여전히 용량은 2TiB에 불과합니다. DIMM 용량이 매년 두 배로 늘어나더라도 64TiB까지는 여전히 5년이 걸립니다.

~처럼피터 코르데스사람들은 이제 비휘발성 저장소를 연결하고 있다고 지적했습니다.3D X-포인트주소 공간을 소모할 수 있는 메모리 버스로. 최신 프로세서는 물리적 주소 공간을 48비트로 확장했습니다. 데비안 위키는 아직 업데이트되지 않았을 수 있습니다.

관련 정보