分区的分配与回收request(size)P=取空闲区表首址;OSwhile(不是表尾)20KA32K(if(p.size>=size)52kB14Ka=p.addr66KC·64Kp.size=p.size- size;130KD10OKf(p.size<门限值)230Kn-ik取消该空闲区:p.addr=paddr +size;return(a);首址大小1452p++:1300-130*指向下一个表目*0return(0);*分配失败*1空闲区表
分区的分配与回收
分区的分配与回收二、回收算法当一个进程(或程序)释放某内存区时,要调用存储区释放算法release,它将首先检查释放区是否与空闲区表(队列)中的其它空闲区相邻,若相邻则合并成一个空闲区,否则,将释放为一个空闲区插入空闲区表(或队列)中的适当位置。空闲释放区与空闲区相邻有四种情况。试用C语言写出动态分区的回收算法
分区的分配与回收 二、回收算法 当一个进程(或程序)释放某内存区时,要调 用存储区释放算法release,它将首先检查释放 区是否与空闲区表(队列)中的其它空闲区相 邻,若相邻则合并成一个空闲区,否则,将释 放为一个空闲区插入空闲区表(或队列)中的 适当位置。 空闲释放区与空闲区相邻有四种情况。 试用C语言写出动态分区的回收算法
分区的分配与回收修RSA占用区释放区空闲区A、将r合并到f1,fl.addr;f1.size+r.size=>f.sizeB、将r合并到f2,r.addr;r.size+r.size=>f2.sizeC、f1、r、f2合并到f1,f1.addr;f1.size+r.size+f2.size=>f1.size撤消f2空闲区D、r作为一个空闲区,并插入到空闲区表的适当位置
分区的分配与回收 A、将r合并到f1,f1.addr;f1.size+r.size=>f.size B、将r合并到f2, r.addr;r.size+r.size=>f2.size C、f1、r、f2 合并到f1, f1.addr; f1.size+r.size+f2.size=>f1.size 撤消f2空闲区 D、r作为一个空闲区,并插入到空闲区表的适当位置
几种放置策略分区分配和回收是对空闲区表(或空闲区队列)数据结构进行操作,空闲区表的组织有两种方法:1、按空闲区大小的升序(降序)组织;2、按空闲区首址升序(降序)组织。根据空闲区表组织的方法的不同,有不同的放置策略,它们是最佳适应算法、首次适应算法和最坏适应算法三种
几种放置策略 分区分配和回收是对空闲区表(或空闲区队 列)数据结构进行操作,空闲区表的组织有两 种方法: 1、按空闲区大小的升序(降序)组织; 2、按空闲区首址升序(降序)组织。 根据空闲区表组织的方法的不同,有不同的放 置策略,它们是最佳适应算法、首次适应算法 和最坏适应算法三种
几种放置策略首次适应算法首次适应算法的表是按空闲区首址升序的(即空闲区表是按空闲区首址从小到大)方法组织的OS(单位:KB)20KE空闲区队列大小首址2040KB2020160KE160标志015标志0标志0175KB21050大小50大小15大小20210KB0指针210指针入指针16G260KBL空闲区表NKB-1首次适应算法
几种放置策略 一 、首次适应算法 首次适应算法的表是按空闲区首址升序的(即 空闲区表是按空闲区首址从小到大)方法组织的