fbpx
维基百科

WoW64

WoW64Windows 32-bit on Windows 64-bit)是Microsoft Windows操作系统的一个子系统,它提供在所有Windows 64位系统上运行32位元应用程序的能力——这包括Windows XP Professional x64 EditionIA-64Windows Server 2003的64位版本,以及Windows VistaWindows Server 2008Windows 7Windows 8Windows Server 2012Windows 8.1Windows 10的64位版本。在Windows Server 2008 R2 Server Core中它成为了可选组件,并在Nano Server中不再提供。WoW64旨在解决32位与64位Windows中的许多差异,特别是涉及到Windows本身的结构变化。

转换库

WoW64子系统由一个轻量级兼容层组成,其在所有64位Windows版本上有类似的接口。它的目的是创建一个32位环境,为未修改的32位Windows应用程序在64位系统上运行提供一个必需的接口。在技术上,WoW64使用三个动态链接库(DLL)实现:

  1. Wow64.dll,通往Windows NT内核的核心接口,它转换32位与64位调用,包括指针调用栈操作。
  2. Wow64win.dll,为32位应用程序提供适当的入口点。
  3. Wow64cpu.dll,负责解决进程从32位切换到64位模式。

架构

尽管表面上看它在所有64位Windows版本上都表现相同,但WoW64的实现取决于目标处理器架构。举例来说,面向Intel Itanium 2处理器(即IA-64架构)开发的64位Windows版本,会使用Wow64win.dll在Itanium 2的独有指令集中设置x86指令的仿真。这种仿真会比 Wow64win.dll的函数在x86-64架构(也称“Intel 64”或“AMD64”)上的计算代价更昂贵,因为当有必要执行32位线程时,处理器硬件必须从64位模式切换到兼容模式,然后再切换回64位模式。

注册表和文件系统

WoW64子系统也处理其他运行32位应用程序所必需的关键问题。它参与32位应用程序与Windows组件的互动,例如注册表,64位与32位应用程序会使用不同的键。举例来说,HKEY_LOCAL_MACHINE\Software\Wow6432Node 是 HKEY_LOCAL_MACHINE\Software 的32位环境版本,并且32位应用程序不会感觉到这种重定向。有些注册表键是等效从64位映射到32位,还有些则是内容镜像,这取决于Windows的版本。

操作系统使用%SystemRoot%\system32目录放置其64位函数库和可执行文件。这样做的原因是考虑到向后兼容性,许多旧款程序采用硬编码使用该路径。当执行32位应用程序时,WoW64会将32位透明重定向到 %SystemRoot%\SysWoW64,那里放着32位函数库和可执行文件。32位应用程序不会知道自己在64位操作系统上运行。32位应用程序可以通过伪目录%SystemRoot%\sysnative访问真实的存有64位函数库和可执行文件的文件夹%SystemRoot%\System32

你会看到有两个Program Files目录可见,里面分别放着32位和64位应用程序。存储32位文件的目录名为 Program Files (x86) 以区分两者,而64位目录使用原有的 Program Files 为名,不附加任何限定名称。

应用程序兼容性

只包含32位内核模式驱动程序,或者插入组件到仅64位实现的组件进程(例如Windows Explorer)的内存空间的32位应用程序不能在64位平台上执行。32位服务程序是支持的。SysWOW64文件夹位于操作系统所在分区的Windows文件夹,其包含许多支持32位应用程序的程序(例如cmd.exe、odbcad32.exe,为32位应用程序注册ODBC连接等)。面向MS-DOS和Windows早期版本的16位应用程序通常不兼容64位版本的Windows Vista、7和8,但可以通过Windows Virtual PCDOSBox运行在16位或32位的Windows操作系统上。32位版本的Windows XP、Vista、7和8在另一方面通常也可以几乎无问题地运行16位应用程序。16位应用程序不能直接运行在x64版本的Windows上,因为CPU在x64模式下运行时不支持VM86。

Internet Explorer实现了32位与64位两个应用程序版本,因为互联网上有许多32位ActiveX组件,而它们不可能在64位版本上运行。Internet Explorer的32位版本被定为默认版本,并且64位版本不能被设置为默认浏览器。

WoW64 64位版本中透明层的一个程序错误[1][2]导致所有依赖Windows API函数GetThreadContext的32位应用程序不兼容。此类应用包括应用程序调试器、调用堆栈跟踪器(例如IDE显示调用堆栈)和使用垃圾收集(GC)引擎的应用程序。受影响最广泛的一个GC引擎是Boehm GC[3],它被同样流行的Mono作为默认的垃圾收集引擎。虽然Mono截至2010年10月有一种新的、可选的GC(称作SGen-GC),但它与Boehm GC执行堆栈扫描的方式相同,因此它也不兼容WoW64。截至2010年11月15日,微软没有提供修复计划或变通解决方案。

性能

据微软介绍,运行在WOW64下的32位软件与在32位Windows上的执行性能相近,但可能增加少许线程和其他开销[4]

一个32位应用程序在64位系统上可以完全使用4GB虚拟内存,而在32位系统上,部分可寻址内存无法使用,因为那会被内核和内存映射的外部设备(如显卡)使用。

参见

  • Windows on Windows
  • 使用者帳戶控制也有一个机制,将旧款程序写入到特定区域的文件处理到新位置。无管理员权限的进程将文件写入到system32将被重定向到一个虚拟存储目录。
  • 垫片

参考资料

  1. ^ Saw, Zach. . Zach Saw's Blog. November 13, 2010 [2010-11-15]. (原始内容存档于2021-07-02). 
  2. ^ . Microsoft Developer Network. November 11, 2010 [2010-11-15]. (原始内容存档于2010-11-21). 
  3. ^ . [2010-11-25]. (原始内容存档于2011-07-16). 
  4. ^ . Microsoft. [2013-05-06]. (原始内容存档于2013-03-07). 

外部链接

  • 关于在64位Windows上运行32位应用的MSDN页面 (页面存档备份,存于互联网档案馆(英文)
  • WOW64文件夹、变量、值和参考资料的综合资料 (页面存档备份,存于互联网档案馆(英文)

wow64, windows, windows, 是microsoft, windows操作系统的一个子系统, 它提供在所有windows, 64位系统上运行32位元应用程序的能力, 这包括windows, professional, edition, 64和windows, server, 2003的64位版本, 以及windows, vista, windows, server, 2008, windows, windows, windows, server, 2012, windows, 1和windows,. WoW64 Windows 32 bit on Windows 64 bit 是Microsoft Windows操作系统的一个子系统 它提供在所有Windows 64位系统上运行32位元应用程序的能力 这包括Windows XP Professional x64 Edition IA 64和Windows Server 2003的64位版本 以及Windows Vista Windows Server 2008 Windows 7 Windows 8 Windows Server 2012 Windows 8 1和Windows 10的64位版本 在Windows Server 2008 R2 Server Core中它成为了可选组件 并在Nano Server中不再提供 WoW64旨在解决32位与64位Windows中的许多差异 特别是涉及到Windows本身的结构变化 目录 1 转换库 2 架构 3 注册表和文件系统 4 应用程序兼容性 5 性能 6 参见 7 参考资料 8 外部链接转换库 编辑WoW64子系统由一个轻量级兼容层组成 其在所有64位Windows版本上有类似的接口 它的目的是创建一个32位环境 为未修改的32位Windows应用程序在64位系统上运行提供一个必需的接口 在技术上 WoW64使用三个动态链接库 DLL 实现 Wow64 dll 通往Windows NT内核的核心接口 它转换32位与64位调用 包括指针和调用栈操作 Wow64win dll 为32位应用程序提供适当的入口点 Wow64cpu dll 负责解决进程从32位切换到64位模式 架构 编辑尽管表面上看它在所有64位Windows版本上都表现相同 但WoW64的实现取决于目标处理器架构 举例来说 面向Intel Itanium 2处理器 即IA 64架构 开发的64位Windows版本 会使用Wow64win dll在Itanium 2的独有指令集中设置x86指令的仿真 这种仿真会比 Wow64win dll的函数在x86 64架构 也称 Intel 64 或 AMD64 上的计算代价更昂贵 因为当有必要执行32位线程时 处理器硬件必须从64位模式切换到兼容模式 然后再切换回64位模式 注册表和文件系统 编辑WoW64子系统也处理其他运行32位应用程序所必需的关键问题 它参与32位应用程序与Windows组件的互动 例如注册表 64位与32位应用程序会使用不同的键 举例来说 HKEY LOCAL MACHINE Software Wow6432Node 是 HKEY LOCAL MACHINE Software 的32位环境版本 并且32位应用程序不会感觉到这种重定向 有些注册表键是等效从64位映射到32位 还有些则是内容镜像 这取决于Windows的版本 操作系统使用 a href E7 8E AF E5 A2 83 E5 8F 98 E9 87 8F html title 环境变量 SystemRoot a system32目录放置其64位函数库和可执行文件 这样做的原因是考虑到向后兼容性 许多旧款程序采用硬编码使用该路径 当执行32位应用程序时 WoW64会将32位透明重定向到 SystemRoot SysWoW64 那里放着32位函数库和可执行文件 32位应用程序不会知道自己在64位操作系统上运行 32位应用程序可以通过伪目录 SystemRoot sysnative访问真实的存有64位函数库和可执行文件的文件夹 SystemRoot System32 你会看到有两个Program Files目录可见 里面分别放着32位和64位应用程序 存储32位文件的目录名为 Program Files x86 以区分两者 而64位目录使用原有的 Program Files 为名 不附加任何限定名称 应用程序兼容性 编辑只包含32位内核模式驱动程序 或者插入组件到仅64位实现的组件进程 例如Windows Explorer 的内存空间的32位应用程序不能在64位平台上执行 32位服务程序是支持的 SysWOW64文件夹位于操作系统所在分区的Windows文件夹 其包含许多支持32位应用程序的程序 例如cmd exe odbcad32 exe 为32位应用程序注册ODBC连接等 面向MS DOS和Windows早期版本的16位应用程序通常不兼容64位版本的Windows Vista 7和8 但可以通过Windows Virtual PC或DOSBox运行在16位或32位的Windows操作系统上 32位版本的Windows XP Vista 7和8在另一方面通常也可以几乎无问题地运行16位应用程序 16位应用程序不能直接运行在x64版本的Windows上 因为CPU在x64模式下运行时不支持VM86 Internet Explorer实现了32位与64位两个应用程序版本 因为互联网上有许多32位ActiveX组件 而它们不可能在64位版本上运行 Internet Explorer的32位版本被定为默认版本 并且64位版本不能被设置为默认浏览器 WoW64 64位版本中透明层的一个程序错误 1 2 导致所有依赖Windows API函数GetThreadContext的32位应用程序不兼容 此类应用包括应用程序调试器 调用堆栈跟踪器 例如 IDE显示调用堆栈 和使用垃圾收集 GC 引擎的应用程序 受影响最广泛的一个GC引擎是Boehm GC 3 它被同样流行的Mono作为默认的垃圾收集引擎 虽然Mono截至2010年10月有一种新的 可选的GC 称作SGen GC 但它与Boehm GC执行堆栈扫描的方式相同 因此它也不兼容WoW64 截至2010年11月15日 微软没有提供修复计划或变通解决方案 性能 编辑据微软介绍 运行在WOW64下的32位软件与在32位Windows上的执行性能相近 但可能增加少许线程和其他开销 4 一个32位应用程序在64位系统上可以完全使用4GB虚拟内存 而在32位系统上 部分可寻址内存无法使用 因为那会被内核和内存映射的外部设备 如显卡 使用 参见 编辑Windows on Windows 使用者帳戶控制也有一个机制 将旧款程序写入到特定区域的文件处理到新位置 无管理员权限的进程将文件写入到system32将被重定向到一个虚拟存储目录 垫片参考资料 编辑 Saw Zach WOW64 bug GetThreadContext may return stale contents Zach Saw s Blog November 13 2010 2010 11 15 原始内容存档于2021 07 02 WOW64 OS bug Old 32 bit XP apps failing under Win7 WOW64 Microsoft Developer Network November 11 2010 2010 11 15 原始内容存档于2010 11 21 Discussions about the Boehm Garbage Collector Boehm GC 2010 11 25 原始内容存档于2011 07 16 Performance and Memory Consumption Under WOW64 Microsoft 2013 05 06 原始内容存档于2013 03 07 外部链接 编辑关于在64位Windows上运行32位应用的MSDN页面 页面存档备份 存于互联网档案馆 英文 WOW64文件夹 变量 值和参考资料的综合资料 页面存档备份 存于互联网档案馆 英文 取自 https zh wikipedia org w index php title WoW64 amp oldid 71703147, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。