1. 内存管理分为线性区和物理块区:内存先申请线性区,使用时再分配物理内存(触发缺页中断,申请物理页框,建立页表映射关系),释放通过线性区找到物理块,释放物理块和线性区。
2. brk、sbrk 低于128K内存申请(阈值128k可以通过glibc库函数进行设置)
3. mmap unmmap 大于128k内存申请
4. glibc发现heap顶部有大于128k内存空闲,通过brk或者sbrk来释放内存
5. 内存空洞 堆顶内存不释放导致下面的空闲内存释放不了
6. 在linux中,程序的加载,涉及到两个工具,linker 和loader。Linker主要涉及动态链接库的使用,loader主要涉及软件的加载。
linux程序内存空间分布 TEXT DATA BSS(Block Started By Symbol) HEAP STACK
32位系统程序内存布局
64位系统程序内存布局
管理员在2009年8月13日编辑了该文章文章。
阅读(1587) | 评论(0) | 转发(0) |