Please enable JavaScript.
Coggle requires JavaScript to display documents.
ch7-从程序员的角度实现内存管理 - Coggle Diagram
ch7-从程序员的角度实现内存管理
堆
Next fit:从上一次寻找的终点开始寻找
Best Fit:有助于减少碎片化,时间最长
Worst Fit
First Fit
OOM(Out of Memory)
懒惰分配
问题
外部碎片:效率低的来源(在搜寻合适的分配块时不可避免会访存到碎片),不可避免
内部碎片:有效载荷小于实际的需求(为了对齐需要),所以一般为小请求申请大的块
地址空间
堆--动态分配内存
数据段和BSS(Block Started by Symbol)--全局变量和静态变量
栈--存储局部变量
代码+常量
逻辑地址空间,每一个进程都有其自身的地址空间,并且它可以存储在物理内存的任一部分
代码+常量
程序代码需要内存空间,因为CPU需要从内存空间中取指
常量被存储在代码段中
一个进程并不局限于一个程序代码
代码和常量都是只读的
数据段
Data:包括初始化的全局变量和静态变量
BSS:包括未初始化的全局变量和静态变量
对于程序来说BSS只是一系列符号,它的空间尚未被分配
当BSS中的变量被调用时才会被分配空间
32位操作系统中用户可用的地址空间大概为3GB,还有大概1GB分配给内核使用
栈
EAX
函数调用结束后栈空间并不立即返回给操作系统
段错误