什么是Windows系统中的SysWow64
64位的Windows并不是简单地把所有东西都编译成64位就万事大吉的。
关于64位的CPU应该做成什么样子,Intel和AMD曾有各自的打算。 AMD的回答直接了当:新的64位处理器,应该能在提高更高处理能力的同时,保持对32位应用程序的兼容性。而Intel则希望
借此机会,把下一代的处理器,设计得更完美。
于是, 就有了AMD的x86-64 (后被称为amd64) 的处理器和Intel的IA-64(安腾)处理器。 和amd64不一样的是, 安腾处理器并没有很好地提供对32位应用程序的支持。
Windows作为一个操作系统, 自然希望用户在运行64位操作系统时,也能像以前一样,运行各种32位应用程序。这一点,在amd64处理器上,相对容易做到。而安腾,几乎是另外一回事。(后
来Intel也生产了兼容amd64的处理器。
当操作系统运行在64位时,怎么才能保证已经存在的32位应用程序以为自己仍然运行在32位系统上呢?
微软的解决方案是:Wow64,全称是32bit Windows On 64bit Windows(64位Windows上的32位Windows)。
你也可以这样理解, 虽然整个系统是运行在64位模式, 但如果一个应该程序是32位的, Windows会在64位的基础上, 加载一个“32位的Windows”。 这样, 这个32位应用程序就以为自
己是运行在32位的系统之上的。 这就意味着,64位的Windows,不但带有64位操作系统应有的系统文件, 还带有32位系统应有的系统文件。
windows系统的主要系统文件都是放在一个叫做System32的文件夹中的。 为了能同时放下两套系统文件, Windows会在64位的系统上,增加了一个文件夹,叫SysWow64。
System32和SysWow64里面,哪个放的是64位的系统文件,哪个放的是32位的系统文件呢?
Wow64指的是64位Windows上的32位Windows,所以SysWow64里放的是32位的系统文件。
为什么一个明明叫System32的文件夹装的是64位的系统文件,而一个明明叫SysWow64的文件夹装的却是32位的系统文件呢?既然是64位的系统,为什么不能有System64和System32这样的文件夹呢?
因为这是Windows系统的另一个兼容性方面的努力 : 让一个已有的32位应用程序, 不加修改或者尽可能少地加以修改, 便可以被编译成64位应用程序并在64位Windows上运行。
为了保证这些应用程序可以顺利地过渡到64位,Windows最后还是决定让64位的系统文件放在System32的文件夹下。而让32位的系统文件,搬到了SysWow64中去。
为了保证32位应用程序不与64位应用程序相冲突,除了System32文件夹外,注册表也需要为32位和64位提供两套,也需要让32位的应用程序在必要时重定向。
所以SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方。