您的位置:首页 > 运维架构 > Linux

linux进程内存布局及内存管理函数总结

2014-02-17 14:40 274 查看
进程是elf可执行文件加载到内存中的程序。对于一个进程来说,其内存空间包括以下几部分:

代码区:程序的代码存放区,只读区

全局区:存放全局变量和静态变量,main执行之前分配全局变量

bss段:存放未初始化的全局变量,在main执行之前清空bss段

栈区:非静态局部变量,包括函数的参数,栈区的内存管理有系统完成,自动分配,自动回收。

堆区:动态内存分配

一个进程有4G内存空间,应该是虚拟内存空间。0-3G是用户空间,用户可以自由操作。剩下

1G是内核空间,只能通过系统调用访问。

动态内存管理:STL-->C++ new/delete-->c malloc/free-->sys call sbrk()/brk()-->

sys call mmap()/munmap()-->kernel kmalloc/vmalloc-->get_free_page

malloc申请内存空间需要额外的内存空间保存额外的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: