Wow!什么是Wow64
  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也未可知啊。

System32与SysWow64的区别相关推荐

  1. 32位和64位操作系统与System,System32,Syswow64的区别

    <转>https://www.ssdax.com/196.html 很多朋友在运行某个软件,特别是一些游戏的时候经常会遇到缺少xxx.dll文件,辛辛苦苦从网上下载了这个文件后,到底放到哪 ...

  2. System32和SysWoW64的区别(转载)

    转载自:https://www.ssdax.com/196.html 很多朋友在运行某个软件,特别是一些游戏的时候经常会遇到缺少xxx.dll文件,辛辛苦苦从网上下载了这个文件后,到底放到哪个文件夹中 ...

  3. 64位系统 system32 和 syswow64

    64位系统 system32 和 syswow64 \Windows\SysWOW64  文件夹下存放32位的库和应用程序 (WOW64 == Windows on Windows 64 bit  ) ...

  4. 认识System,System32,Syswow64

    认识System,System32,Syswow64 有时候人们怀疑一个系统的底层结构能否保证这个系统在被使用时达到安全而高效,64位版本的Windows在这方面就比较完美.Windows XP和Wi ...

  5. System32和SysWOW64

    在64-bit的Windows系统中,System32和SysWOW64文件夹里都存在了大量的dll文件,那么到底哪一个是存放32-bit程序,哪一个是存放64-bit程序呢?想必很多人都有这个疑问. ...

  6. Windwos中system、System32、SysWOW64区别

    system:存放16位的系统文件:windows x86和x64皆存在 System32:在windows x86中存放32位的系统文件:在windwos x64中存放64位的系统文件 SysWOW ...

  7. windows System32 与SysWOW64区别

    作为码友,遇到一个问题,在64位windows编写的32位程序,访问不了System32 里面的文件,看来这个问题有点尴尬,System32 放的是64位程序,SysWOW64放的是32位程序,你的3 ...

  8. win7 64位 system32和syswow64文件夹

    \Windows\SysWOW64  文件夹下存放32位的库和应用程序 (WOW64 == Windows on Windows 64 bit ) \Windows\System32  文件夹下存放6 ...

  9. 转:System32与SysWOW64的关系

    有时候人们怀疑一个系统的底层结构能否保证这个系统在被使用时达到安全而高效,64位版本的Windows在这方面就比较完美.Windows XP和Windows Server 2003都是运行64位硬件的 ...

  10. System32与SysWow64

    1.SysWow64 (System Windows On Windows 64)文件夹: SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方; 2.Syste ...

最新文章

  1. json字符串拼接 json_encode 数组带有花括号{}和中括号[]
  2. re匹配正则字符串中的起始和结束元字符的使用方法
  3. 导语3——node以及npm
  4. android ArcGIS学习笔记一
  5. 使用Canal实现redis和mysql的同步
  6. java笔记--重定向输出流实现程序输出到日志
  7. 基于EasyNetQ的RabbitMQ封装类
  8. SQL Server字符串左匹配
  9. 目录中带.造成文件上传验证问题
  10. 写给新入IT的新人们(转载)
  11. c#简要概括面向对象的三大特征(三)
  12. Java实现八大排序算法
  13. 第十二章 Android第三方库源码
  14. RescuePRO Deluxe(闪迪数据恢复) v6.0.3.1中文破解版
  15. 前端之图形学-1 数据可视化
  16. Ubuntu 使用Tecplot报错 解决方案
  17. 学期学会的一些代码23333原创
  18. MD5校验判断文件是否一样
  19. 顽童时代-----钟丽思
  20. 【linux系统如何查看内核版本、操作系统版本等信息】

热门文章

  1. Linux操作系统———李纳斯
  2. 画象棋棋盘c语言程序设计,绘制中国象棋棋盘(c语言).docx
  3. 《Python编程从入门到实践 第二版》第八章练习
  4. YOLOv5超详细的入门级教程(训练篇)(二)——VOC2007模型复现
  5. PostgreSQL 13 新特性之 FETCH FIRST WITH TIES
  6. 对接阿里云的短信接口发送手机验证码
  7. Jenkins 更换插件源
  8. 浮山中学2021年高考成绩查询入口,浮山中学2019年高考成绩通报,第二波震撼来袭...
  9. 追求得到之日即其终止之时, 寻觅的过程亦即失去的过程。——村上
  10. vue 动态修改页面的meta