吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 21778|回复: 52
收起左侧

[系统底层] 什么是SysWow64【转载】

[复制链接]
caoxiaolin 发表于 2019-6-29 15:44
本帖最后由 caoxiaolin 于 2019-6-30 06:57 编辑

什么是SysWow64


        Wow!什么是Wow64今天有个同事,被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这样的文件夹呢?

        这个问题问得很好。答案也很简单:人在江湖,身不由己。

        兼容性


        如果我问你,可曾有多少机会接触过安腾处理器呢?
        我想,对于一般人来讲,应该是没有的。 那为什么amd64会大行其道, 而安腾处理器却鲜为人知呢?  还是因为一个软硬件设计上的关键概念:兼容性。正是
因为安腾处理器, 没有做好对已有的32位系统提供良好的支持,  便其一直处于市场的边缘。 这和你不会买一台看不了模拟信号频道的高清电视是一个道理。 之前
我们谈到的兼容性,是指在64位Windows上,兼容已经有的32位应用程序。现在考虑另一种兼容性。 如果你写了一个很牛的32位的应用程序,现在,你想把它变成
64位的应用程序,以更充分地利用64位处理器所带来的新的处理能力。你肯定觉得,这不就是让64位编译器编译一遍就完了的事儿么?

        可能你发现,这并不是骨感的现实。你突然发现,你的程序里,为了某些你已经想不起来的原因,把System32这个文件夹,写死在了你的程序里。
而这个System32中的32,让你很不安。你尝试着运行了你的程序,却发现一切正常。为什么呢?

        因为这是Windows系统的另一个兼容性方面的努力 : 让一个已有的32位应用程序, 不加修改或者尽可能少地加以修改, 便可以被编译成64位应用程序并在64位Windows上运行。
其实,把System32这样的路径,写死在程序里,并不是一个个案。 所以,为了保证这些应用程序可以顺利地过渡到64位,Windows最后还是决定让64位的系统文件放在System32的文
件夹下。而让32位的系统文件,搬到了SysWow64中去。你肯定会想,那让32位搬到SysWow64中去以后,那些写死在32位应用程序中的System32怎么办?答:Windows会给他们转向
到SysWow64中去。那让64位中的System32转向到System64不也是一样么?真的一样么?不一样么?真的一样么?不一样么?真的不一样。作为64位Windows操作系统,当然是希望能
充分发挥64位处理器的潜力,让应用程序更有效率地运行。如果在运行64位应用程序时,总要检查是否需要转向,势必影响程序运行效率。

        所以,不能给64位应用程序做没有必要的转向,如果说必须要转, 那就只能转32位应用程序了 。是的, 没有办法, 在64位操作系统中, 32位应用程序要做一些小的牺牲。 此外,
了保证32位应用程序不与64位应用程序相冲突,除了System32文件夹外,注册表也需要为32位和64位提供两套,也需要让32位的应用程序在必要时重定向。

        
        结论所以SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方。

        后记兼容性是一个重要的事情。当然,也是一个很有意思的事情。如果你在Windows 7中运行"winver",你就会发现,Windows 7原来是Windows 6.1。为什么呢?
事情是这样的,Windows XP是Windows 5.2,Windows Vista开始变成了6.0,结果,很多应用程序只是检查操作系统版本号的头一位,发现不是5,于是就提示用户说:
“我们不支持Windows XP以前的系统”。这也是从Windows Vista的不成功中,学习到的一课。也许,以后永远都没有Windows 7.0也未可知啊。      

转载
原帖:https://blogs.msdn.microsoft.com/tianlin/2011/10/26/syswow64/

免费评分

参与人数 13吾爱币 +11 热心值 +8 收起 理由
镇北看雪 + 1 我很赞同!
cf767736383 + 1 + 1 用心讨论,共获提升!
dc0710 + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
biyuemc + 1 用心讨论,共获提升!
黑影飘飘 + 1 + 1 谢谢@Thanks!
动物凶猛 + 1 + 1 用心讨论,共获提升!
clover52pj + 1 用心讨论,共获提升!
Juch + 1 + 1 我很赞同!soga,学习了
某些人 + 1 + 1 谢谢@Thanks!
fnp902003 + 1 用心讨论,共获提升!
icode2019 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
safe-夏天 + 1 + 1 支持科普但还是建议排版
wtfk097 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Z7Y3lToZ 发表于 2019-11-12 15:18
说真的,强迫症表示受不了,微软如果不考虑兼容性的话,System32放32位文件,再搞个System64放64位的文件,而那些写死在32位应用程序中的System32,让程序员在编译64位的时候改成System64就是了,这种事情程序员肯定能搞得定,只不过微软怕程序员很懒不想改,怕丢失操作系统的市场占有率,于是微软自己牺牲一下,把64位的文件放进了System32文件夹里,这样程序员就什么都不用改了,直接编译64位就完事,搞成现在这样,System32文件夹的东西是64位的,人不人鬼不鬼的,而且,System32里很多DLL文件,例如kernel32.dll,硬是加了个32这样的字眼,导致kernel32.dll这个文件,一个是在System32文件夹里是64位的,一个是在SysWOW64里的真正的32位的kernel32.dll,当初命名的时候就不应该加32这样的字眼,真是服了,虽然不影响使用,但看名字真的令强迫症受不了,这也是微软的历史包袱,已经没法子丢弃了
FleTime 发表于 2019-6-29 16:20
八月未央 发表于 2019-6-29 16:25
天导天使 发表于 2019-6-29 16:41
最好还是排一下版,否则看到头疼
yssun 发表于 2019-6-29 16:50
楼主博学啊。。。 厉害。
RobinMaas 发表于 2019-6-29 17:10

++

感谢分享。怎么乱码了
cutthesoul 发表于 2019-6-29 18:29
其实就是重定向
℡小疯、 发表于 2019-6-29 18:48

++

在我的坚持不懈下终于看完了
为什么评论会出现乱码???
hnhbtj 发表于 2019-6-29 19:47

++

%B8%D0%D0%BB%B7%D6%CF%ED%A3%A1%A3%A1%A3%A1%A3%A1
Fxmles 发表于 2019-6-29 20:11
感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 06:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表