WikiDer > WoW64

WoW64
WoW64
Другие имена32-разрядная версия Windows на 64-разрядной версии Windows
Разработчики)Microsoft
Операционная системаМайкрософт Виндоус
ТипУровень совместимости
ЛицензияПроприетарный коммерческое программное обеспечение
Интернет сайтдокументы.microsoft.com/ en-us/ окна/ рабочий стол/ WinProg64/ запуск 32-битных приложений

В вычисление на Microsoft платформы, WoW64 (Windows 32-битный оп WIndows 64-бит) является подсистемой Windows Операционная система способный работать 32-битный приложения на 64-битной Windows. Включено во все 64-битный версии Windows, включая Windows XP Professional x64 Edition, IA-64 и x64 версии Windows Server 2003, а также 64-битные версии Виндоус виста, Windows Server 2008, Windows 7, Windows 8, Windows Server 2012, Windows 8.1 и Windows 10. В Windows Server 2008 R2 Ядро сервера, это необязательный компонент, но не в Нано сервер[требуется разъяснение]. WoW64 призван устранить многие различия между 32-битной Windows и 64-битной Windows, особенно в том, что касается структурных изменений самой Windows.

Библиотеки переводов

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

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

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

Архитектура

Несмотря на внешне похожий внешний вид во всех версиях 64-битной Windows, реализация WoW64 варьируется в зависимости от цели. архитектура набора команд. Например, версия 64-битной Windows, разработанная для Intel Itanium 2 процессор (известный как IA-64 архитектура) использует Wow64win.dll настроить эмуляцию x86 инструкции в уникальном Набор инструкций. Эта эмуляция - гораздо более дорогостоящая задача, чем 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% SystemRoot%  system32  drivers  etc% SystemRoot%  system32  logfiles% SystemRoot%  system32  spool% SystemRoot%  system32  driverstore (только для Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP)

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

Есть два Файлы программ каталоги, видимые как для 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 через Виртуальный ПК Microsoft или же 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] Двигатели GC - это Boehm GC. Он также используется как сборщик мусора по умолчанию не менее популярного Мононуклеоз. Хотя Mono представила новый (но необязательный) GC с октября 2010 года под названием SGen-GC, он выполняет сканирование стека так же, как и сборщик мусора Boehm, что также делает его несовместимым с WoW64. Исправления предоставлено не было, хотя были предложены обходные пути.[6]

Спектакль

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

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

Смотрите также

Рекомендации

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

внешняя ссылка