32位地址空间指的是虚拟内存的寻址范围,但是为什么要求物理内存大小不能大于4G?
小弟在看《深入理解计算机系统》,理解得不是特别好,有一个基础问题,想问一下,谢谢!
书中说每个进程都有一样的虚拟内存地址,而每个进程的虚拟内存空间都可以对应不同的物理内存。那这样的话理论上物理内存多大都可以啊。比如进程1对应物理内存0-4G,进程2对应物理内存4-8G。但是32位的处理器为什么要求物理内存最大为4G呢?
是不是这个理解错了?谢谢!!
[解决办法]
既可以说你说的没错,也可以说你说错了
1.你说错了,因为虚拟地址不是“天然存在”的,操作系统在内核级是没有所谓“进程间独立的虚拟地址”的,这时候32位字长便限制了操作系统内核的寻址能力
2.你没说错,操作系统内核加一级页表,并且CPU也要支持,在牺牲一部分性能的情况下,可以寻址超过硬件字长的地址,在Intel平台上,这叫做PAE(物理地址扩展),这时候用户级的单一进程地址空间虽然仍限制在4GB,但是却可以做到多个进程使用不同的物理内存空间,从而利用更大的物理内存,x86的PAE能使用64GB内存
[解决办法]
2^32 = 4GB。
现在的处理器支持PAE技术,寻址可以支持8GB.