下载此文档

最佳适应算法源代码.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
#include <> #include <> // 全局变量 float minsize=5; int count1=0; int count2=0; #define m 10 // 假定系统允许的空闲区表最大为 m #define n 10 // 假定系统允许的最大作业数量为 n // 已分配表的定义 struct {float address; // 已分分区起始地址 float length; // 已分分区长度,单位为字节 int flag; // 已分配区表登记栏标志, "0" 表示空栏目}used_table[n]; // 已分配区表对象名// 空闲区表的定义: struct {float address; // 空闲区起始地址 float length; // 空闲区长度,单位为字节 int flag; // 空闲区表登记栏标志,用"0" 表示空栏目,用"1" 表示未分配}free_table[m]; // 空闲区表对象名// 函数声明 void initialize(void); int distribute(int, float); int recycle(int); void show(); // 初始化两个表 void initialize(void) { int a; for(a=0; a<=n-1; a++) used_table[a].flag=0; // 已分配表的表项全部置为空表项 free_table[0].address=1000; free_table[0].length=1024; free_table[0].flag=1; // 空闲区表的表项全部为未分配} // 最优分配算法实现的动态分区 int distribute(int process_name, float need_length) { int i, k=-1; //k 用于定位在空闲表中选择的未分配栏 float ads, len; int count=0; i=0; while(i<=m-1) // 循环找到最佳的空闲分区{ if(free_table[i].flag==1 && need_length <=free_table[i].length) { count++; if(count==1||free_table[i].length < free_table[k].length) k=i; } i=i+1; } if(k!=-1) { if((free_table[k].length-need_length)<=minsize) // 整个分配{ free_table[k].flag=0; ads=free_table[k].address; len=free_table[k].length; } else { // 切割空闲区 ads=free_table[k].address; len=need_length; free_table[k].address+=need_length; free_table[k].length-=need_length; } i=0; // 循环寻找内存分配表中标志为空栏目的项 while(used_table[i].flag!=0) {i=i+1;} if(i<=

最佳适应算法源代码 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-07-27