分区分配算法的实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OS实验四 (软件) 2010.11.11 OS实验四 (软件 0967020050) 今日 DATE \@ M/d/yyyy 1/17/2011 分区分配算法的实现 实验要求: 分区空闲表要表示出分区号、始址、大小 作业序列能够动态输入 内存不足,必须有提示功能 总结收获体会及对该题解的改进意见和见解 (一)分析题意得模型(红色字体为再修改处) (一)分析题意得模型 利用数组相关知识 (二)写主要算法 (二)写主要算法思路 FF(首次适应(first fit)算法的分区分配算法) FF(首次适应(first fit)算法的分区分配算法) /* 按地址从小到大排列(直接选择排序) */ /* 空闲表首址和大小变换 */ BF(最佳适应(best fit)算法的分区分配算法) /* 按空闲区大小从小到大排列(直接选择排序) */ /* 空闲表首址和大小变换 */ 一开始忽略了,每次大小变换后,都要重新/* 按空闲区大小从小到大排列(直接选择排序) */找到最小的来比较。 (三)调试运行 (三)调试运行(多种情况都要运行) (四 (四)体会及不足 问题思路容易,用数组实现也较为简单,问题不大。 问题思路容易,用数组实现也较为简单,问题不大。 通过这实验三和实验四,加深了对数组的应用理解。不过,面对要输入如此多的数据,有时有好多是重复的,我不禁让我觉得有点繁琐,所以让我不禁想,到底是编程软件没有考虑到这点,还是无法改进这点。但这也让我明白学习文件并应用文件知识的重要,来减少数据的录入的次数,提高效率。这是我应该改进。 (四)体会及不足 (四)体会及不足 /********************操作系统实验四:首次适应(first fit)算法的分区分配算法*******************/ #includestdio.h void main() { int m,n,i,j,j0,k,k0,A[30][3],B[30]; printf(请输入空闲分区块数:); scanf(%d,m); printf(\t分区号\t\t大小\t\t起始地址\n); for(i=0;im;i++) for(j=0;j3;j++) scanf(%d,A[i][j]); /* 按地址从小到大排列(直接选择排序) */ for(i=0;im-1;i++) { k0=i; for(k=i+1;km;k++) if(A[k][2]A[k0][2])k0=k; if(k0!=i) { for(j=0;j3;j++) { int t; t=A[k0][j]; A[k0][j]=A[i][j]; A[i][j]=t; } } } printf(\n---------首次适应算法按地址从小到大排列后空闲区---------\n); printf(\t分区号\t\t大小\t\t起始地址\n); for(i=0;im;i++) for(j=0;j3;j++) { printf(\t%d\t,A[i][j]); if(j==2)printf(\n); } printf(\n请输入要分配的作业数:); scanf(%d,n); printf(请输入作业大小:\n); for(j0=0;j0n;j0++) scanf(%d,B[j0]); /* 空闲表首址和大小变换 */ i=j0=0; do { while(A[i][1]B[j0]im) i++; if(i==m)printf(\n内存不足,%dK大小的作业需要等待内存资源!\n,B[j0]); if(im) { A[i][1]=A[i][1]-B[j0]; A[i][2]=A[i][2]+B[j0]; } j0++;i=0; }while(j0n); printf(\n---------首次适应算法分区分配后的空闲区---------\n); printf(\t分区号\t\t大小\t\t起始地址\n); for(i=0;im;i++) for(j=0;j3;j++) { if(A[i][1]) printf(\t%d\t,A[i][j]); if(j==2)printf(\n); } } /****************操作系统实验四:最佳适应(best fit)算法的分区分配算

文档评论(0)

181****7662 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档