linux进程虚拟空间的管理

按照不同的访问属性和功能划分为不同的内存区域,VMA

代码段:可执行文件的内存映射
数据段:可执行文件的已初始化全局变量和静态局部变量的内存映射
bss段:未初始化的或者值为0的变量的内存映射
lib库的代码段:多个
lib库的数据段:多个
lib库的bss段:多个
任何内存映射文件(有名mmap建立)
任何共享内存段(匿名mmap建立)
进程栈stack
进程堆heap
内核每进程的vm_area_struct项/proc/pid/maps含义
vm_start第一列 如00377000此段虚拟地址空间的起始地址
vm_end后一列 如00390000此段虚拟地址空间的空间结束地址
vm_flags第三列 如r-xp此段虚拟地址空间的属性 r可读 w可写 x可执行p私有段 s共享段
vm_pgoff第四列 如0000000对有名映射。表示此段虚拟内存起始地址在文件中以页为单位进行偏移,对匿名映射它等于0或者vm_start/PAGE_SIZE
vm_file->s_dev第五列 如fd:00映射文件所属设备号,对匿名映射来说,因为没有在文件的磁盘上,所以没有设备号,始终为00:00,对有名映射来说,是映射文件所在设备的设备号
vm_file->i_ino第六列 如9176473节点号
第七列 如lib/ld-2.5.so对有名来说,是映射的文件名,对匿名映射来说是此段虚拟内存在进程中的角色 stack表示在进程中做如ib/ld-2.5.so heap表示堆 其余情况不显示

数据结构

内核使用mm_struct来描述一个进程的虚拟地址空间,用vm_area_struct来描述一个虚拟内存区域(VMA)进程的虚拟地址空间由多个VMA组成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值