内存管理、进程映像、虚拟内存、映射虚拟内存与物理内存的函数

一、内存管理
用户层
STL 自动分配/释放内存 调用C++
C++ new/delete 调用C
c malloc/free 调用POSIX或Linux
POSIX brk/sbrk 调用内核
Linux mmap/munmap 调用内核kernal
系统层
kernal kmalloc/vmalloc 调用驱动
驱动 get_free_page

二、进程映像
程序是存储在磁盘上的可执行文件,当执行程序时,系统会把可执行程序
加载到内存中,在内存中形成了进程(一个程序可以同时加载多个进程)
进程的内存分布情况就是所谓的进程映像,从低地址到高地址依次分布
为:
text 代码段 二进制指令、常量(字符串字面值、被const修饰过
的初始化过的原data的数据)
data 数据段 初始化过的全局变量和静态局部变量
bss 静态数据段 未初始化过的全局变量和静态局部变量
程序运行前,会自动清0
heap 堆 由程序员手动管理的体量较大的数据
stack 栈 局部变量、块变量
environ 环境变量表 环境变量
每个进程都有一份,修改也不会影响其他进程
argv 命令行参数 通过程序运行前命令行附加的参数

练习1:定义各个内存段的数据,然后分别打印它们的地址编号,
与该进程的maps内存记录文件中对应
    /proc/进程id/maps
    查询进程id  命令:ps -aux       ./a.out 
                函数:getpid()

三、虚拟内存
1、系统会为每个内存进程分配4G的虚

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值