- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)