linux 进程地址空间3G,进程的虚拟地址空间分布

20181017141756973123.png

一个linux进程的虚拟地址空间分布如上图所示,分为内核空间和进程空间,对于一个32位操作系统来说,4GB的空间分成两部分,低地址的0~3G给用户空间,高地址的3G~4G给内核空间。

内核空间

与进程有关的数据结构段

每个进程都自己独特的PCB和页表,映射到不同的物理内存。

内核代码段

所有进程的内核代码段都映射到同样的物理内存,并在内存中持续存在。

进程空间

1.正文段

存放代码和常量值(字面值常量)

2.未初始化数据段(BSS段)

存放未初始化的全局变量

3.初始化数据段

存放已经初始化的全局变量

4.堆

动态内存的分配

5.内存映射段

常被用来加载共享库。

内存映射

将虚拟内存空间与磁盘上的文件关联起来,来初始化这个虚拟内存空间的内容,这个过程叫内存映射。

共享库

1)几乎每个程序都会用到如printf之类的标准I/O函数,如果只使用静态库,这些函数的代码将会被复制到正文段中,对于一个运行上百个进程的系统来说,这是一种对内存的浪费,所以提出共享库

2)程序第一此执行时,用动态链接的方法将程序和共享库链接,减少了可执行文件的长度

6.栈

存放局部变量

栈与堆的区别

20181017141757316851.png

原文:https://www.cnblogs.com/Joezzz/p/9803344.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值