内存管理分析之一:Linux进程空间与虚拟地址的好处
内存管理分析之二:MMU机制在进程中使用时的一些问题
内存管理分析之三:了解这些概念就了解了整个MMU机制
使用虚拟地址的好处
现代操作系统使用了虚拟地址的方式管理各个进程对内存的使用,这使得应用层编程方便、安全,主要体现在如下方面:
1, 让每个进程拥有了相同的、独立内存空间,相互之间不会干扰
2, 读写内存更安全。由于系统和MMU的限制,使得进程无法操作到其他进程的数据。
3, 不连续的物理空间可以映射成连续的虚拟地址空间
4, 进程分配的内存空间只有在实际使用时,才会触发缺页异常来分配实际物理空间,从而最大程度减少了内存空间的浪费。
32位系统的虚拟地址空间
32位系统的每个进程得到了完全相同的4GB大小的虚拟地址空间,具体的内存分布见下图:
由此可见:从上到下(地址从高到低)依次为栈(函数内部局部变量),动态链接库, 堆(动态分配内存),bss段(存未初始化的全局变量),数据段(存初始化的全局变量),文本段(存代码)
1,栈空间大小有具体系统设定来确定,一般为8MB左右
2, 堆空间大小为去除了动态链接库、data段、text段后的大小,一般为2GB左右
64位系统虚拟地址空间