Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислении на Microsoft платформах, WoW64 ( Вт INDOWS 32-разрядные о п Вт INDOWS 64 - битный) является подсистема Windows , операционной системы , способной работать 32-битных приложений на 64-битной Windows. Он включен во все 64-битные версии Windows, включая Windows XP Professional x64 Edition , IA-64 и x64 версии Windows Server 2003 , а также x64 версии Windows Vista , Windows Server 2008 ,Windows 7 , Windows 8 , Windows Server 2012 , Windows 8.1 , Windows 10 , Windows Server 2016 и Windows Server 2019 , а также версии Windows 10 и Windows Server 2022 для ARM64 . В Windows Server 2008 R2 Server Core это необязательный компонент. Он недоступен в вариантах Windows Nano Server . WoW64 призван устранить многие различия между 32-битной Windows и 64-битной Windows, особенно в том, что касается структурных изменений самой Windows.

Библиотеки переводов [ править ]

Подсистема WoW64 включает облегченный уровень совместимости, который имеет аналогичные интерфейсы во всех 64-битных версиях Windows. Он направлен на создание 32-битной среды, которая предоставляет интерфейсы, необходимые для запуска неизмененных 32-битных приложений Windows в 64-битной системе. WOW64 реализован с использованием нескольких DLL, некоторые из которых включают: [1]

  1. Wow64.dll, основной интерфейс ядра Windows NT, который преобразует ( преобразует ) между 32-битными и 64-битными вызовами, включая манипуляции с указателями и стеком вызовов.
  2. Wow64win.dll, который обеспечивает соответствующие точки входа для 32-битных приложений (преобразователи win32k)
  3. Wow64cpu.dll, который обеспечивает переключение процессора из 32-битного в 64-битный режим. Это используется только в реализациях Windows x86-64 .

Другие библиотеки DLL и двоичные файлы включены для 64-разрядных архитектур Itanium и ARMv8, чтобы обеспечить эмуляцию для x86 или для 32-разрядных точек входа, если архитектура имеет собственный 32-разрядный режим работы.

Архитектура [ править ]

Несмотря на внешне похожий внешний вид во всех версиях 64-битной Windows, реализация WoW64 варьируется в зависимости от целевой архитектуры набора команд . Например, версия 64-битной Windows, разработанная для процессора Intel Itanium 2 (известная как архитектура IA-64 ), использует Wow64win.dllдля настройки эмуляции инструкций x86 в уникальном наборе инструкций Itanium 2 . Эта эмуляция представляет собой гораздо более затратную в вычислительном отношении задачу, чем Wow64win.dllфункции на архитектуре x86-64 , которые переключают аппаратное обеспечение процессора из 64-битного режима в режим совместимости, когда возникает необходимость в выполнении 32-битного потока., а затем выполняет переключение обратно в 64-разрядный режим.

Реестр и файловая система [ править ]

Подсистема WoW64 также обрабатывает другие ключевые аспекты запуска 32-битных приложений. Он участвует в управлении взаимодействием 32-битных приложений с такими компонентами Windows, как реестр , который имеет отдельные ключи для 64-битных и 32-битных приложений. Например, HKEY_LOCAL_MACHINE \ Software \ Wow6432Node является 32-разрядным эквивалентом HKEY_LOCAL_MACHINE \ Software (хотя 32-разрядные приложения не знают об этом перенаправлении). Некоторые ключи реестра отображены из 64-битных в их 32-битные эквиваленты, в то время как у других их содержимое зеркально отражается, в зависимости от выпуска Windows.

Операционная система использует %SystemRoot%\system32каталог для своей 64-битной библиотеки и исполняемых файлов. Это сделано по причинам обратной совместимости, поскольку многие устаревшие приложения жестко запрограммированы для использования этого пути. При выполнении 32-битных приложений WoW64 прозрачно перенаправляет 32-битные библиотеки DLL %SystemRoot%\SysWoW64, которые содержат 32-битные библиотеки и исполняемые файлы. Исключения из этих перенаправлений: [2]

 % SystemRoot% \ system32 \ catroot % SystemRoot% \ system32 \ catroot2 % SystemRoot% \ system32 \ driverstore (перенаправляется только для Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP) % SystemRoot% \ system32 \ drivers \ и т. Д. % SystemRoot% \ system32 \ logfiles % SystemRoot% \ system32 \ spool 

32-битные приложения обычно не знают, что они работают в 64-битной операционной системе. 32-битные приложения могут получить доступ %SystemRoot%\System32через псевдокаталог %SystemRoot%\sysnative.

Есть два каталога Program Files, каждый из которых виден как 32-битным, так и 64-битным приложениям. Каталог, в котором хранятся 32-битные файлы, называется Program Files (x86), чтобы различать их, в то время как 64-битный сохраняет традиционное имя Program Files без каких-либо дополнительных квалификаторов.

Совместимость приложений [ править ]

32-битные приложения, которые включают только 32-битные драйверы устройств режима ядра или которые подключаются к пространству процессов компонентов, которые реализованы исключительно как 64-битные процессы (например, Windows Explorer), не могут быть выполнены на 64-битной платформе.

Поддерживаются 32-битные служебные приложения. Папка SysWOW64, расположенная в папке Windows на диске ОС, содержит несколько приложений для поддержки 32-битных приложений (например, cmd.exe, odbcad32.exe, для регистрации соединений ODBC для 32-битных приложений). 16-разрядные унаследованные приложения для MS-DOS и ранних версий Windows обычно несовместимы с 64-разрядными версиями Windows Vista, 7, 8 и 10, но могут быть запущены в 64-разрядной ОС Windows через VMware Workstation или DOSBox . С другой стороны, 32-разрядные версии Windows XP, Vista, 7, 8 и 10 обычно могут запускать 16-разрядные приложения практически без проблем. 16-разрядные приложения не могут быть запущены напрямую в x64 выпусках Windows, поскольку ЦП не поддерживает режим VM86. при работе в x64.

Internet Explorer реализован как 32-битное и 64-битное приложение из-за большого количества 32-битных компонентов ActiveX в Интернете, которые невозможно подключить к 64-битной версии.

Раньше по умолчанию использовалась 32-разрядная версия, и было трудно установить 64-разрядную версию в качестве браузера по умолчанию. Это изменилось в Internet Explorer 10, который запускал 32-разрядные надстройки внутри 64-разрядного сеанса, устраняя необходимость переключения между двумя версиями. Если пользователь должен был перейти в 32-разрядную папку (обычно C: \ Program Files (x86) \ Internet Explorer) и дважды щелкнуть там файл iexplore.exe, 64-разрядная версия все равно загрузится. В Internet Explorer 9 и более ранних версиях загружалась только 32-разрядная версия.

Начиная с 2010 года , ошибка в уровне перевода x64-версии WoW64 [3] [4] также делает все 32-разрядные приложения, которые полагаются на функцию Windows API GetThreadContext, несовместимыми. К таким приложениям относятся отладчики приложений, средства отслеживания стека вызовов (например, IDE, отображающие стек вызовов) и приложения, использующие механизмы сборки мусора (GC). Одним из наиболее широко используемых, но страдающих [5] двигателей ГХ является ГХ Бема . Он также используется в качестве сборщика мусора по умолчанию не менее популярного Mono.. В то время как Mono представила новый (но необязательный) GC с октября 2010 года под названием SGen-GC, он выполняет сканирование стека так же, как и сборщик мусора Boehm, что также делает его несовместимым с WoW64. По состоянию на июль 2016 года исправлений не было, но были предложены обходные пути. [6]

Производительность [ править ]

По данным Microsoft, 32-битное программное обеспечение, работающее под WOW64, имеет производительность, аналогичную работе под 32-битной Windows, но с меньшим количеством возможных потоков и другими накладными расходами. [7]

32-битному приложению могут быть предоставлены полные 4 гигабайта виртуальной памяти в 64-битной системе, тогда как в 32-битной системе часть этой адресуемой памяти теряется, поскольку она используется ядром и периферийными устройствами с отображением памяти, такими как в качестве адаптера дисплея , что обычно приводит к тому, что приложения могут использовать максимум 2 или 3 ГБ ОЗУ.

См. Также [ править ]

  • Прокладка (вычисление)
  • Контроль учетных записей пользователей также имеет механизм для работы со «старыми» программами, которые записывают файлы в определенные области в «новых» окнах. Файлы, записанные из процесса без прав администратора в защищенные места, такие как Program Files и windows \ system32, будут перенаправлены в каталог виртуального хранилища.
  • Windows в Windows

Ссылки [ править ]

  1. ^ «Детали реализации WOW64» . Microsoft . Проверено 21 апреля 2018 .
  2. ^ «Перенаправитель файловой системы (Windows)» . msdn.microsoft.com .
  3. Пила, Зак (13 ноября 2010 г.). «Ошибка WOW64: GetThreadContext () может возвращать устаревшее содержимое» . Блог Зака ​​Пила . Проверено 15 ноября 2010 .
  4. ^ «Ошибка ОС WOW64: старые 32-разрядные приложения XP не работают под Win7 WOW64» . Сеть разработчиков Microsoft . 11 ноября 2010 . Проверено 15 ноября 2010 .
  5. ^ "Discussions about the Boehm Garbage Collector (Boehm GC)". Retrieved 2010-11-25.
  6. ^ "GetThreadContext returns stale register values on WOW64". Microsoft= 2016-07-23. Retrieved 2016-07-23.
  7. ^ "Performance and Memory Consumption Under WOW64". Microsoft. Retrieved 2013-05-06.

External links[edit]

  • MSDN page on running 32 bit apps on 64 bit Windows