모든 64비트 Linux가 32비트 Linux보다 더 적은 RAM을 인식하는 이유는 무엇입니까?

모든 64비트 Linux가 32비트 Linux보다 더 적은 RAM을 인식하는 이유는 무엇입니까?

현재 Linux Mint 32비트를 사용하는 이유는 일반적으로 64비트 버전보다 RAM을 덜 소모하고 100MB 더 많은 RAM을 인식하기 때문입니다. 내 컴퓨터에는 4GB만 설치되어 있으며 모든 시스템이 설치된 메모리를 모두 사용하는 것이 아니라 약간 적은 양을 사용한다는 것을 알고 있습니다. 예를 들어 32비트 시스템에서는 4GB = 3.8GB입니다. 문제는 제가 시도한 모든 64비트 Linux가 3.7GB만 인식한다는 것입니다. 차이가 크지 않다고 말할 수 있지만 RAM이 많지 않을 때 그런 일이 발생합니다.

64비트 아키텍처의 기본값입니까? 이 상황을 바꾸기 위해 제가 할 수 있는 일이 있나요?

답변1

32비트 시스템은 2^32비트 크기(4294967296바이트 = 4GB)를 처리할 수 있는 반면, 64비트 시스템은 2^64비트 크기(18446744073709551616바이트 = 현재 하드웨어가 처리할 수 있는 것보다 훨씬 더 많음)를 처리할 수 있습니다. 따라서 64비트 시스템의 RAM 제한은 문제 해결보다는 하드웨어 제한과 관련이 있습니다.

눈에 보이는 것이 적다는 것은 메모리의 일부가 시스템의 다른 용도로 예약되어 있음을 의미하며, BIOS 수준에서 수행되는 비디오 메모리일 가능성이 높습니다.

64비트 응용 프로그램은 일반적으로 4바이트에 저장되는 변수(예: long, float 및 포인터)가 64비트를 지원하기 위해 동일한 작업을 수행하기 위해 8바이트로 업그레이드되기 때문에 프로그램 크기 및 메모리 사용량 측면에서 항상 약간 더 큽니다. 주소 지정. 그렇지 않으면 성능에 아무런 영향이 없습니다.

답변2

실제로는 100MB 차이가 나지 않을 것 같습니다. 아마도 그 차이는 작지만 반올림 경계에서 발생하므로 3.8GB가 됩니다 3.7GB. 예를 들어, 3.76와 사이에는 차이가 있을 수 있습니다 3.74.

4GB게다가 RAM 전용 시스템에서는 32비트 Linux를 사용하는 것이 완벽합니다.

답변3

이것 중 상당수는 아마도 커널과 관련이 있을 것입니다. 나는 2.6 시리즈의 Linux 커널에서 예약된 메모리의 상당한 증가를 논의하는 다음 스레드를 우연히 발견했습니다.

https://forum.linode.com/viewtopic.php?t=7194

https://forum.linode.com/viewtopic.php?t=7229

간단히 말해서: 예약된 메모리의 상당한 증가는 커널 버전 2.6.38에서 도입된 것으로 보이며 이후 다시 감소했습니다.32비트 커널에서만 사용 가능, 버전 2.6.39.1.

커널 버전 4.9.0-3-amd64부터 4GB Linode 인스턴스에 167500K 메모리가 예약되어 있는 것을 발견했기 때문에 이 문제는 시간이 지남에 따라 더욱 악화되는 것 같습니다.

관련 정보