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

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

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

1 ответ1

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .