一、实验内容
模拟电梯调度算 法,实现对磁盘的驱动调度;
二、实验目的
磁盘是一种高速、大量旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,负担着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请示等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动调度能降低为若干个输入输出请求服务所须的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。
三、实验原理
模拟电梯调度算法,对磁盘调度。
磁盘是要供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。
当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。
当有多个进程提出输入输出请求处于等待状态,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。当存取臂仅需移到一个方向最远的所请求的柱面后,如果没有访问请求了,存取臂就改变方向。
四、算法流程图
五、源程序及注释
#include
#include
#include
#include
#define COUNT 15
#define NOW 100
int C[COUNT];
//产生15个随机数,均小于200
int rnd()
{
int i;
srand(i-COUNT);
srand(time(NULL));
for(i=0;iC[j+1])
{
t=C[j];
C[j]=C[j+1];
C[j+1]=t;
}
}
}
}
//找到小于100及大于100的分界线
int find()
{
int i;
for(i=0;iNOW)
return i;
}
return COUNT-1;
}
void print()
{
int i;
i=find();
printf("执行的顺序为:\n");
for(i;i=0;i--)
{
printf("%d ",C[i]);
}
printf("\n");
}
void cal()
{
int sum;
sum=abs(C[COUNT-1]-NOW)+abs(C[COUNT-1]-C[0]);
printf("平均循道长度为:%d\n",sum/COUNT);
}
void main()
{
rnd();
printf("随机产生的请求为:\n");
show();
soar();
print();
cal();
}
六、打印的程序运行时初值和运行结果
七、实验小结
本次实验是最简单的一个了,从流程图中就可以看出。关键是要清楚电梯调度的方法,磁头是如何移动的。还要会用随机函数产生一列数。
本文档为【电梯调度算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。