欢迎来到天天文库
浏览记录
ID:52698124
大小:697.15 KB
页数:33页
时间:2020-03-29
《操作系统课程设计报告-磁盘调度算法.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、华南农业大学数学与信息学院(软件学院)《操作系统分析与设计实习》成绩单开设时间:2015学年第一学期小组成员、组内分工及各成员成绩学号姓名专业班级成绩题目题目二磁盘调度算法的模拟实现及对比自我评价这次的操作系统课程设计,让我对操作系统磁盘调度策略有了更加深刻的认识,自己动手操作比光看书能更能深刻了解磁盘调度的策略和原理,同时对磁盘调度的四种算法——先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、SCAN算法,C-SCAN算法有了更深刻的理解和掌握。设计过程中遇到的困难在老师和同学的帮助下顺利解决,我深刻认识到算法的逻辑性和时间复杂度对程序的重要
2、影响,算法的准确度对程序运行结果的重要影响,这对我以后在操作系统的学习中有极大帮助。也增强了我写代码的能力,尤其是对自顶向下的结构化分析设计方法有了更深刻的理解和掌握。由于这次的课程设计是单人做的,所以也增强了独立做程序的能力。不过,通过这次课程设计,我也了解到自己有很多不足,比如在设计界面方面明显经验不足,以至于界面的简陋,代码也不够工整明了。总的来说,这次课程设计不仅提升了自己的知识和能力,还让自己知道了自己的许多不足之处。教师评语评价指标:l题目内容和要求完成情况优□良□中□差□l对算法原理的理解程度优□良□中□差□l程序设计水平优□良□中□差□l程序
3、运行效果及正确性优□良□中□差□l课程设计报告结构清晰优□良□中□差□l报告中总结和分析详尽优□良□中□差□教师签名张丽霞一、需求分析(1)输入的形式和输入值的范围:在文本框输入序列长度,输入值为int类型(2)输出的形式:输出每种磁盘调度算法的服务序列;输出每种算法的平均寻道长度。(3)程序所能达到的功能:模拟实现FCFS、SSTF、SCAN、C-SCAN算法,并计算及比较磁头移动道数。(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果:输入初始磁头位置0~1500输入磁臂扫描方向0或1选择算法1~4二、概要设计1)主程序流程图:(2)
4、各程序模块之间的调用关系三、详细设计1)各操作伪码算法(1)实现磁头初始位置的输入并进行合法性检查intprintstarter()//磁头初始位置输入{输入:磁头初始位置;if输入小于0或大于1500{输出:"输入数据类型有误,请重新输入!"<5、依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;磁头初始位置=当前磁道号;}返回绝对值之和;}(4)intin_to_out//由磁道最内向外输出磁道序列{for从最内磁道开始{依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;磁头初始位置=当前磁道号;}返回绝对值之和;}(5)intout_to_in_to_out//先由当前位置向内再向外{找到小于等于磁头初始位置的磁道for由该磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由该磁道的外侧磁道开始{向外依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}返回绝对6、值之和;}(6)intin_to_out_to_in//先由当前位置向外再向内{找到大于等于磁头初始位置的磁道for由该磁道开始{向外依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由该磁道的内侧磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}返回绝对值之和;}(7)intout_to_in_twice由当前磁道向内再从最外向内{找到小于等于磁头初始位置的磁道;for由该磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由最外侧磁道开始{向内依次输出磁道号直到小于等于初始位置的磁道的外侧一个磁道;7、当前磁道号与磁头初始未至的绝对值求和;}返回绝对值之和;}(8)intin_to_out_twice由当前磁道向外再从最内向外{找到大于等于磁头初始位置的磁道for由该磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由最内侧磁道开始{向外依次输出磁道号直到小于等于初始位置的磁道的内侧一个磁道;当前磁道号与磁头初始未至的绝对值求和;}返回绝对值之和;}(9)intnearest_select就近选择{找到大于磁头初始位置的磁道;while初始位置内侧差绝对值更小{输出内侧磁道号;绝对值差求和;初始位置更新为当前磁道号;}while初8、始位置外侧绝对值差更小{输出外侧磁道号;绝对值差求和
5、依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;磁头初始位置=当前磁道号;}返回绝对值之和;}(4)intin_to_out//由磁道最内向外输出磁道序列{for从最内磁道开始{依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;磁头初始位置=当前磁道号;}返回绝对值之和;}(5)intout_to_in_to_out//先由当前位置向内再向外{找到小于等于磁头初始位置的磁道for由该磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由该磁道的外侧磁道开始{向外依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}返回绝对
6、值之和;}(6)intin_to_out_to_in//先由当前位置向外再向内{找到大于等于磁头初始位置的磁道for由该磁道开始{向外依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由该磁道的内侧磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}返回绝对值之和;}(7)intout_to_in_twice由当前磁道向内再从最外向内{找到小于等于磁头初始位置的磁道;for由该磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由最外侧磁道开始{向内依次输出磁道号直到小于等于初始位置的磁道的外侧一个磁道;
7、当前磁道号与磁头初始未至的绝对值求和;}返回绝对值之和;}(8)intin_to_out_twice由当前磁道向外再从最内向外{找到大于等于磁头初始位置的磁道for由该磁道开始{向内依次输出磁道号;当前磁道号与磁头初始未至的绝对值求和;}for由最内侧磁道开始{向外依次输出磁道号直到小于等于初始位置的磁道的内侧一个磁道;当前磁道号与磁头初始未至的绝对值求和;}返回绝对值之和;}(9)intnearest_select就近选择{找到大于磁头初始位置的磁道;while初始位置内侧差绝对值更小{输出内侧磁道号;绝对值差求和;初始位置更新为当前磁道号;}while初
8、始位置外侧绝对值差更小{输出外侧磁道号;绝对值差求和
此文档下载收益归作者所有