楼主,我觉得这里需要区分两个问题:(1)32位下进程的寻址空间是4G,那么程序超过4G以后,如何将4G以上的物理内存映射到4G大小的物理内存上?即 程序大小超过内存大小。(2)32位下进程的寻址空间是4G,但是我的物理内存是8G、16G或者32G的情况下,程序是否可以利用超过4G以上的内存部分?即32下进程如何映射4G以上的内存。 第一点就是你提出的问题 首先我们回顾操作系统的内存管理历程,刚开始计算机的程序和内存都比较小,所以基本上都是进程直接映射到物理内存上。随着时间的发展,软件急剧膨胀,软件大小的增速远超物理内存的增速,于是有了把程序的进程寻址空间进行隔离,用虚拟地址映射到内存物理地址上,实现不同进程的地址空间映射互不干扰。再后来,发现软件实在是太大,没有办法把进程的所有部分全部映射到物理内存上,于是采用页表记录映射关系,有了内存映射页面的换入和换出机制。但是对于32bit的系统,由于系统寻址空间的限制,虚拟地址只能局限于4G,不可能超过4G。 第二点,32位的系统使用超过4G的内存 这里有内存扩展机制(PAE),详细内容见 linux内核高端内存寻址。

相关推荐

找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
牛客网
牛客企业服务