
Существует популярный миф, что 32-битная Windows ограничена 4 ГБ ОЗУ из-за того, что 32-битный адрес может представить только 2^32 комбинаций, что как раз и даёт 4 ГБ. Звучит правдоподобно, но история Windows XP и Physical Address Extension (PAE) показывает, что это не так.
На самом деле у Microsoft был механизм, позволявший 32-битным x86-системам адресовать физическую память выше 4 ГБ. Серверные редакции Windows могли им пользоваться, клиентские сознательно не могли. Ограничение ввели, чтобы компьютеры не падали из-за проблемных драйверов оборудования.
Но почему больше памяти приводило к сбоям? И если 32-битная Windows технически могла адресовать больше памяти, почему Microsoft не дала обычным пользователям доступ к ней?
Microsoft объясняет, почему 32-битная Windows могла адресовать больше 4 ГБ с помощью PAE
Многие полагают, что 32-битная Windows застряла на 4 ГБ, потому что 32-битное число не может считать дальше. Для виртуальной памяти это справедливо, но физическая память работает иначе.
Давний инженер Microsoft Рэймонд Чен ответил на этот вопрос в своём блоге The Old New Thing. Речь о Physical Address Extension, или PAE. Эту технологию Intel встроила в Pentium Pro, чтобы 32-битные x86-чипы работали с 36-битными физическими адресами вместо 32-битных.
Windows по-прежнему выделяет каждой 32-битной программе виртуальное адресное пространство на 4 ГБ. Меняется лишь то, сколько физической памяти операционная система может использовать за кулисами. Документация Microsoft по PAE показывает, насколько сильно расширяли возможности эти дополнительные 4 бита. Windows Server 2003 SP1 Enterprise поддерживала до 64 ГБ, а Datacenter до 128 ГБ.

В итоге вопрос свёлся к тому, что технически мог процессор и что позволяли использовать клиентские редакции Windows.
Настоящая проблема была в тысячах драйверов оборудования, которые должна была поддерживать Windows
Если оборудование позволяло больше, почему Microsoft просто не разрешила всем этим пользоваться? Ответ Чена: драйверы.
Как только включается PAE, драйвер больше не может считать, что физический адрес легко помещается в 32 бита. Документация Windows по PAE показывает, что может сломаться в коде драйверов:
- Подпрограммы выравнивания буферов, игнорирующие старшие биты физического адреса, перестают работать корректно.
- Любой код, который незаметно обрезает адреса, начинает терять данные.
- Драйверы, выполняющие DMA-передачи, должны строго разделять виртуальные и физические адреса, чего во многом не делал старый код.
В документе поддержки Microsoft сказано: “Обычно драйверы устройств нужно изменять в нескольких небольших местах. Хотя сами правки кода могут быть небольшими, они бывают сложными. Всё потому, что без использования адресации памяти PAE драйвер мог считать, что физические адреса и пределы 32-битных виртуальных адресов совпадают. PAE делает это предположение неверным.”
Представьте, что происходит, когда драйвер получает физический адрес, которому нужно больше 32 бит, и просто обрезает его. Windows считает, что записала данные в одно место. Оборудование кладёт их в другое. В зависимости от того, что было перезаписано, это может привести к повреждению памяти или сбою.
Потребительские ПК были полны таких рисков. Принтеры, сканеры, веб-камеры, звуковые карты, любые случайные платы расширения, которые кто-то покупал, требовали драйверов, которые большинство сотрудников Microsoft не тестировали с PAE.
Это особенно затронуло Windows XP и Windows Server 2003 SP1 Standard Edition. Microsoft изменила слой аппаратных абстракций в обеих системах, ограничив физическое адресное пространство 4 ГБ, как раз чтобы непроверенные драйверы не повреждали память, когда PAE открывала к ней более широкий доступ.

Что случилось с 32-битной Windows?
С переходом на 64-битные системы ПК с объёмом памяти всего 4 ГБ стали ещё более редкими. Чен отметил: “Windows начала отговаривать от выпуска систем с 32-битными процессорами в 2020 году, а с выходом Windows 11 полностью прекратила выпуск 32-битных редакций”.

Почему Windows Server могла использовать больше 4 ГБ ОЗУ?
Это становится очевидным, если понять, что Windows Server и Windows для обычных пользователей это две совершенно разные экосистемы. Серверные администраторы работают с жёстко контролируемыми системами на тщательно подобранном оборудовании.
Чен объясняет: “Память выше 4 ГБ включена на сервере, потому что, если вы системный администратор, вы не ставите случайные драйверы для ручного сканера, купленного за 10 долларов в корзине скидок Best Buy”.
Серверные администраторы используют стандартные драйверы, входящие в состав Windows, и, как отмечает Чен, даже не устанавливают видеодрайверы от производителей. Главное, что каждый драйвер из комплекта Windows был проверен с адресами выше 4 ГБ. А вот драйвер сканера за 10 долларов из 2001 года не проверяли, и с высокой вероятностью он обрезает такие адреса и портит память.

Обычные пользователи устанавливают практически всё подряд. Серверные администраторы ставят как можно меньше. У большинства потребителей нет технических знаний, а у администраторов серверов есть квалифицированный персонал.
Документация Microsoft подтверждает, что в Windows XP SP2 и Windows Server 2003 SP1 Standard Edition изменили слой аппаратных абстракций, чтобы ограничить физическое адресное пространство 4 ГБ и снизить риски совместимости драйверов.
Чен также отверг циничную теорию о том, что Microsoft ограничила память, чтобы подтолкнуть пользователей к Windows Server. Достаточно вспомнить, что самая дешёвая редакция Windows Server 2003 с поддержкой более 4 ГБ, Enterprise, стоила целых 3999 долларов. Этого хватает, чтобы отбросить эту версию.

Что было бы, если бы Microsoft заставила разработчиков оптимизировать использование памяти
Сейчас Microsoft пытается заставить Windows 11 хорошо работать на ПК с 8 ГБ ОЗУ после многих лет роста аппетитов Windows и сторонних приложений к памяти. Как уже сообщалось, свою роль в этом сыграл и MacBook Neo.
Но что было бы, если бы индустрия провела ещё одно десятилетие так, будто память остаётся дефицитным ресурсом? Благодаря ИИ это отчасти стало реальностью, и разработчики теперь больше заботятся о потреблении памяти.
Приложения, которые сегодня запросто съедают сотни мегабайт, могли бы выглядеть совсем иначе. Правда, WhatsApp остаётся исключением, поскольку Meta не проявляет интереса к оптимизации своего приложения. Старое ограничение в 4 ГБ не породило сегодняшнее раздувание программ, но оно напоминает, что аппаратные ограничения обычно заставляют добиваться эффективности, тогда как изобилие ресурсов редко к этому подталкивает.





Пока нет комментариев. Будьте первым!