为了保证进程运行的安全性,操作系统使用保护模式,系统不会直接访问数据真实的地址,采用虚拟内存,虚拟内存与真实内存映射,通过映射关系来获取文件和数据。系统会给每个进程都分配一个4G大小的虚拟内存
虚拟内存空间的布局:分为用户空间(3G)和内核空间(1G)数据区为了方便理解是我自己划分的 实际没有
1、保留区(128M),这段区域不存放任何东西,不可以被访问
2、数据区,指令(局部变量也属于指令,运行时在栈中开辟)存放的区域:又分 为.txt .data .bss
.txt代码段,存放代码(包括操作码、要操作的对象、具体的数值比如2)
.data存放已初始化的全局变量和静态全局变量
.bss存放未初始化以及初始化为0的全局变量和静态全局变量
3、堆区(从低地址->高地址开辟内存空间)由用户自己管理,先进先出,像malloc申请的空间就在堆区存放
4、共享库:程序运行所需要的共享库,都存放在这个位置
5、栈区(从高地址->低地址开辟内存空间)由系统管理,先进后出,保存局部变量、函数形参等,函数的运行在栈区进行
6、命令行参数:存放程序名以及参数
内核空间(1G):分为3部分,直接访问区,常用部分,高端内存
直接访问区:cpu直接访问,提高CPU效率(不过寄存器)
常用部分(892M):虚拟空间和内存的映射关系
高端内存:内核中映射超过1G的文件时使用
4G虚拟内存布局
最新推荐文章于 2022-11-06 14:03:12 发布