对于32位操作系统来说,它的地址位数为32位,所以对应的物理内存最大为4G, 这里要区分32位操作系统和32位地址线: 32位操作系统:内存分页机制具有2级页表,所以虚拟地址空间102410244K = 4G空间,当然完全软件配置3级页表表示102410241024*4K = 4T空间 32位地址线:是说soc和内存之间的地址线为32位,也就是说最大可寻物理地址位2^32=4G空间; 但是对于虚拟内存来说,却可以为4G的1.5倍到2倍,同时,一个大于4G的程序也可以运行, 虚拟地址大小的限制条件有两个: CPU和TLB之间的地址线位数,这里具有决定作用,32位对应的虚拟地址空间位2^32 = 4G空间,64位虚拟地址空间则就是2^64...多少来?但这里是最大可访问的虚拟地址空间; 页表的级数,这里soc实际到页表中可以访问的虚拟地址空间:2级4G,3级4T空间 它是虚拟内存,可以把一部分逻辑地址先导入内存,但是对于大于4G的程序来说,它的逻辑地址应该是大于32位的啊,那通过页表和只有32位的物理地址怎么进行映射啊。。。。 通过上面分析可知:CPU和操作系统任意一个是32位就会把虚拟地址空间限制在4G上,故而不能允许4G以上的程序; 还有一点需要说明,应用程序的虚拟地址是编译器来确定的,它会自动优化空间问题,对于32位的时代来说,通常情况下不会超过4G的可寻址虚拟地址空间的 内存管理方面的可以参考这里,有问题可以直接提问,我尽量解答;
点赞 1

相关推荐

嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
牛客网
牛客企业服务