Перейти к содержимому
Статья

Почему 32-битная Windows не использовала память выше 4 ГБ: дело было в драйверах

Ограничение в 4 ГБ у 32-битных клиентских Windows не определялось одной лишь разрядностью системы. PAE позволяла x86-процессорам адресовать память выше этой границы, но Microsoft сознательно закрыла такую возможность из-за проблем со старыми драйверами.

BadMadSam
Почему 32-битная Windows не использовала память выше 4 ГБ: дело было в драйверах

Автор: Изображение создано с помощью ChatGPT

Простое объяснение через 2³² адресов неполно. Еще начиная с Pentium Pro архитектура x86 поддерживала Physical Address Extension, или PAE. Она расширяла физическую адресацию до 36 бит. При этом программы оставались 32-битными и не получали единое адресное пространство размером в десятки гигабайт. Дополнительной памятью распоряжалась сама операционная система.

02_1436x1420_dcd2d3bfb2

Фото: ITHome


Что технология действительно работала, хорошо видно по серверной Windows. Например, 32-битная Windows Server 2003 SP1 Enterprise с PAE поддерживала до 64 ГБ оперативной памяти. Значит, барьер в 4 ГБ не был непреодолимым ограничением 32-битного ядра или процессора.

01_1440x730_6a241dc62f

Фото: ITHome


Проблема возникала ниже, на уровне драйверов. Старый драйвер мог считать, что физический адрес всегда помещается в 32 бита, отбросить его старшую часть или неправильно передать адрес устройству при DMA. Результатом могла стать запись совсем в другую область памяти, повреждение данных и падение системы.
Именно поэтому в Windows XP SP2 Microsoft ограничила доступное физическое адресное пространство четырьмя гигабайтами даже при включенной PAE. Для домашних ПК того времени, где использовались видеокарты, звуковые платы, сканеры и другое оборудование с драйверами разного качества, совместимость оказалась ценнее дополнительной памяти.

5 показов