MemTest86은 물리적 양보다 큰 메모리 주소 공간을 보여줍니다.

MemTest86은 물리적 양보다 큰 메모리 주소 공간을 보여줍니다.

4GB RAM이 있는 노트북에서는 메모리 주소가 바이트에서 시작 0하고 그 앞에서 끝나야 한다고 생각했는데 0x1_0000_0000(_는 명확성을 위해 추가된 구분 기호입니다), MemTest86에서는 에서 끝난다고 하는데 0x1_6060_0000이게 1542MB 더 많지 않나요?

마찬가지로 16GB RAM이 있는 데스크톱 컴퓨터에서는 로 끝나야 한다고 생각 0x4_0000_0000하지만 MemTest86에서는 0x4_2F60_0000758MB 더 크다고 말합니다.

MemTest86이 실제 메모리 양보다 더 큰 주소 공간을 표시하는 이유는 무엇입니까?

답변1

이는 현대 시스템에서 매우 일반적인 상황입니다. 그리고 그럴 만한 이유가 있습니다.

수십 년 전부터 컴퓨터에는 메모리 매핑된 하드웨어 장치가 있었습니다. 이는 마치 메모리인 것처럼 CPU에서 액세스할 수 있는 특수 하드웨어입니다. 이는 비디오 시스템과 같은 하드웨어 장치와의 빠른 통신을 위해 사용됩니다. 이 컴퓨터가 없으면 컴퓨터 성능이 심각하게 저하될 것입니다.

32비트 운영 체제와의 호환성을 위해 이 메모리 매핑된 하드웨어는 하위 4GB 주소 범위에 나타나야 합니다. 현대 시스템에서 이는 최소한 수백 MB를 의미하며 이는 상당히 중요합니다. 메모리 매핑된 하드웨어와 RAM은 동일한 주소에 존재할 수 없으므로 RAM의 상당 부분에 액세스할 수 없습니다. 이것이 32비트 버전의 Windows에서 4GB RAM을 모두 볼 수 없는 이유입니다.

이것은 좋은 상황이 아닙니다. 그러나 적어도 이를 처리할 수 있는 운영 체제에 대한 솔루션이 있습니다. 해결책은 4GB 이상의 주소에 액세스할 수 없는 RAM 부분을 다시 매핑하는 것입니다. 이것이 당신이 보고 있는 것입니다. 32비트 운영 체제의 이점을 위해 가능한 한 많은 RAM이 4GB 미만의 주소에 남아 있습니다.

이 메모리 재매핑은 컴퓨터 하드웨어와 BIOS에 의해 수행되므로 모든 운영 체제에서 사용할 수 있습니다. 최신 64비트 운영 체제와 메모리 테스트 프로그램은 이를 위해 설계되었습니다. 기술적인 이유로 Windows 32비트 클라이언트 버전은 4GB를 초과하는 모든 메모리를 무시합니다. 최신 운영 체제에서는 애플리케이션이 실제 RAM 주소를 볼 수 없으므로 메모리 매핑은 문제가 되지 않습니다.

관련 정보