实验二可变分区内存管理内容摘要:

else { //修改已分配表 used_table[x].address=ad。 used_table[x].length=j。 used_table[x].process=i。 used_table[x].ID=x。 } return。 }//分配内存函数结束 ! void my_free(char handle) //回收进程名为 handle 的进程所占主存空间 { int x,k,j,s,t。 float S,L。 //寻找已分配表中对应登记项 s=0。 while ((used_table[s].process!=handle||used_table[s].process==0)amp。 amp。 s n) s++。 if (s=n) //在已分配表中找不到名字为 i的进程 { printf(找不到改进程 \n)。 return。 }//修改已分配表 used_table[s].process=0。 //取得归还分区的起始地址 S 和长度 L S=used_table[s].address。 L=used_table[s].length。 j=1。 k=1。 x=0。 //寻找回收分区的空闲 上下邻,上邻表目 k,下邻表目 j while (x mamp。 amp。 (j==1||k==1)) { if (free_table[x].process==0) { if (free_table[x].address+free_table[x].length==S)k=x。 //找到上邻 if (free_table[x].address==S+L)j=x。 //找到下邻 } x++。 } if (k!=1) if (j!=1) // 上邻空闲区,下邻空闲区,三项合并 { free_table[x].length=free_table[j].length+free_table[k].length+L。 free_table[j].process=0。 } else //上邻空闲区,下邻非空闲区,与上邻合并 free_table[k].length=free_table[k].length+L。 else if (j!=1) //上邻非空闲区,下邻为空闲区,与下邻合并。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。