过期罐头电脑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5154|回复: 0
收起左侧

操作系统与应用软件中64位与32位的关系

[复制链接]
wfdd 2012-2-23 13:18:29 | 显示全部楼层
64位计算已经逐步 融入了我们的生活,MacOS、Linux和Windows Server系统中64位都已经成为主力,而64位的Windows客户端也得到了很好的推广。但是,64位却然很多人“望而却步 ”,由于 大家都不熟习 64位计算的特性,也担忧 所谓的“兼容性”。其实没有必要担忧 这些,64位是一个兼容原有32位的扩展平台,下面将详细的进行说明。

  
历史发展

我们平常桌面电脑使用的所谓64位平台其实是 x86-64,也就是说在原有的 x86 平台上实现 64 位。什么是 x86 平台呢,也就是 Intel 在 8086 之后一系列处理器中使用的架构,8086 是 16 位的,后来扩展到 32 位的 80386,之后一直沿用就构成 最盛行 的的 32 位处理器系列,这种架构也叫做 IA32(Intel 实现32位),注意 AMD 也是使用 Intel 的技术。
32 位 x86 处理器经过鼎力 发展,性能已经比较强大,完全合适 于桌面计算机和通用服务器,用户和开发者数量庞大。但是 32 位 CPU 的内存寻址能力(可访问 4G 内存)有限,于是 AMD 公司率先开发出了 x86-64(也称为 AMD64)架构处理器,它完全可以实现 64 位计算。后来 Intel 自然不会示弱,也开发了EM64T(扩展内存 64 位技术),也就实现了和 AMD64 简直 一样的 IA32e(Intel 实现32位扩展)架构处理器。
当前,主流的Intel/AMD处理器都是准64位处理器。
但是要注意的是在 AMD64 降生 之前, Intel 和 HP 等公司协作 开发了 IA64 (Intel 实现64位)架构,这个是一个全新的 64 位架构,不兼容原有的 32 位程序,只能通过模仿 器模仿 执行,而且效果完全不尽人意。不过这和我们现在讨论的 64 位没有关系,这大约 就是误解的来源之一。
   
硬件实现

那么,64 位计算是如何实现的呢?首先要说明 x86-64 是站在 x86 的肩膀上的,并没有重整旗鼓 ,CPU 指令长度(即指令占有的二进制位数)不变,原有的指令集也一概 保留 ,所以 x86 和 x86-64 总体的架构是一致的,指令完全兼容。改动 的部分,原有通用存放 器容量均增长为 64 位,顺便还加了 8 个,同时增加了 8 个 128 位的 XMM 存放 器,内部总线(即 CPU 部件间的数据通道)宽带也增至 64 位或更多。当然还有增加用于支持这些存放 器的相关指令。由此可以看出,CPU 处理的数据均支持 64 位,内存编址理论上也可到达 2的64次方 个地址空间,但由于是在 x86 的架构上构建的 64 位计算,64 位线性寻址能力还不成熟,实际上的可编址并没有这么多,但可改良 。
之前也一再强调,x86-64 只不过是 x86 的扩展,因而 现有的 64 位处理器可以同时运行 32 和 64 位程序。下面以 Intel 的技术(AMD 的原来其实一样)为例说明。具体状况 要分为下面几类:
  1. 没有激活 64 位(传统模式/ IA32 模式)。也就是没有为机器安装 64 操作系统,只使用 32 位操作系统。这时 CPU 只会工作在纯 32 位模式,第二节中提到的硬件和指令都被屏蔽掉了。
(下面这些是触及 32 位模式和兼容 16 位程序指令的,这里就不再详细说明了。)


  • 1.1. 实模式
       

  • 1.2. 虚拟 8086 模式
       

  • 1.3. 保护模式
       

2. 已经激活 64 位。这时已经安装 64 位操作系统,操作系统在启动时就将 CPU 置为 64 位工作状态。一切 新存放 器、扩展存放 器和指令都被激活并可用。
  

  • 2.1. IA32e 模式/ EM64T 模式。这时正在运行 64 位程序,CPU 完全以 64 位特性工作。
       

  • 2.2. 兼容模式。这就是在 64 位系统下运行 32 位程序的模式了。具体的状况 下面会详细说明。
       

  
软件实现

在兼容模式下,支持 x86-64 的 64 位操作系统就要起到谐和 作用了,它首先要是辨认 程序的平台性质,如 16 位(Windows x64 并不支持 16 位子系统,因而 无法执行 MS-DOS 16 位程序)、32 位,还是 64 位。假如 是 32 位,就在相应的程序指令前加上 32 位标志,CPU 遇到这个标志时,就不会把程序应用的 64 位新特性中,为程序指定 32 位存放 器(虽然部分 32 位存放 器是 64 位存放 器的前一部分,但它们名字是不相同),内存空间也重新映射或进行必要转换(这还不太确定)。也就是说,32 位程序所看到的存放 器依然 是 32 位的,内存依然 只能访问 4G 或以下,它们不会发现 CPU 有任何异常。
对于操作系统的软件部分,就拿 Windows x64 来说,我们可以发现,它比对应的 32 位系统要臃肿一些,部分原因是 64 位指令数据要长一些,单个程序会大一些。但更明显的是操作系统中的很多东西都是“双份”的,也就是分别准备了 64 位的和 32 位的,这些主要是平台资源(如 .NET 框架)、库资源(如 Visual C++ 库)和一些底层的系统工具(如 CMD、DXDiag)。更明显的表现是,打开系统分区,我们就能发现程序文件夹“Program Files”有两个,一个用于 x86-64 软件,另一个则用于 x86(32位)软件。这可说明,不只 硬件完全支持 x86/x86-64,操作系统也把这两个平台放在对等 的位置 。
随着 64 位操作系统的推广,越来越多的软件开发者会同时在 32 位和 64 位环境下进行软件测试,保证软件的牢靠 性。但是要他们通通 开发纯 64 的版本是不理想 的,虽然从 x86 过度到纯 x86-64 理论上只需 重新编译,原来的代码可以不作任何修改,但有时并不这么简单,同时还要考虑经济效率(再次开发是要花钱的),再说一些软件并不需要. 用的用到 64 位的计算特性(所以也没有修改和重新编译的必要)。所以就放心的用那些已经写明支持 x86 64位平台的程序好了,就算没有声明支持 x86-64 也是可以运行的。

  
兼容问题和解决计划

对于任何一个新的操作系统,都会用不兼容的状况 。假如 遇到不兼容,应该先考虑是否是操作系统本身 升级带来的。举个例子,对于一个为 Windows XP 开发的程序假如 在 Windows 7 x86 上运行没有问题,那在 Windows 7 x64 上运行应该也不会有问题。当然还是不推荐使用已经过时的程序。
另一点需要. 注意的是,前面已经提到那些需要. 准备“双份”中的 32 位的平台或库资源是否安装了,它们是支持开发软件的基础,32 位和 64 位必须逐个 对应。假如 缺失了相应的 32 位版本,需要. 它支持的 32 位程序自然不能运行。解决方法就是使用程序的安装导游 重新安装(而不是使用绿色安装包),或者查找程序说明后再到微软下载中心下载缺失的组件。
  
推荐使用 64 位而不用 32 位的状况

和硬件打交到的驱动程序,由于 他们的底层工作特性,64 位是必不可少的。这就是为什么 64 位操作系统推广迟缓 的原因,也是 64 位“兼容性差”的表现。还好当前硬件厂商都默认发布 Windows 64 位版本。
除了驱动程序还有什么软件必须用 64 位的?这个并不好说,一般说来是那些需要. 频繁处理大量数据或者需要. 占用很多内存空间(甚至会超出 4G 内存空间)的程序。比方 :


  • 一些大型的开发平台或服务器平台,如 AutoCAD 、Photoshop 和 SQL Server 等;   

  • 编/解码器,如 PotPlayer 及对应解码器,假如 你要看一些质量 很高的电影,用 64 位软件渲染自然会流程一些;   

  • 一些频繁使用的工具,假如 你要 Internet Explorer 一次同时打开十几个页面,或者要杀毒软件监控全部文件和数据区,那还是用 64 位的吧。
       

至于其他小巧的软件,就没必要这么纠结了,假如 有 64 位的就用,没用就用 32 位的替代。不过说实话,我们都希望用 64 位,即便 软件性能没有什么改良 ,至少运行效率会高一些,还有“原生 64 位”听起来很正统啊。不过要是“没有”那也没啥关系,我们还有“兼容模式”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

一键重装系统|雨人系统下载|联系我们|网站地图|过期罐头电脑论坛

GMT+8, 2024-11-26 09:46 , Processed in 0.046871 second(s), 25 queries .

官方免责声明:本站内容来自网友和互联网.若侵犯到您的版权.请致信联系,我们将第一时间删除相关内容!

Powered by Discuz!

专注于win7_win10_win11系统下载装机

© 2010-2023 GQGTPC.Com

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