资源描述:
《操作系统磁盘调度》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告实验名称磁盘调度算法专业计算机科学与技术课程名称操作系统指导老师张海燕班级二表一班姓名刘广法学号11100140109评分实验地点1c26217实验日期2013.11.13一、实验目的1.通过实验加深对磁盘调度算法的理解(先来先服务,最短寻道时间优先,扫描算法,循环扫描算法)2.熟悉磁盘调度算法的原理机制。二、实验内容(含实验原理介绍)1.先来先服务:根据进程请求访问磁盘的先后次序进行调度。每个进程的请求都能依次得到处理。2.最短寻道时间优先:要求访问的磁盘与当前磁头所在的磁盘距离最近,以使每次的寻道时间最短3.扫描算法:当磁头正在自理向外移动时,SCAN算法考虑下一个访问
2、对象,应是其欲访问的磁道即在当前磁道之外,有是距离最近的.4.循环扫描算法:磁头自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道。三、实验过程及步骤(包含使用软件或实验设备等情况)1.打开DDEV-C++5.0软件2.文件à新建à源文件3.利用C++语言编写程序4.程序编写无误后,进行优化。5.利用课本例题进行验证。四、实验结果(含算法说明、程序、数据记录及分析等,可附页)一.首先输入磁道的个数,然后输入磁头起始位置intmain(){inta[20],i,n,k,k1,init;intprintf("请输入需要访问的磁道总数:");scanf("%d"
3、,&n);printf("输入访问的磁道:");for(i=0;i4、*****************************");printf("请在下面输入您的选择:");scanf("%d",&k);switch(k){case1:FCFS(a,n,init);break;case2:SSTF(a,n,init);break;case3:k1=1;while(k1){printf("*************扫描算法**************");printf("1.移动臂由里向外2.移动臂由外向里");printf("0.返回上一层");printf("***********************************
5、");printf("请在下面输入您的选择:");scanf("%d",&k1);switch(k1){case1:SCAN1(a,n,init);break;case2:SCAN2(a,n,init);break}}break;case4:C_SCAN1(a,n,init);break;}}system("pause");}二.根据提示选择磁盘的调度算法(1)先来先服务voidFCFS(intb[],intn,intinit)//先来先服务{inti,s,sum,a[20];for(i=0;i6、i++){printf("第%d次访问的磁道:%d",i+1,a[i]);sum+=abs(s-a[i]);s=a[i];}printf("平均寻道长度:%f",sum*1.0/n);}(2)最短寻道时间优先voidSSTF(intb[],intn,intk)//最短寻道法{inti,j,s,sum=0,p,a[20];for(i=0;i=0;i--){s=a[0];p=0;for(j=0;j<=i;j++)if(abs(a[j]-k)7、第%d次访问的磁道:%d",n-i,s);sum+=abs(s-k);k=s;}printf("平均寻道长度:%f",sum*1.0/n);}(3)扫描算法voidSCAN1(intb[],intn,intk)//扫描算法{inti,j,s,sum=0,p,biaoji,a[20];for(i=0;i=0;i--){biaoji=0;for(j=0;j<=i;j++)if(a[j]-k<0){biaoj