内存管理分析之一:Linux进程空间与虚拟地址的好处

内存管理分析之一:Linux进程空间与虚拟地址的好处
内存管理分析之二:MMU机制在进程中使用时的一些问题
内存管理分析之三:了解这些概念就了解了整个MMU机制

使用虚拟地址的好处

现代操作系统使用了虚拟地址的方式管理各个进程对内存的使用,这使得应用层编程方便、安全,主要体现在如下方面:

1,  让每个进程拥有了相同的、独立内存空间,相互之间不会干扰

2,  读写内存更安全。由于系统和MMU的限制,使得进程无法操作到其他进程的数据。

3,  不连续的物理空间可以映射成连续的虚拟地址空间

4,  进程分配的内存空间只有在实际使用时,才会触发缺页异常来分配实际物理空间,从而最大程度减少了内存空间的浪费。

 

32位系统的虚拟地址空间

32位系统的每个进程得到了完全相同的4GB大小的虚拟地址空间,具体的内存分布见下图:


由此可见:从上到下(地址从高到低)依次为(函数内部局部变量),动态链接库, (动态分配内存),bss(存未初始化的全局变量),数据段(存初始化的全局变量),文本段(存代码)

1,栈空间大小有具体系统设定来确定,一般为8MB左右

2,  堆空间大小为去除了动态链接库、data段、text段后的大小,一般为2GB左右

 

64位系统虚拟地址空间