32位和64位操作系统相关的小知识

32位和64位操作系统相关的小知识

       现今的计算机内存大致可以分成两个区域:用户区域和内核区域。操作系统就运行再内核区域,而普通的应用程序就运行在用户区域。这种结构的出现是伴随着对系统安全性的需求而出现的,用户程序不可访问、修改内核区域,但一些极精简的小操作系统依旧是用户程序和操作系统运行在同一个内存区域的。

       众所周知32位的操作系统最大内存为4G,以Linux操作系统来说,操作系统占用的内存为1G,而分配给用户程序的内存则是3G。

       我们常说的32位操作系统,64位操作系统到底取决于什么?其实这是取决于CPU的支持的,更简单的说是和CPU里面的寄存器有关的。寄存器由一些列的存储结构构成,这种硬件的物理结构决定了寄存器的位数,决定了处理器的位数(简单来说就是一个寄存单元由多少个开关组成,4位的就是4个,8位的就是8个),理所当然的也决定了能在其上运行的操作系统的位数。我们说8008、8051是8位的,8086是经典的16位处理器(最初Windows就运行在16位的8086系列处理器上,这也是我们安装Windows系统或在其上运行的软件时X86版本的说法的由来),而80386以后的就开始是32位的处理器了(这上面能运行32位的操作系统),至于现在流行的64位处理器甚至能追溯到1961年的7101。

       汇编中遇见的那些ax、eax是怎么来的?这些东西也和寄存器的位数和操作系统的位数的变化有关。我们知道现在的64位处理器上能够安装32位的操作系统,为什么?因为兼容。同样的寄存器也是那么回事,早先的时候在8位8008系列处理器的时候有寄存器a、b、c、d这些8位的寄存器,后来到了16位处理器的时候,为了兼容以前的程序就出现了al、ah这两个8位寄存器组成ax寄存器,到了32位的时候同样的原因就有了eax寄存器,到了64位处理器时代,也是同样的原因就有了reax寄存器。

       这些不断变大的寄存器位数,是因为 更大的计算需求,4位寄存能装4个二进制位对应的十进制数的大小就是15,换个说法就是它最大就只能表达到15,更大的就没法表的了,同样的之后的16、32、64依次类推就是了。



猜你喜欢

转载自blog.csdn.net/smallerxuan/article/details/80397127