操作系统磁盘调度.doc

上传人:汽*** 文档编号:548931779 上传时间:2023-09-05 格式:DOC 页数:7 大小:106.01KB
返回 下载 相关 举报
操作系统磁盘调度.doc_第1页
第1页 / 共7页
操作系统磁盘调度.doc_第2页
第2页 / 共7页
操作系统磁盘调度.doc_第3页
第3页 / 共7页
操作系统磁盘调度.doc_第4页
第4页 / 共7页
操作系统磁盘调度.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《操作系统磁盘调度.doc》由会员分享,可在线阅读,更多相关《操作系统磁盘调度.doc(7页珍藏版)》请在金锄头文库上搜索。

1、实 验 报 告实验名称磁盘调度算法专 业计算机科学与技术课程名称操作系统指导老师张海燕班 级二表一班姓 名刘广法学 号11100140109评 分实验地点1c26217实验日期2013.11.13一、实验目的1.通过实验加深对磁盘调度算法的理解(先来先服务,最短寻道时间优先,扫描算法,循环扫描算法)2.熟悉磁盘调度算法的原理机制。二、实验内容(含实验原理介绍) 1.先来先服务:根据进程请求访问磁盘的先后次序进行调度。每个进程的请求都能依次得到处理。 2.最短寻道时间优先:要求访问的磁盘与当前磁头所在的磁盘距离最近,以使每次的寻道时间最短 3.扫描算法:当磁头正在自理向外移动时,SCAN算法考虑

2、下一个访问对象,应是其欲访问的磁道即在当前磁道之外,有是距离最近的. 4.循环扫描算法:磁头自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道。三、实验过程及步骤(包含使用软件或实验设备等情况) 1.打开DDEV-C+5.0软件 2.文件新建源文件 3.利用C+语言编写程序 4.程序编写无误后,进行优化。 5.利用课本例题进行验证。四、实验结果(含算法说明、程序、数据记录及分析等,可附页)一.首先输入磁道的个数,然后输入磁头起始位置int main()int a20,i,n,k,k1,init;intprintf(请输入需要访问的磁道总数:);scanf(%d,&n)

3、;printf(输入访问的磁道:);for(i=0;in;i+)scanf(%d,&ai);printf(请输入指针所在磁道:);scanf(%d,&init);k=1;while(k)printf(*n);printf( 磁盘调度算法 n);printf(1.先来先服务(FCFS) 2.最短寻道时间优先(SSTF)n);printf(3.扫描算法 (SCAN) 4.循环算法(C-SCAN) n); printf(*n);printf(请在下面输入您的选择:);scanf(%d,&k);switch(k)case 1:FCFS(a,n,init);break;case 2:SSTF(a,n,i

4、nit);break;case 3:k1=1; while(k1) printf(*扫描算法*n); printf(1.移动臂由里向外 2.移动臂由外向里n); printf(0.返回上一层 n);printf(*n); printf(请在下面输入您的选择:); scanf(%d,&k1); switch(k1) case 1:SCAN1(a,n,init);break; case 2:SCAN2(a,n,init);break break;case 4:C_SCAN1(a,n,init);break;system(pause); 二.根据提示选择磁盘的调度算法(1)先来先服务void FCF

5、S(int b,int n,int init) /先来先服务int i,s,sum,a20;for(i=0;in;i+) ai=bi;s=init;sum=0;for(i=0;in;i+)printf(第%d次访问的磁道:%dn,i+1,ai);sum+=abs(s-ai);s=ai;printf(平均寻道长度:%fn,sum*1.0/n);(2)最短寻道时间优先void SSTF(int b,int n,int k) /最短寻道法int i,j,s,sum=0,p,a20;for(i=0;i=0;i-)s=a0;p=0;for(j=0;j=i;j+) if(abs(aj-k)abs(s-k)

6、 s=aj; p=j; ap=ai;printf(第%d次访问的磁道:%dn,n-i,s);sum+=abs(s-k);k=s;printf(平均寻道长度:%fn,sum*1.0/n);(3)扫描算法void SCAN1(int b,int n,int k) /扫描算法int i,j,s,sum=0,p,biaoji,a20;for(i=0;i=0;i-)biaoji=0;for(j=0;j=i;j+) if(aj-k0) biaoji=1; p=j; break; if(biaoji=1) s=ap; for(j=0;j=i;j+) if(ajk&k-ajk-s) s=aj; p=j ap=

7、ai; printf(第%d次访问的磁道:%dn,n-i,s); sum+=k-s; k=s;elses=a0;for(j=0;j=i;j+) if(aj-k=s-k) s=aj; p=j; ap=ai;printf(第%d次访问的磁道:%dn,n-i,s); sum+=abs(k-s); k=s;printf(平均寻道长度:%fn,sum*1.0/n);(4)循环扫描算法void C_SCAN1(int array,int m,int now)int temp, k=1,l,r,d, i,j,sum=0,int avg;for(i=0;im;i+)for(j=i+1;jarrayj)/对磁道

8、号进行从小到大排列temp=arrayi;arrayi=arrayj;arrayj=temp;printf(请输入当前的磁道号:);scanf(%d,&now);if(arraym-1=now)/判断整个数组里的数是否都小于当前磁道号 printf(CSCAN调度结果: );for(i=0;i=now)/判断整个数组里的数是否都大于当前磁道号 printf(CSCAN调度结果: );for(i=0;im;i+) printf(%d ,arrayi);/将磁道号从小到大输出sum=arraym-1-now;/计算移动距离elsewhile(arrayk=0;j-)printf(%d ,array

9、j);for(j=m-1;j=r;j-)printf(%d ,arrayj);sum=2*(arraym-1-array0)-arrayr+now;/计算移动距离/磁道号减小方向elsefor(j=r;jm;j+)printf(%d ,arrayj);for(j=0;jr;j+)printf(%d ,arrayj);sum=2*(arraym-1-array0)+arrayr-1-now;/计算移动距离/磁道号增加方向avg=sum/m;printf(n平均寻道长度: %d n,avg);五、实验思考题 通过此次上机实验成功的实现的磁盘调度的四种算法:先来先服务,最短寻道时间优先,循环扫描算法,扫描算法。对这四种调度算法又巩固和加深了理解。提高了自己的思考能力,为自己以后更好的适应的社会打下的坚实的基础。六、实验总结(含实验心得体会,收获与不足等) 这次实验的磁盘的调度算法让我明白的磁盘的存储的管理的机制。懂得了我们现在正在使用的操作系统是如何实现磁盘的调度的。知道了磁盘的基本的物理结构,为自己更好的学习计算机打下了夯实的理论基础。为以后更好的复习操作系统打下了坚实的基础。注:双面打印

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号