磁盘调度实验报告_3.docVIP

  • 2
  • 0
  • 约1.85千字
  • 约 5页
  • 2023-09-13 发布于江苏
  • 举报
计算机操作系统实验报告 班 级 08计算机2班 学 号 0800303226 姓 名 罗 院 实验目的 编程模拟实现磁盘调度的常用算法或调试分析相关磁盘调度程序,加深对磁盘调度常用算法的理解和实现技巧 实验内容 自定义磁盘调度相关的数据结构 依据先来先服务(FCFS)、最短寻道时间(SSTF),编写对应函数,模拟系统的磁盘调度服务 实验代码 #include stdio.h #include math.h #include stdlib.h #include time.h #include conio.h #define TotalSearch 20 //FCFS float Averg_FCFS(int array[],int num) { int i; float averg,sum=0; printf(FCFS算法寻道:\n); for(i=0;inum;i++) { printf(%d ,array[i]); if((i+1)%5==0)printf(\n); } for(i=0;i9;i++) { sum+=abs(array[i]-array[j]); } averg=sum/10; return averg; } //SSTF float Averg_SSTF(int array[],int num) { int i,j,cha,changNum,CurentNum; float averg,sum=0; printf(SSTF算法寻道:\n); for(i=0;inum;i++) { printf(% d,array[i]); if((i+1)%5==0)printf(\n); } changNum=0; cha=10000; CurentNum=array[0]; for(i=1;inum;i++) { for(j=0;jnum;j++) { if(array[j]!=0j!=changNum) { if(abs(CurentNum-array[j])cha) cha=abs(CurentNum-array[j]); changNum=j; } } CurentNum=array[changNum]; array[changNum]=0; sum+=cha; cha=10000; } averg=sum/10; return averg; } void main() { int trackArray[TotalSearch],i; char ch; float averg; printf(\n随机产生磁道序列..\n); srand((unsigned)time(NULL)); for(i=0;iTotalSearch;i++) { trackArray[i]=rand(); printf(%d\t,trackArray[i]); if((i+1)%5==0)printf(\n); } printf(请选择寻道方式:a,先来先服务 b,最短寻道时间优先\n); printf(\n); for(i=0;i2;i++) { ch=getch(); switch(ch) { case a: averg=Averg_FCFS(trackArray,TotalSearch); printf(FCFS算法平均寻道距离:%2.f 条磁道\n,averg); break; case b: averg=Averg_SSTF(trackArray,TotalSearch); printf(FCFS算法平均寻道距离:%2.f 条磁道\n,averg); break; } } } 运行结果 思考题 磁盘访问时间主要有哪些部分构成?要提高磁盘调度效率,主要在哪方面下手更好? 答:磁盘访问时间由寻道时间、旋转延迟时间和传输时间构成。要提高磁盘调度效率应使当前磁道号与下一磁道号之间的距离尽可能的短,即缩短寻道距离。

文档评论(0)

1亿VIP精品文档

相关文档