★我要吧★

 找回密码
 注册[Register]
搜索
qq空间相册密码查看为什么登陆后需要激活无法注册?

【win7/8】32bit&64bit简单比较

[复制链接]
发表于 2015-4-12 14:36:43 | 显示全部楼层 |阅读模式
声明:以下内容不一定完全准确,请以涉略的方式阅读!
      总有一部分人迷信32bit或者64bit,但其实没几个能把32bit&64bit区分个所以然。“我喜欢”、“我习惯”或者“我觉得”只能作为个人的主观选择依据,可却总有那么些人喜欢把他当作客观事实一样。因而在此我们来浅层次的讨论一些在Windows中32bit与64bit系统的部分差异。
      32bit&64bit是两种机器字长,64bit的字长是32bit的一倍,故而理论上来说64bit下的计算能力是32bit。但是Windows主要运行在x86架构的CPU上,由于x86上的64bit支持实际上是在32bit基础上扩展而来,因此64bit的x86架构CPU可以原生支持32bit的机器码,这就使得x86上可以选择32bit&64bit的Windows操作系统。这里的32bit或64bit操作系统指的是该操作系统内核模式相关组件使用的机器字长。然而我们应用程序基本是工作在用户模式的,加之多数的64bit Windows操作系统提供了32bit&64bit两种用户模式下的字长支持(通过WOW64支持,但仅限于用户模式),因此主流的32bit应用程序可以在64bit操作系统上运行(PE不提供这种支持、Server系可选、Client系通常支持)。只有64bit的应用程序才能在理论上提供高出32bit一倍的计算能力,这与操作系统并无直接关系。但非常遗憾的是64bit软件的数量相对32bit来说非常稀缺,甚至很多人从未使用过64bit软件,因而64作    系统的计算能力优势多数时候无法体现反而还会因内核模式字长较长消耗更多的内存以及wow64的存在增加硬盘空间占用。
      字长的不同带来的影响不只是计算能力上的差别,还有可使用的内存地址空间的差异。地址空间不是物理内存的大小,这就如同我们常见的101、102……这样的房间编号,一个三位数的编号能表示的范围是000-999这么一大段(类似地址空间),然而我们实际使用可能只有101……109、201……209、……这样一部分来表示房间(类似物理内存)。32bit的地址空间高达2^32字节(刚好4GB),而64bit理论上地址空间有2^64字节(但实际上AMD64刚出现时地址空间只有48bit,至今也未完全使用全部64bit)。因而在物理内存超过4GB的时候我们“通常”推荐使用64bit系统。
       关于地址空间的话题还未结束,上面你所看到的仅仅是最表面,我们继续往下挖一层来看这个问题。前面我们知道Windows系统中存在内核模式和用户模式两种模式,它们分别对应可使用x86架构CPU的ring0(原最高现次高,现最高为专供虚拟机监视器使用的ring -1)和ring3(最低)特权等级,之所以没有使用ring1和ring2更细致的划分是为了方便的移植到其他架构CPU上(这也偶然的为早期的虚拟化技术提供了便利)。这两种模式的划分也同时将内存地址空间划分为这两部分。默认情况下两种模式AA制,也就是说在32bit的4GB空间中2GB是用户模式使用,另2GB是内核模式使用(用户模式使用低位,内核模式使用高位)。也就是说,此时任何一个进程都不能使用超过2GB的内存(日常应用的进程也很少需要这么大)。在64bit的Windows中两种模式亦AA制,但可用的地址空间远不足64bit。在Windows 8.1(或者对应内核的其他系统)之前,用户模式和内核模式的地址空间各有8TB,而8.1开始则将其扩展到128TB(顺便一提这两部分空间不是连续的,用户模式用64bit地址空间最低位部分,内核模式使用最高位部分,这之间有个巨大的“空洞”)。
      地址空间的话题依旧未结束,上面我们所说的只是“默认”情况下。在32bit的Windows中还隐藏着一个称为4GT的技术,这会打破原本的AA制平衡,用户模式的地址空间将扩展到3GB,同时内核模式的地址空间降到1GB。这是对系统的操作,我们可以通过修改启动配置文件来实现(不推荐,故而不写出具体方法)。然而用户模式下的应用程序自身还必须“意识到”这种情况才能使用这多出来的1GB空间(需要对PE头增加标记)。在64bit的windows中运行32bit的应用时默认页只能使用2GB的地址空间,但在“意识到”时可以使用32bit完整的4GB地址空间(注意这里与4GT无关)。64bit的应用默认可以使用操作系统支持的用户模式地址空间,但也可以将之限制在2GB内。注意:由于虚拟内存技术的存在,尽管单个进程无法突破用户模式地址空间的限制,但多个进程的总和是可以突破的,因此千万不可认为32bit系统下应用总共只能使用2GB(3GB)内存。同时在32bit系统还有一项称为PAE的技术可以将操作系统本身可使用的物理内存扩展到36bit(37bit),但这只是增加物理内存的可使用量,其不改变用户模式与内核模式可用的地址空间。在物理内存不超过16GB时PAE和4GT技术可用同时使用,但超过16GB时同时使用则按16GB使用。
       上述我们讨论的内容基本都围绕着用户模式,对内核模式我们也需要一定认知。包括系统的内核、物理设备的驱动以及一些核心进程是工作在内核模式下的。内核模式下不提供类似wow64的功能,因而像物理设备驱动和一些杀毒软件都需要对应系统位数,同时也使得64bit系统不可能完全兼容32bit应用。
       从Vista以后64bit的系统还多出了PatchGuard(事实上Windows Server 2003从SP1开始也支持)技术。其主要目的是防止非法修改内核模式驱动和Windows内核相关组件。可事实上这项技术并没有给不法黑客带来多大麻烦反而降低了杀毒软件在64bit中的查杀能力(不法分子可能利用其技术漏洞,但安全软件却不能这么做)。
码了半天字也累了,暂时就讨论这点东西了。32bit&64bit直接的区别自然不是局限于这些,我希望大家看完这些内容多少有点收获,不要把很多问题看得非常简单,更不要因而把主观意识作为客观事实来传播。没有法律规定大内存就不能用32bit系统,也同样没有规定小内存就不能用64bit,总有人会需要做出格格不入的选择,但如果你以自身观点出发来看待甚至把人当作笑话的话,最可笑的其实是你自己。
 楼主| 发表于 2015-4-19 13:03:45 | 显示全部楼层
当作了解,大家看看吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

QQ|手机版|小黑屋|☆我要吧☆ ( 豫ICP备13016831号-1 )

GMT+8, 2024-5-3 11:10 , Processed in 0.059714 second(s), 18 queries .

Powered by abc369 X3.4

© 2001-2023 abc369.

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