磁盘调度实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机操作系统实验报告
班级08计算机2班学号0800303226 姓名罗院
实验目的
编程模拟实现磁盘调度的常用算法或调试分析相关磁盘调度程序,加深对磁盘调度常用算法的理解和实现技巧
实验内容
1、自定义磁盘调度相关的数据结构
2、依据先来先服务(FCFS)、最短寻道时间(SSTF),编写对应函数,模拟系统
的磁盘调度服务
实验代码
#include
#include
#include
#include
#include
#define TotalSearch 20
//FCFS
float Averg_FCFS(int array[],int num)
{
int i;
float averg,sum=0;
printf("FCFS算法寻道:\n");
for(i=0;i { printf("%d ",array[i]); if((i+1)%5==0)printf("\n"); } for(i=0;i<9;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;i { printf("% d",array[i]); if((i+1)%5==0)printf("\n"); } changNum=0; cha=10000; CurentNum=array[0]; for(i=1;i { for(j=0;j { if(array[j]!=0&&j!=changNum) { if(abs(CurentNum-array[j]) 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;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;i<2;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; } } } 运行结果 磁盘访问时间主要有哪些部分构成?要提高磁盘调度效率,主要在哪方面下手更好? 答:磁盘访问时间由寻道时间、旋转延迟时间和传输时间构成。要提高磁盘调度效率应使当前磁道号与下一磁道号之间的距离尽可能的短,即缩短寻道距离。