OS Linux 内存布局
Linux 内存主要用 : 页式内存管理
- 所有的段地址都是一样 , 所以处理都是线性地址
虚拟地址 :
- 32 位系统 : 内核空间占 1G , 用户空间占 3G
- 64 位系统 : 内核空间 , 用户空间都占 128T , 中间部分未定义
内核/用户空间区别 :
- 内核空间 : 内核态 , 程序只能访问内核空间
- 用户空间 : 用户态 , 程序只能访问用户空间
用户空间内存分布 :
- 代码段 : 二进制可执行代码
- 数据段 : 已初始化的静态常量和全局变量
- BSS 段 : 未初始化的静态变量和全局变量
- 堆段 : 动态分配的内存,从低地址开始向上增长
- 文件映射段 : 动态库、共享内存等,从低地址开始向上增长
- 栈段 : 局部变量 , 函数调用的上下文。栈的大小是固定 = 8 MB