2^32次方的单位是字节吧,为什么不是比特呢
追答翻阅了大量资料...发现我开始的回答是错误的...
我更正一下,2^32(位)=4G内存寻址是个错误的算式...
----------分割一下------------
早在奔2时代,硬件设计人员为当时的CPU加入了一些东西,首先是32位的运算能力,然后是32位地址总线,还有MMU(分页单元),使得CPU对物理内存进行段页式管理!此时,CPU是采用二级分布制:页目录(在线性地址中占10位)->页表(10位)->内存页表页(12位),之后,再在页表项入边才是相应的空间!这样CPU就访问2^10*2^10*2^12=4GB的内存了
然后很快发现服务器上4G内存不给力,然后就加多一级页表项,并加入相应控制寄存器,对其进行访问控制!这样,就可以对前的架构进行兼容!这套机制到现时都还在用,比如酷睿系列基本上物理寻址都在40位左右,这也是为了向下兼容;
上面介绍的是硬件,下面改说操作系统了;
操作系统的原理基本上是照抄硬件设计,有个插曲就是:你肯定听说过什么什么补丁能让32位的操作系统支持4G以上的内存吧;
没错,这就是PAE(Physical Address Extention)技术;上面说到了目前的CPU物理寻址在40位左右,而操作系统却限制在32位上,为了突破这个限制,所以使用PAE技术,从OS里跟CPU联动使用CPU设计的32位以外的页表和,控制寄存器以达到访问超过4g内存的目的.
32位操作系统的单位是位,你计算支持多大内存时,为什么把2的32次方的单位变成字节了呢?