linux进程内存分布图,Linux 内存布局

关于内存分配,一般的 C 语言开发者使用的更多的是 glibc 库提供的 malloc 和 calloc 等函数,这些函数执行成功,这会返回一个进程所需要的内存起始地址,当然,他们是针对 CPU 端的虚拟地址。Linux 内核负责与硬件打交道,针对 CPU 端的虚拟地址很多场景下都不满足需要,固这些函数在内核状态下无法运行,所以内核提供了自己的一套专门的内存申请释放函数

进程在执行过程中,Linux 内核需要根据需要分配给核外进程一块内存区域,进程就把这一片区域作为工作区按照自己的需要执行工作流。对于核外进程来讲,他所看到的地址是不固定的,每一次申请得到的起始地址也是未知的,因此对于内核来讲,他需要更好的动态管理内存,因为核外进程经常是成千上万的,但是实际的物理内存空间是有限的,所以 Linux 内核需要高效的处理内存分配问题。

物理与虚拟内存

虽然现在多数系统都是 64bit,但是很多理念是从 32bit 延展而来的,有必要好好的对比 32bit 和 64bit 的内存动态管理方式。要区分当前运转的系统是 64bit 操作系统还是 32bit 操作系统有很多方法,其中一种就是是否支持 4GB 以上的虚拟地址空间。我们从图 1 中来稍微观察一下这两个不同 bit 宽度的系统的内存布局情况。

8386e8b23d4679f74661624b4c0b3ea7.png

是不是懵逼了,和你听过的或者老师讲过的是不是不太一样?尤其是左边的映射关系,刚刚上面不是讲了 32bit 最多 4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值