第三节:首次适应算法分析2015.4.14.pptVIP

  • 7
  • 0
  • 约6.11千字
  • 约 33页
  • 2017-06-24 发布于福建
  • 举报
Linux组织存储器的方法 task_struct mm pgd mmap vm_area_struct vm_end vm_start mm_struct vm_prot vm_flags vm_next vm_area_struct vm_end vm_start vm_prot vm_flags vm_next 链表 进程地址空间 共享库 数据 文本 APR proc[] 区域描述符 APR页表 注意: 2015.4.7双周星期二下午实验课的linux系统,与最新的linux版本不完全相同。 参考书籍 《深入理解计算机系统》作者:卡耐基.梅隆大学计算机科学学院 Randal E.Rryant,David R. O’Hallaron。 实验课中的Linux源代码将空白块分成9个队列:32B到4K。 * malloc(),mfree() 2015.4.7星期二(双周) 深刻理解计算机 上机编程:分配器 首次适应算法、最佳适应算法、下一次适应算法 首次适应算法分析 #includestdlib.h void *malloc(size_t,size); malloc函数返回一个指针,指向大小为至少size字节的存储器块。 如果malloc遇到问题,那么返回NULL。 注意:与教材中的malloc函数不同。 free函数释放已经分配的malloc块 #includestdlib.h void free(void *ptr) Ptr参数必须指向一个从malloc获得的已经分配块的起始位置。 malloc和free分配和释放块 1 2 3 4 malloc(4*sizeof(int)) 1 2 3 4 5 6 7 8 9 malloc(5*sizeof(int)) 1 2 3 4 free 第二次分配的5个int 1 2 3 4 5 6 malloc(2*sizeof(int)) malloc算法分析 首次适应算法:从头开始搜索空闲链表,选择第一个合适的空闲块。 将大的空闲块保留在链表的后面。链表起始处留下小的空闲块的碎片,增加了对较大块的搜索时间。 首次适应算法速度很快,因为它尽可能少地搜索链表结点。 下一次适应算法和首次适应算法很相似,是不过不是从链表的起始处开始每次搜索,而是从上一次查询结束的地方开始。 若上一次在一个空闲块中发现足够的空间,那么这一次也能在这个剩余块中发现所需空间。 比首次适应算法快,利用率却低。 最佳适应算法检查数组的每一个空闲块,选择适合所需请求大小的最小空闲块。 内存管理:使用coremap[] coremap[]按照map的起始地址排序。 首次适应算法 存储管理器对coremap[]进行搜索,直到找到一个足够大的空闲区。 若空闲区大小和要分配的空间大小正好一样,否则将该空闲区分为两部分,一部分供进程使用,另一部分形成新的空闲区。 教材p77的例题 例题1. coremap[]: 进程申请空间大小是15 (1)搜索coremap[],找到第一个长度=15的空闲区 20 10 coremap[2] 50 30 coremap[1] 100 20 coremap[0] 0 coremap[CMAPSIZ] …… 20 10 coremap[0] m_size=3015,首次找到一个足够大的空闲区 50 30 coremap[1] m_size=1015 (2)空闲区的分配 新的coremap[]数组 50 30 coremap[1] 分配15个块出去,则: m_size=30-15=15, m_addr=50+15=65。 20 10 coremap[2] 65 15 coremap[1] 100 20 coremap[0] 0 coremap[CMAPSIZ-1] …… 教材p78的例题 例题2. coremap[]: 进程申请空间大小是30 (1)搜索coremap[],找到第一个长度=15的空闲区 20 10 coremap[2] 50 30 coremap[1] 100 20 coremap[0] 0 coremap[CMAPSIZ] …… 20 10 coremap[0] m_size=30=30,首次找到一个足够大的空闲区 50 30 coremap[1] m_size=1015 例题2 (2)空闲区的分配 若m_size==0,则应删除这个元素,coremap[]数组剩下的元素向前移动一个位置。 50 30 coremap[1] 分配30个块出去,则: m_size=30-30=0, m_addr=50+30=80 20 10 100 20 coremap[1] coremap[0] 0 coremap[CMAPSIZ-2] …… 80 0 coremap[1]有变化 ma

文档评论(0)

1亿VIP精品文档

相关文档