美文网首页
你的电脑是32位还是64位呢?

你的电脑是32位还是64位呢?

作者: 赵客缦胡缨v吴钩霜雪明 | 来源:发表于2021-01-14 16:38 被阅读0次

刚上大学,第一次拥有个人电脑,才对PC有了进一步的认知。有时候装软件或者重装系统时,经常会听到"32位""64位"的说法,类似的还有"x86""x86_64""i386""amd64",这两组概念之间有着怎样的联系和区别呢?

实际上,在通用PC领域,不论是windows还是linux界,这两组概念涉及了三个层次:硬件,系统和软件

硬件

早期的intel处理器,如i386,486,586,奔腾系列的CPU架构,都是32位的(32位的寄存器,32位的虚拟地址空间),统称为x86架构。

随着技术的发展,32位CPU已经无法满足需求,intel与AMD采用不同的方法开发64位架构的CPU,intel使用与x86完全不同的IA64架构,由于与原来的X86完全不兼容,因此在PC领域没有得到应用,只在服务器领域有一些使用。

而AMD开发的架构称为amd64(将寄存器扩充为64位,支持64位虚拟地址),能够完全兼容x86指令集,不用任何修改就能运行老的操作系统和应用软件,在PC界得到广泛的应用,现在市场上几乎所有的PC用途的CPU都是支持amd64指令集的了。

当然intel也很快开发出支持该指令集的CPU,不过intel将其称为x64架构,而不是用amd64这个名字。而在linux中则称为x86_64,即x86架构的64位扩展。

在linux中查看CPU是否64位的方法:如果/proc/cpuinfo内的flags字段中含有"lm",则表示使用的是64位CPU。

>/proc/cpuinfo
>grep 'lm' /proc/cpuinfo
>

系统

系统同样可分为32位与64位。

在x86_64架构的CPU出现之前,PC的操作系统都是用32位,例如windows 2000,xp,当时的unix,linux等。

在x86_64架构出现后,系统也就有了两个版本:32位和64位,两者的主要区别在于与硬件体系结构相关的操作中

由于x86_64架构完全兼容x86架构,因此,32位的系统完全可以在x86_64位上运行,只不过它只使用了x86部分,没有完全发挥硬件的功能而已。

而64位系统专门针对64位的扩展功能而开发的,就是为了最大限度地发挥硬件的能力,它无法在x86架构的cpu上运行。

另外,不论是windows还是linux,驱动程序都需要加载到内核空间中,因此它的类型(32位或64位)需要跟系统完全相同。

系统与CPU的关系如下图所示:

查看linux系统是32位还是64位的方法:执行shell命令“arch”,显示为x86_64表示当前系统为64位,显示为i386,i486等表示系统是32位的。

软件

在系统上运行的应用软件同样有32位和64位之分,老的应用软件运行在32位CPU及32位系统中,属于32位软件。

出现了64位系统之后,也出现了专门运行在64位系统,能够最大限度使用64位系统的扩展功能的原生64位程序。

对于C程序来说,64位程序相比32位程序最大的区别就是int,long以及指针数据类型的长度都是64位的,可以使用64位的虚拟地址空间。

实际远不止这些,编绎器在将64位C程序翻译成汇编语言或者机器语言时,会尽量使用64位处理器的寄存器,尽量避免访问内存,例如把函数的参数,及局部变量优先放在寄存器,而不是在用户栈中。另外在64位系统中,为了兼容数量众多的老的应用程序,系统都会增加一个虚拟层,用来翻译x86指令,这样32位程序也可以在64位系统中运行(windows和linux都支持)。

同样在64位系统中,使用64位编绎器一般也可以选择编译成32位程序(gcc使用-m32编译成32位可执行文件)。

另外在PC上,软件能否运行,只需看系统是否支持即可,可以不用理会CPU的架构。软件与系统的关系如下图所示:

linux中查看可执行文件是32位还是64位的方法:执行shell命令"file /usr/bin/xxx", 如果是32位程序,显示为"ELF 32-bit …";如果是64位,则显示为:"ELF 64-bit…"。

> file /usr/bin/xxx
> ELF 32-bit …
> ELF 64-bit…

Linux发行版与内核

在linux发行版中,一般会针对不同的架构发布不同的安装光盘,以debian为例,可用于PC的就有i386和amd64这两个版本。

根据上面的描述,这两个版本的系统都可以安装在使用64位的CPU的机器上,而使用32位CPU的机器上则只能安装i386版本的系统。

在debian amd64光盘中带的内核及软件包全都是64位版本的,而debian i386光盘中则有32位和64位的内核,以及32位的软件,可能是考虑到有些用户想用64位内核来运行32位程序吧。

内核源代码是没有32位,64位之分的,在编译内核时可以用ARCH参数手工指定编译成哪一个架构。

相关文章

  • 你的电脑是32位还是64位呢?

    刚上大学,第一次拥有个人电脑,才对PC有了进一步的认知。有时候装软件或者重装系统时,经常会听到"32位"与"64位...

  • 你的童年是手机还是电脑?

    关于童年,你的脑海中还有多少能够被回忆的事? 在我记忆的童年里我很少出去玩,母亲不允许。童年,除了在学校,更多...

  • 2017-10-27

    你才能拿出你的那份烦恼烦恼烦恼份烦恼呢你电脑电脑电脑的电脑电脑电脑发呆呢你的电脑发你的那份烦恼 难道你的烦恼承诺

  • 是电脑重要还是你的孩子重要?

  • 为什么火绒安全能从杀毒软件中脱颖而出?

    你的电脑现在正在使用什么杀毒软件呢?360还是腾讯,亦或是百度...... ——题记 你的电脑现在使用什么杀毒软件...

  • 眼势力眼部护理:你的明眸我来守护

    亲爱的你,现在是在看电脑还是在刷手机呢?你总是一天24小时里有18个小时在与电脑、手机相伴,你说这是为了工作,那工...

  • 你是没想呢还是没想明白呢?

    说到这句话的时候,想到很多很多的人在我跟前说了所谓的“拖延症”,拖延症怎么治我不知道,每个人的拖延症各不相同,归根...

  • 你是没来过呢/还是走了呢

    一个月前的事情 因为我每天躺着看天花板 而变活了 像卡通电影的片头一样 一会是剪影 一会会游 一会是宇宙 所以一会...

  • 你是刺猬,还是狐狸呢?

    以赛亚·伯林依据古希腊的一则寓言,在他的小品文《刺猬与狐狸》中,把人分为两种类型:狐狸知道很多事情,刺猬知道一件大...

  • 你是友情还是爱情呢

    “我已经分不清你是友情还是错过的爱情” 好伤心的调调 我想应该是没有喜欢的 我们只是友情了 而我生气的 不是因为你...

网友评论

      本文标题:你的电脑是32位还是64位呢?

      本文链接:https://www.haomeiwen.com/subject/yamvaktx.html