Windows 11 по сей день скрывает диспетчер памяти Windows 95, Microsoft сохраняет код десятилетней давности

📅 2026-10-19

Аннотация:

Windows 11 уже имеет современный пользовательский интерфейс, расширенные механизмы безопасности и расширяющиеся возможности искусственного интеллекта, но глубоко внутри операционной системы Microsoft все еще сохраняет некоторый код эпохи Windows 95. Удивительно, но эти коды не просто остаются в системе в виде устаревших файлов, но и могут работать при определенных условиях, обеспечивая поддержку совместимости с некоторыми приложениями, которые полагаются на старое поведение управления памятью.

В Windows 11 26H2 Microsoft по-прежнему сохраняет механизм восстановления совместимости приложений под названием EmulateHeap. Это позволяет некоторым старым программам использовать код, созданный по образцу диспетчера памяти Windows 95, чтобы предотвратить сбой этих программ из-за изменений в способах управления памятью современной Windows.

Историю этого механизма можно проследить с 1990-х годов. Тогда была обнаружена программная ошибка в классической игре под названием «SimCity». Вместо того, чтобы просто попросить разработчиков исправить игру, Microsoft напрямую изменила поведение Windows 95, чтобы игра могла продолжать работать. С тех пор Microsoft использовала более систематический механизм совместимости, чтобы помочь другому старому программному обеспечению с аналогичными проблемами продолжать работать в новых версиях Windows.

Эта история также раскрывает важный принцип проектирования Windows, существовавший на протяжении длительного времени: для операционной системы с огромной программной экосистемой поддержание нормальной работы старых программ иногда важнее, чем полная очистка исторического кода.

Ошибка памяти в SimCity побуждает Microsoft изменить операционную систему

Чтобы понять, почему существует EmulateHeap, вам необходимо сначала понять распространенную ошибку программирования: продолжение чтения после освобождения памяти.

Когда приложение запущено, ему необходимо запросить память у операционной системы для сохранения данных. Когда данные больше не нужны, программа должна освободить соответствующую память, чтобы система могла перераспределить ее для других целей.

Если программа освобождает блок памяти, но продолжает читать из него данные, возникает так называемая ошибка «use-after-free». Это типичная ошибка программирования, которая может привести к чтению программой неверных данных, сбою и даже возникновению проблем с безопасностью в некоторых случаях.

Некоторые программы в ранних версиях Windows неожиданно стали использовать это ошибочное поведение.

Согласно статье, опубликованной в 2000 году соучредителем Stack Overflow и бывшим инженером Microsoft Джоэлом Спольски, ранние версии SimCity для Windows имели аналогичные проблемы. Джон Росс, разработчик этой версии, позже признался, что случайно оставил ошибку: игра продолжала читать изначально хранившиеся там данные после освобождения памяти.

Причина, по которой эта проблема не была обнаружена сразу, связана с методом управления памятью в Windows 3.x того времени. При определенных обстоятельствах, после того как программа освобождает память, соответствующие данные не перезаписываются немедленно другими пользователями, поэтому, когда игра продолжает читать, все еще возможно получить исходный контент.

Другими словами, ошибка есть в самой игре, просто поведение старой операционной системы маскирует проблему.

Когда Microsoft разработала Windows 95, все изменилось. В новой системе использовался другой механизм управления памятью, и «SimCity» начал работать со сбоями в бета-версии Windows 95.

У Microsoft было два варианта: попросить разработчиков игр исправить программу или позволить операционной системе и дальше терпеть ошибку.

В конце концов Microsoft выбрала последнее.

Инженеры добавили в Windows 95 фрагмент кода совместимости специально для «SimCity». Когда система обнаруживает, что игра запущена, она переключается в специальный режим выделения памяти, который не освобождает связанную память немедленно.

Таким образом, даже если игра продолжит читать исходные данные после освобождения памяти, у нее больше шансов получить ожидаемые результаты и избежать сбоев.

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

Это решение также стало типичным случаем в истории совместимости Windows.

От «SimCity» к EmulateHeap: механизм совместимости постепенно расширяется

Особый подход к SimCity — это только начало.

По мере развития Windows Microsoft обнаружила, что не только эта игра, но и другие приложения используют некоторые особые особенности механизма управления памятью старых версий Windows.

Инженер Microsoft Рэймонд Чен объяснил эту проблему в колонке о технологиях Windows, опубликованной в 2010 году. Некоторые старые программы будут продолжать считывать данные из памяти после ее освобождения, предполагая, что исходные значения все еще существуют.

При запуске этих программ в последующих версиях Windows из-за изменений в методах выделения памяти и утилизации они могут читать содержимое, которое было перезаписано другими данными, а затем аварийно завершать работу.

Если Microsoft будет писать специальный фрагмент кода для каждой программы с такими проблемами, то не только стоимость обслуживания будет высокой, но и будет сложно справиться с растущим количеством старого программного обеспечения.

В результате Microsoft запустила механизм исправления совместимости под названием EmulateHeap.

В отличие от кода, специфичного для SimCity, EmulateHeap предлагает более общий подход. Он перехватывает вызовы приложений к интерфейсам, связанным с управлением памятью, и перенаправляет эти вызовы в альтернативную реализацию, имитирующую поведение Windows 95.

Это включает в себя ряд интерфейсов, связанных с управлением динамической памятью, включая HeapCreate, LocalLock и GlobalReAlloc. Добавляя уровень совместимости между приложениями и базовыми механизмами управления памятью, система может позволить некоторым устаревшим программам продолжать работать привычным для них способом.

Что еще более удивительно, так это то, что Microsoft приняла довольно простую реализацию.

Согласно объяснению Рэймонда Чена, инженеры Microsoft напрямую скопировали исходный код диспетчера кучи Windows 95, перекомпилировали его и добавили в платформу совместимости приложений Windows.

Это означает, что очень важный код управления памятью Windows 95 действительно сохраняется в современной инфраструктуре совместимости Windows.

Однако это не означает, что в Windows 11 используется диспетчер памяти Windows 95.

EmulateHeap — это механизм совместимости, включаемый по требованию. Соответствующий устаревший код будет загружен только тогда, когда конкретное приложение настроено на использование этого исправления. Для обычных программ, которые не поддерживают эту функцию, Windows не будет автоматически переключаться на метод управления памятью Windows 95 из-за этого механизма совместимости.

Кроме того, EmulateHeap — это не та же функция, что и код совместимости, написанный Microsoft специально для SimCity. Оба отражают философию дизайна Microsoft, заключающуюся в том, чтобы старое программное обеспечение работало нормально, но их методы решения проблем и сферы применения различны.

Как найти EmulateHeap в Windows 11?

Для пользователей, которые хотят понять внутренний механизм совместимости Windows, Microsoft предоставляет инструмент под названием «Администратор совместимости» для просмотра исправлений совместимости приложений, поддерживаемых системой.

Этот инструмент включен в комплект Windows Assessment and Deployment Kit (Windows ADK) и предназначен в первую очередь для системных администраторов и ИТ-специалистов. Соответствующая версия инструмента, выпущенная Microsoft в сентябре 2026 г., поддерживает Windows 11 26H2.

Windows Latest сообщила, что автор обнаружил EmulateHeap на своем компьютере с Windows 11 26H2. Конкретные шаги заключаются в следующем:

Сначала загрузите Windows ADK с официального сайта Microsoft и запустите программу установки. В интерфейсе выбора функций просто выберите «Инструменты совместимости приложений», которые являются инструментом совместимости приложений, а затем завершите установку.

После завершения установки найдите «Администратор совместимости» в меню «Пуск» и откройте 32-разрядную версию. Поскольку большое количество старых программ эпохи Windows 95 используют 32-битную архитектуру, 32-битную версию стоит использовать в первую очередь при проверке таких механизмов совместимости.

После открытия программы щелкните правой кнопкой мыши «Новая база данных» в области «Пользовательские базы данных», выберите «Создать новую» и войдите в режим совместимости. Затем найдите EmulateHeap в списке доступных исправлений совместимости, чтобы увидеть эту функцию.

Compatibility-Administratir-32-bit-in-Start.jpg

Создание-новой-базы-данных-в-совместимом режиме.jpgEmulateHeap-in-Compatibility-Administrators-list-of-compatibility-fixes-on-Windows-11-26H2.jpg

Важно отметить, что наличие исправления совместимости в списке не означает, что оно обеспечит правильную работу всех старых программ.

Microsoft уже сталкивалась с подобными проблемами. После обновления Windows 11 22H2 некоторые пользователи сообщили, что в игре Grand Theft Auto: Vice City возникли проблемы с потерей звука, а игра Need for Speed: Most Wanted вылетала после включения определенных исправлений совместимости.

Это означает, что само исправление совместимости также может вызывать конфликты с другими компонентами системы или кодом игры. Даже если определенный механизм может решить определенный тип исторических задач, это не значит, что он подходит для всех программ.

Поэтому обычным пользователям нет необходимости включать EmulateHeap только для того, чтобы попытаться запустить старую игру. Если вы столкнулись с проблемой, когда старое программное обеспечение не работает, разумнее поискать конкретные рекомендации по совместимости для этой программы, прежде чем принимать решение о применении исправления.

Почему Windows просто не очистит этот старый код?

От Windows 95 до Windows 11 компания Microsoft внесла множество изменений в операционную систему. Будь то управление памятью, графические системы, механизмы безопасности или среда выполнения драйверов и приложений, современная Windows сильно отличается от систем 1990-х годов.

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

За десятилетия разработки миллионы приложений использовали интерфейсы и функции Windows. Некоторые из этих программ разрабатываются строго в соответствии с официальной документацией, а другие неосознанно полагаются на поведение определенных версий системы.

Пока эти программы все еще используются, Microsoft необходимо учитывать возможные последствия изменения базовых механизмов.

Для обычного программного обеспечения проблемы совместимости после обновления операционной системы могут вызвать лишь определенные неудобства. Но для корпоративного программного обеспечения, профессиональных инструментов и устаревших программ, которые по-прежнему выполняют реальные бизнес-задачи, нарушения совместимости могут нанести еще больший ущерб.

В результате Microsoft уже давно поддерживает обширную структуру совместимости приложений. Его функция состоит не только в том, чтобы сообщить старой программе, на какой версии Windows она работает, но также в перехвате некоторых системных вызовов, настройке определенного поведения или включении специализированных исправлений совместимости на основе конкретной программы.

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

EmulateHeap — пример этой системы.

Его существование не означает, что Microsoft считает, что Windows 95 лучше управляет памятью, чем современные системы, но это означает, что некоторые старые программы полагались на прошлое поведение. Чтобы избежать поломки этих программ, Microsoft предпочла сохранить набор устаревших реализаций в рамках совместимости, а не заставлять переписывать все программное обеспечение в соответствии с правилами современных систем.

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

Не ко всем классическим программам относятся одинаково

Готовность Microsoft сохранить специальные коды совместимости для некоторых старых программ не означает, что все классическое программное обеспечение может продолжать работать в современной Windows.

Типичным примером является трехмерная игра в пинбол 3D Pinball, которая когда-то была встроена в Windows. Одна из причин, по которой игра больше не была доступна для 64-битной версии Windows, заключалась в том, что у нее были проблемы с 64-битной совместимостью, которые требовали дополнительной работы, и Microsoft не выделила ресурсы для их полного исправления.

Это контрастирует с ситуацией с EmulateHeap.

Для некоторого программного обеспечения, которое широко используется, имеет важную коммерческую ценность или может продолжать работать с относительно ограниченными модификациями, Microsoft может быть готова инвестировать ресурсы в поддержание совместимости. Для других программ Microsoft может отказаться от поддержки, если стоимость ремонта слишком высока или спрос пользователей значительно снизился.

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

Следует отметить, что в последние годы Microsoft продолжает модернизировать интерфейс Windows. Например, компания постепенно заменяет некоторые диалоговые окна свойств, оставшиеся со времен Windows 95, новыми интерфейсами на основе WinUI 3.

Но модернизация интерфейса и обеспечение базовой совместимости могут осуществляться одновременно. Окно, которое видит пользователь, возможно, использует новую технологию проектирования, но некоторый старый код все еще сохраняется внутри системы, чтобы гарантировать, что исторические приложения не потеряют совместимость из-за обновлений интерфейса или архитектуры системы.

Это также одно из важных отличий Windows от многих относительно молодых программных платформ: Windows не только должна поддерживать современные приложения, но и максимально учитывать огромную экосистему программного обеспечения, формировавшуюся десятилетиями.

Традиция совместимости, продолжающаяся от Windows 95 до Windows 11

История EmulateHeap может показаться просто техническим анекдотом о старых играх и менеджерах памяти, но на самом деле она отражает давнюю базовую стратегию Windows.

Когда в «SimCity» возникли проблемы в бета-версии Windows 95, Microsoft решила модифицировать операционную систему, чтобы она допускала ошибку в игре. С тех пор, поскольку более старые программы стали зависеть от исторического поведения системы, Microsoft постепенно создала более полный механизм восстановления совместимости.

Сегодня в Windows 11 по-прежнему сохраняется код, который может имитировать поведение управления памятью в Windows 95, и пользователи могут найти его с помощью инструментов управления, предоставляемых Microsoft.

Это не означает, что современная Windows по-прежнему опирается на базовую архитектуру Windows 95, а также не означает, что на обычных компьютерах в фоновом режиме работает старая операционная система. Что действительно было перенесено, так это часть кода совместимости и дизайнерские идеи Microsoft, направленные на то, чтобы максимально избежать взлома старого программного обеспечения.

Для операционной системы, существующей уже несколько десятилетий, такой подход является одновременно техническим бременем и конкурентным преимуществом. Когда пользователи переходят на новую версию Windows, они часто хотят продолжать использовать приобретенное программное обеспечение, привычные инструменты и рабочие процессы, накопленные за годы. Сохранив часть старого кода, Microsoft снизила риски совместимости, возникающие при обновлении операционной системы.

С этой точки зрения диспетчер памяти Windows 95, скрытый в Windows 11, является не просто историческим пережитком, а конкретным проявлением долгосрочной приверженности Microsoft обеспечению совместимости программного обеспечения. Несмотря на то, что интерфейсы операционных систем продолжают меняться, а аппаратные платформы продолжают обновляться, некоторый устаревший код может продолжать работать просто потому, что он позволяет старой игре или программе продолжать работать на современных компьютерах.

Связанные теги

Похожие статьи

Microsoft подробно объясняет план повышения производительности Windows 11, использование памяти и скорость отклика будут оптимизированы 2026-10-15 Microsoft выпускает LiteBox 0.1, используя Rust для создания облегченной библиотечной ОС для изоляции безопасности. 2026-10-08 Рост цен на память требует оптимизации операционной системы. Microsoft объясняет, почему Windows 11 должна сократить использование оперативной памяти 2026-10-04 Microsoft раскрывает, почему 32-битная Windows ограничивает память 4 ГБ: дело не в том, что технология невозможна, а в том, что драйвер ненадежен 2026-09-13 Британские регулирующие органы планируют включить Microsoft в список «стратегических рыночных субъектов», а экология комплектации продуктов становится предметом расследования. 2026-10-17 Вместо этого искусственный интеллект потянул рынок ПК вниз: рост цен на память привел к падению мировых поставок ПК на 20%. 2026-10-11

Комментарии

0/500
Captcha (click to refresh)
Нет комментариев