Linux中进程虚拟内存的布局

进程虚拟内存的布局总览

在这里插入图片描述

预留段(.reserve)

一共占用128M,属于预留空间,进程是禁止访问的

代码段(.text)

可执行文件加载到内存中的只有数据和指令之分,而指令被存放在.text段中,一般是共享的,编译时确定,只读,不允许修改

数据段(.data)

存放在编译阶段(而非运行时)就能确定的数据,可读可写。也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存放在这个区域

数据段(.bss)

通常用来存放程序中未初始化以及初始化为0的全局/静态变量的一块内存区域,在程序载入时由内核清0

堆(.heap)

用于存放进程运行时动态分配的内存,可动态扩张或缩减,这块内存由程序员自己管理,通过malloc/new可以申请内存,free/delete用来释放内存,heap的地址从低向高扩展,是不连续的空间

文件映射区

包括动态库、共享内存等,malloc分配超过128kb内存时,需要用到这个区。

栈(.stack)

记录函数调用过程相关的维护性信息,栈的地址从高地址向低地址扩展,是连续的内存区域

内核空间

所有进程的内核空间(3G-4G)都是共享的,但只有运行在内核态的进程才能访问。内核空间中存放的是内核代码和数据

64位系统内存布局

在这里插入图片描述

64位系统内核空间和用户空间各占128T,中间部分未定义。进程在用户态时,只能访问用户空间的内存,进程在内核态时,只能访问内核空间的内存。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值