资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
CPU位数、操作系统位数和编译器位数关系随着近来AMD和Intel的64位CPU以及 Microsoft 64位操作系统的相继发布,我想来谈谈CPU位数与操作系统位数的问题,这二者有区别也有联系,操作系统位数的概念是基于CPU的位数的。首先我们从计算机的信息表示谈起。计算机中的信息分为两类:控制信息、数据信息。控制信息表示:条件、命令、状态等。数据信息有数值与非数值的两类,非数值如:文字、图像、声音等。所有这些信息在计算机中用数字代码表示,为了电路表示处理方便,就用二进制表示。电路用高电平、低电平表示2个数码“1”和 “0”,简单地可理解为高低电压或有无电。十进制在每个数位上可用10个数码(09),二进制在每个数位上可用2个数码(0、1)。用二进制表示数和十进制的其实就是一样,也可进行各种运算。计算机系统的信息从输入、存储、处理到输出就都是用基于二进制的电信号表示。如键盘的每一个按键可用一个数码表示;如鼠标可用2个数码分别表示水平和垂直的位置;如存储字符“A”可用数码“01100101”表示;如存储、输出图像可将图像分为很多点,各点用一数码表示其颜色。所谈的位数就是表示信息的二进制数码的位数。位数越大能表示的信息范围就越大。如“16位色”就是说能表示的颜色种数是2的16次幂(65536),32位就有2的32次幂(65536*65536)。 CPU的位数是指CPU能一次同时寄存和处理二进制数码的位数,这和CPU中寄存器的位数对应。 CPU为了实现其功能一般设计了指令集,即是CPU的全部指令,这就是机器语言。计算机的所有功能都是基于CPU的指令集。指令集和CPU的位数是有联系的。如Intel 8086 CPU是16位,其指令集也是16位。如Intel 80386DX CPU是32位,其指令集也是32位,但它也保持原16位指令集,这是为了向上兼容。操作系统的位数是说其所依赖的指令集的位数。计算机系统一般都应有向上兼容性,所以也可有64位CPU上运行32位操作系统、32位CPU上运行16位操作系统的情况。操作系统位数应该是根据指针类型的位数来定的。整数类型不一定跟位数相等,CPU位数准确地说应该是CPU一次能够并行处理的数据宽度,一般就是指数据总线宽度。附:64位CPU如:AMD Athlon64、Intel Pentium 4 F32位CPU如:Intel 80386DX到 Intel Pentium III和部分Intel Pentium 416位CPU如:Intel 8086、Intel 8028664位操作系统如:Windows XP Professional x64和Windows Server 2003 x6432位操作系统如:Windows95、Windows98、Windows NT、Windows 2000、Windows XP16位操作系统如:DOSWindows1.0到3.2是运行在DOS上的,不能算是独立的操作系统。呵呵,是这样的。如果你去看intel网站上的关于ia32结构的白皮书,会搞得比一般人明白许多。16位和32位早期的主要区别是寄存器的位数,内存的寻址和相应指令集的扩充。32位intel cpu都有real模式,即完全的16位模式,屏蔽掉32位的所有特性;32位模式,可以使用所有的32位特性;模拟的8086模式,可以用一个32位机模拟多个16位的8086机,他们的内存是分段隔离的。现在的操作系统使用的都是32位的模式,因为可以享受到cpu直接提供的内存的分页和分段管理。他们提供模拟机制,实际上也是依托cpu实现的16位环境,而不是直接解释16位代码。由于负责生成汇编代码的主要是编译器,所以设计16位的编译器在任何情况下只能生成16位代码。当然,这并不是说用16位的编译器不可能生成32位的代码,因为他完全可能被设计成在16位实模式下生成32位的代码,从而可以在32位的机器上被执行。这就是所谓的交叉编译。你可以使用诸如gcc这样的交叉编译器在16位dos环境下编译出可以在32位linux环境下被执行的程序。本文来自CSDN博客,转载请标明出处:现在才来弄这个问题有点晚了,呵呵。这些信息是在网上找的,我就总结了对自己有用的。操作系统要管理硬件,在对CPU进行管理的时候不同字长的CPU需要不同的指令集来管理,OS要可以管理响应的CPU才好,所以64位的CPU需要64位的OS。1、处理器的处理位数和操作系统的关系:处理器的位数是路,操作系统是调度灯或者交警。如果你的处理器是64位的处理器,而你的操作系统只支持32位处理器的话,就像一个不懂得现代交通的调度系统或者交警指挥交通,效率不会得到提升。如果你处理器是32位的,操作系统支支持64位。那么就像把现代交通调度系统和交警搬到清朝时期,你想想,他们愿意吗?(实际上,操作系统也不会正常运行,甚至不能正常安装)2、如何查看系统的位数一:关于windows系列机系统:我发现许多软件下载和安装时多了位数选择,有什么32位64位或x86之类的。现在关于查看自己系统位数的方法,提供大家参考。以前的Windows XP/Server2003几乎都是32位的操作系统使用 Winmsd.exe工具检查处理器:1.在开始菜单下,单击“运行”。2.在“运行”中,输入 winmsd.exe,然后回车。3.系统摘要 在弹出的“项目(system summary)”下面的右窗格中找到“处理器(processor)”。注意其数值。如果“处理器”对应的值是以“x86”开头的,则该计算机正在运行的是 Windows操作系统的 32位版本。如果“处理器”对应的值是以“ia64”开头的,则该计算机正在运行的是 Windows操作系统的 64位版本。二:关于linux系统:查看Linux操作系统位数(32位还是64)在安装一份64位ORACLE数据库之前,想先确认一下操作系统是否是64位。用uname -a命令查看了,但结果中并没有明确说明是多少位,于是可以再继续找其它方法。1.编程实现:在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数。若返回4则是32位操作系统,返回8即是64位。2.getconf命令:getconf命令可以获取系统的基本配置信息,比如操作系统位数,内存大小,磁盘大小等。例如:确定磁盘 hdisk0大小,若是 root用户,则输入:getconf DISK_SIZE /dev/hdisk0确定实际内存大小:getconf REAL_MEMORY确定是否机器硬件是 32位或 64位:getconf HARDWARE_BITMODE确定是否内核是 32位或 64位: getconf KERNEL_BITMODE若以上的getconf KERNEL_BITMODE方法不成功(在我的机器上就不成功),可能是因为版本不一致,可以再尝试用:getconf WORD_BIT,这个命令返回int类型的长度,与sizeof(int)一致。有的人会问:为什么586主板上必须同时插两条内存?不能插1条或3条吗?实际上这是指586主板使用72线内存时的情形,如果使用168线的内存就可以插任意条内存了,只要有插槽即可。如何理解CPU与内存条的关系呢?CPU不仅可以分成X86,还可以从位数上划分,如Intel 8088/8086 CPU就是8位的,而80286 CPU就是16位的, CPU与I/O口的操作要受I/O口的限制,每次只能传8位。但与内存交换数据则是公平的同频宽的传输。而CPU的发展比内存快,即位数多,因此内存条就要组合起来才能和CPU传输一次数据。缺少内存条就可能造成电脑系统无法工作。上面所说的586 CPU是64位的,因此就要使用两条32位的72线内存条。而168线的内存条是64位的,所以可以独立的工作。显然,72线并不表示72位都用来传输数据。同理,168线内存也不是168根数据线。下面的列表可以告诉您组装电脑时如何匹配CPU和内存条。CPU种类 CPU内部宽度 30线内存条/BANK 72线内存条/BANK 168线内存条/BANKIntel8088/8086 8位 1条(每条8位)Intel 80286 16位 2条(每条8位)Intel80386SX 16位 2条(每条8位)Intel 80386DX 32位 4条(每条8位)Intel 80486SX 32位 4条(每条8位)Intel 80486DX 32位 4条(每条8位) 1条(每条32位)Pentium 64位 2条(每条32位) 1条(每条64位)Pentium Pro 64位 2条(每条32位) 1条(每条64位)Pentium II 64位 2条(每条32位) 1条(每条64位)如果您没有这个表,又记不住应该插几条内存,该怎么办呢?很简单,仔细查看主板上的内存槽,上面有BANK编号,如BANK0,BANK1等。您知道为什么主板说明书上都说要插满一个BANK,才能插另一个BANK吗?实际上,一个BANK的几条内存宽度之和就是CPU内部的宽度。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号