MemTest86 показывает, что адресное пространство памяти больше физического объема

MemTest86 показывает, что адресное пространство памяти больше физического объема

На ноутбуке с 4 ГБ оперативной памяти я думал, что адреса памяти должны начинаться с байта 0и заканчиваться до него 0x1_0000_0000(_ — это добавленный разделитель для ясности), но MemTest86 говорит, что он заканчивается на 0x1_6060_0000, но разве это не на 1542 МБ больше?

Аналогично, на настольном компьютере с 16 ГБ оперативной памяти, я думаю, что он должен заканчиваться на 0x4_0000_0000, но MemTest86 показывает 0x4_2F60_0000, что на 758 МБ больше.

Почему MemTest86 показывает адресные пространства, превышающие фактический объем физической памяти?

решение1

Это очень распространенная ситуация в современных системах. И на то есть веская причина.

С тех пор, как несколько десятилетий назад компьютеры имели аппаратные устройства с отображением памяти. Это специальное оборудование, к которому процессор может получить доступ так же, как если бы оно было памятью. Оно используется для быстрой связи с аппаратными устройствами, такими как видеосистема. Без этого компьютеры бы сильно страдали от потери производительности.

Для совместимости с 32-разрядными операционными системами это отображаемое в памяти оборудование должно появляться в нижнем диапазоне адресов 4 ГБ. В современных системах это означает несколько сотен МБ, как минимум, что весьма существенно. Поскольку отображаемое в памяти оборудование и ОЗУ не могут существовать по тем же адресам, значительная часть ОЗУ будет недоступна. Вот почему 32-разрядные версии Windows не могут видеть все 4 ГБ ОЗУ.

Это нехорошая ситуация. Но есть решение, по крайней мере для тех операционных систем, которые могут с этим справиться. Решение состоит в том, чтобы переназначить те части ОЗУ, которые в противном случае были бы недоступны, на адреса выше 4 ГБ. Это то, что вы видите. Для 32-разрядных операционных систем как можно больше ОЗУ будет оставлено на адресах ниже 4 ГБ.

Это перераспределение памяти выполняется аппаратным обеспечением компьютера и BIOS, поэтому оно доступно для любой операционной системы. Современные 64-разрядные операционные системы и программы тестирования памяти разработаны для этого. По техническим причинам 32-разрядные клиентские версии Windows будут игнорировать всю память свыше 4 ГБ. В современных операционных системах приложения никогда не видят физические адреса ОЗУ, поэтому распределение памяти их не волнует.

Связанный контент