磁盘调度算法Word文件下载.docx
- 文档编号:17325876
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:21
- 大小:54.92KB
磁盘调度算法Word文件下载.docx
《磁盘调度算法Word文件下载.docx》由会员分享,可在线阅读,更多相关《磁盘调度算法Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
进起止日期工作内容
度
理解磁盘调度的原理背景、查询相关安
资料设计规划设计总体思路排
编写代码实现各部分的功能
进行测试代码以及对代码进行调试、
修改。
最后编写文档
主[1]汤小丹,梁红兵.计算机操作系统[M].西安:
西安电子科技大学出
要版社~2007
参[2]何钦铭,颜晖.C语言程序设计[M].北京:
高等教育出版社~2008
考[3]严蔚敏,吴伟民.数据结构,C语言版,[M].北京:
清华大学出
资版社~2011
料
指导教师
意见
签字,:
年月日
系,教研
室,主任意
见
磁盘调度课程设计说明书
学院名称:
班级名称:
学生姓名:
学号:
题目:
磁盘调度指导教师:
姓名:
起止日期:
第一部分:
正文部分....................................................................................................1一、选题背景................................................................................................................1二、设计理念................................................................................................................1三、过程论述................................................................................................................13.1系统概要设计..........................................................................................................13.2详细设计..................................................................................................................13.2.1设计任务...............................................................................................................13.2.2设计要求...............................................................................................................23.2.3算法思想...............................................................................................................23.2.4算法设计...............................................................................................................3
四、结果分析..............................................................................................................104.1扫描算法,SCAN,............................................................................................104.2循环扫描算法,CSCAN,.................................................................................104.3扫描算法和循环扫描算法的比较........................................................................11
五、结论,或总结,..................................................................................................12第二部分:
参考文献..................................................................................................12第三部分:
指导教师评语........................................................................................13第四部分:
成绩评定..................................................................................................13
正文部分
一、选题背景
操作系统是一门工程性很强的课程~它不仅要求学生掌握操作系统的工作原理和理论知识~也要求学生有实际动手能力~以加深对所学习内容的理解。
为了巩固和加深学生对磁盘调度概念的理解~加强学生实践动手能力和程序开发能力的培养~提高分析问题和解决问题的能力~培养合作精神~本次课程设计就是通过模拟磁盘调度来加深对操作系统中磁盘调度概念的理解~使学生熟悉磁盘管理系统的设计方法~熟练掌握各种磁盘调度算法的设计。
二、设计理念
2.1扫描,SCAN,调度算法:
该算法不仅考虑到欲访问的磁道与当前磁道间的距离~更优先考虑的是磁头当前的移动方向。
例如~当磁头正在自里向外移动时~SCAN算法所考虑的下一个访问对象~应是其欲访问的磁道~既在当前磁道之外~又是距离最近的。
这样自里向外的访问~直至再无更外的磁道需要访问时~才将磁道换向自外向里移动。
这时~同样也是每次选择这样的进程来调度~也就是要访问的当前位臵内距离最近者~这样~磁头又逐步地从外向里移动~直至再无更里面的磁道要访问~从而避免了出现“饥饿”现象。
2.2循环扫描,CSCAN,算法:
当磁头刚从里向外移动而越过了某一磁道时~恰好又有一进程请求访问此磁道~这时~该里程就必须等待~为了减少这种延迟~CSCAN算法规定磁头单向移动。
三、过程论述
3.1系统概要设计
设计方法为任务分解、逐步求精的方法~先完成各个模块的功能,SCAN、CSCAN,~并进行调试和验证~最后完成系统的完整设计~使设计过程得到可靠的保证。
3.2详细设计
3.2.1设计任务
本系统划分为两个模块:
扫描算法模块SCAN和循环扫描算法模块CSCAN~用来实现磁盘调度的模拟。
3.2.2设计要求
根据磁盘调度算法的思想~编程实现扫描算法、循环扫描算法等~并通过数据分析比较各种算法的平均寻道长度。
3.2.3算法思想
系统主界面可以灵活选择某种算法~算法包括:
扫描算法,SCAN,、循环扫描算法,CSCAN,。
1,扫描算法,SCAN,
扫描算法不仅考虑到欲访问的磁道与当前磁道的距离~更优先考虑的是磁头的当前移动方向。
例如~当磁头正在自里向外移动时~扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外~又是距离最近的。
这样自里向外地访问~直到再无更外的磁道需要访问才将磁臂换向~自外向里移动。
这时~同样也是每次选择这样的进程来调度~即其要访问的磁道~在当前磁道之内~从而避免了饥饿现象的出现。
由于这种算法中磁头移动的规律颇似电梯的运行~故又称为电梯调度算法。
此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点~而具有最短寻道时间优先算法的优点即吞吐量较大~平均响应时间较小~但由于是摆动式的扫描方法~两侧磁道被访问的频率仍低于中间磁道。
2,循环扫描算法,CSCAN,
循环扫描算法是对扫描算法的改进。
如果对磁道的访问请求是均匀分布的~当磁头到达磁盘的一端~并反向运动时落在磁头之后的访问请求相对较少。
这是由于这些磁道刚被处理~而磁盘另一端的请求密度相当高~且这些访问请求等待的时间较长~为了解决这种情况~循环扫描算法规定磁头单向移动。
例如~只自里向外移动~当磁头移到最外的被访问磁道时~磁头立即返回到最里的欲访磁道~即将最小磁道号紧接着最大磁道号构成循环~进行扫描。
3.2.4算法设计
1,扫描算法模块:
voidSCAN(intarray[],intm)将磁道号用冒泡法从小到大排序~输出排好序的序列~输入当前磁道号~选择移动臂的移动方向~根据当前磁道在已排的序列中的位臵~选择扫描的顺序~求出平均寻道长度~输出移动的平均磁道数。
流程图如图3-1所示:
开始
获取磁道号
从小到大排序
输入当前磁道号
判断当前磁头在
序列中的位置
选择移动臂移动
方向,开始扫描移动到最大(小)号,改向外(内)移动扫描未扫描的磁道
求平均寻道长输出移动的平均磁道数
结束
图3-1SCAN算法流程图
扫描算法核心代码:
voidSCAN(intarray[],intm)//先要给出当前磁道号和移动臂的移动方向,到了
端点时磁臂到另一端点
{
inttemp;
intk=1;
intnow,l,r,d;
inti,j,sum=0;
intavg;
for(i=0;
i<
m;
i++)
for(j=i+1;
j<
j++)
{
if(array[i]>
array[j])//对磁道号进行从小到大排列
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
for(i=0;
printf("
%d"
array[i]);
//输出排序后的磁道号数组
\n请输入当前的磁道号:
"
);
scanf("
%d"
&
now);
if(array[m-1]<
=now)//判断整个数组里的数是否都小于当前磁道号
\nSCAN调度结果:
"
for(i=m-1;
i>
=0;
i--)
//将数组磁道号从大到小输出
sum=now-array[0];
//计算移动距离
elseif(array[0]>
=now)//判断整个数组里的数是否都大于当前磁道号
//将磁道号从小到大输出
sum=array[m-1]-now;
else
while(array[k]<
now)//逐一比较以确定K值
k++;
l=k-1;
r=k;
\n请输入当前移动臂的移动的方向(1磁道号增加方向~0
磁道号减小方向):
d);
if(d==0)//磁道号减小方向<
-
for(j=l;
j>
j--)
array[j]);
for(j=r;
sum=now-2*array[0]+array[m-1];
///////////sum=2(now-array[0])+array[m-1]-now////////根据距离算
else////////////////磁道增加方向->
sum=-now-array[0]+2*array[m-1];
//////////sum=array[m-1]-now+array[m-1]-array[0]
avg=sum/m;
\n移动的总道数:
%d\n"
sum);
平均寻道长度:
avg);
2,循环扫描算法模块:
voidCSCAN(intarray[],intm)将磁道号用冒泡法从小到大排序~输出排好序的序列~输入当前磁道号~规定移动臂单向反复的从内向外移动~根据当前磁道在已排的序列中的位臵~选择扫描的顺序~求出平均寻道长度~输出移动的平均磁道数。
流程图如图3-2所示:
规定移动臂单向反复的从内向外扫描
序列中的位置扫描到最大号后,直接移动到最小号从内向外扫描未扫描的磁道
求平均寻道长度输出移动的平均磁道数
图3-2CSCAN算法流程图
循环扫描算法核心代码:
voidCSCAN(intarray[],intm)
\nCSCAN调度结果:
sum=now-array[0]+array[m-1];
if(d==0)////////////<
for(j=m-1;
=r;
sum=2*(array[m-1]-array[0])-array[r]+now;
/////sum=now-array[0]+array[m-1]-array[0]+array[m-1]-array[r]
先<
-再<
-循环到尾再<
}//磁道号减小方向
for(j=0;
r;
sum=2*(array[m-1]-array[0])+array[r-1]-now;
////////sum=array[m-1]-now+array[m-1]-array[0]+array[r-1]-array[0]//////////先->
再循环到尾->
再->
}//磁道号增加方向
四、结果分析
4.1扫描算法,SCAN,
我们首先在D盘存储所需要读取的磁道数,然后运行磁道调度算法.c,在正确运行以后选择”1、扫描算法(SCAN)”,输入当前磁道号:
51,选择”1.磁道号增加的方向”,运行结果如图4-1所示:
图4-1SCAN算法运行结果
4.2循环扫描算法,CSCAN,
我们首先在D盘存储所需要读取的磁道数,然后运行磁道调度算法.c,在正确运行以后选择”2、循环扫描算法(CSCAN)”,输入当前磁道号:
54,选择”1.磁道号增加的方向”,运行结果如图4-2所示:
图4-2CSCAN算法运行结果
4.3扫描算法和循环扫描算法的比较
扫描算法,SCAN,电梯调度:
克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点;
循环扫描算法,CSCAN,:
循环扫描算法是对扫描算法的改进~循环扫描算法规定磁头单向移动。
五、结论,或总结,
本系统具有很强的健壮性~当输入错误数据类型时~系统提示用户输入的数据类型错误~让用户重新输入~保证系统的稳定性~不会因为用户的误操作而致使系统瘫痪,虽然是在DOS状态下~但是本系统界面还是设计的比较漂亮的~具有比较好的交互性,对于软件中的重用代码~设计成一个函数~实现代码重用。
本系统是在DOS状态下进行编译执行的~没有图形化界面~可以设计出一个图形化界面~使用户操作更加简单~明了。
通过对这次操作系统课程设计的亲自参与和操作~使我深刻体会到了:
只要你想做只要你想学没有弄不懂得事情~工程里面也不能不在乎细节~等等。
感觉很受益匪浅。
懂得了操作系统磁盘调度的两种算法:
扫描算法,SCAN,和循环扫描算法,CSCAN,。
加深了我对这门课程的理解。
锻炼了自己在考虑全局也不是细节的能力。
通过这次实验~再一次熟悉并深入掌握了程序设计语言和算法设计。
第二部分:
参考文献
1.汤小丹,梁红兵.计算机操作系统[M].西安:
西安电子科技大学出版社,2007.
2.何钦铭,颜晖.C语言程序设计[M].北京:
高等教育出版社,2008.
3.严蔚敏,吴伟民.数据结构,C语言版,[M].北京:
清华大学出版社,2011.
学生签名:
填表日期:
第三部分:
指导教师评语
第四部分:
成绩评定
指导教师签名:
附录:
程序源代码:
#include"
stdio.h"
#include"
stdlib.h"
#definemaxsize100//定义最大数组域
#include<
windows.h>
//扫描算法
到了voidSCAN(intarray[],intm)//先要给出当前磁道号和移动臂的移动方向,
//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 磁盘 调度 算法