磁盘调度算法实验报告材料

磁盘调度算法实验报告材料

ID:29411740

大小:552.65 KB

页数:20页

时间:2018-12-19

磁盘调度算法实验报告材料_第1页
磁盘调度算法实验报告材料_第2页
磁盘调度算法实验报告材料_第3页
磁盘调度算法实验报告材料_第4页
磁盘调度算法实验报告材料_第5页
资源描述:

《磁盘调度算法实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、操作系统实验报告课程名称操作系统实验课程编号0906553实验项目名称磁盘调度算法学号年级姓名专业计算机科学与技术学生所在学院计算机科学与技术学院指导教师实验室名称地点哈尔滨工程大学计算机科学与技术学院19磁盘调度算法一.实验概述:1.实验名称:磁盘调度算法2.实验目的:1)通过学习EOS实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机;2)观察EOS实现的FCFS、SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法;3)编写CSCAN和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理

2、解。3.实验类型:验证、设计4.实验内容:1)准备实验,创建一个EOSKernel项目;2)验证先来先服务(FCFS)磁盘调度算法;3)验证最短寻道时间优先(SSTF)磁盘调度算法;4)验证SSTF算法造成的线程“饥饿现象”;5)验证扫描(SCAN)磁盘调度算法;6)改写SCAN算法;7)编写循环扫描(CSCAN)磁盘调度算法;8)验证SSTF、SCAN及CSCAN算法中的“磁臂粘着”现象;9)编写N-Step-SCAN磁盘调度算法。二.实验环境操作系统:windowsXP编译器:TevalatonOSLa

3、b语言:C三.实验过程1.设计思路和流程图:SCAN算法流程图:19SSTF算法的流程图:CSACN流程图:19循环结束后记录了向内移动距离最短的线程和向外移动距离最长的线程有向内移动的线程?YESNO选择向内移动距离最短的线程选择向外移动距离最长的线程N-STEP-SCAN算法调度:2.实验过程:1)新建一个EOSKernel项目;2)在sysproc.c文件中找到控制台命令“ds”对应的函数ConsoleCmdDiskSchedule。“ds”命令专门用来测试磁盘调度算法。阅读该函数中的源代码,目前该函

4、数使磁头初始停留在磁道10,其它被阻塞的线程依次访问磁道8、21、9、78、0、41、10、67、12、10;3)打开io/block.c文件,在第378行找到磁盘调度算法函数IopDiskSchedule。阅读该函数中的源代码,目前此函数实现了FCFS磁盘调度算法,流程图如下:194)生成项目,启动调试,待EOS启动完毕,在EOS控制台中输入命令“ds”后按回车;在EOS控制台中会首先显示磁头的起始位置是10磁道,然后按照线程被阻塞的顺19序依次显示线程的信息(包括线程ID和访问的磁道号)。磁盘调度算法执

5、行的过程中,在OSLab的“输出”窗口中也会首先显示磁头的起始位置,然后按照线程被唤醒的顺序依次显示线程信息(包括线程ID、访问的磁道号、磁头移动的距离和方向),并在磁盘调度结束后显示此次调度的统计信息(包括总寻道数、寻道次数和平均寻道数)。对比EOS控制台和“输出”窗口中的内容,可以发现FCFS算法是根据线程访问磁盘的先后顺序进行调度的。下图显示了本次调度执行时磁头移动的轨迹:5)打开sstf.c文件,该文件提供的IopDiskSchedule函数实现了SSTF磁盘调度算法,其中应注意:①变量Offset

6、是有符号的长整型,用来表示磁头的偏移(包括距离和方向)。Offset大于0时表示磁头向内移动(磁道号增加);小于0时表示磁头向外移动(磁道号减少);等于0时表示磁头没有移动。而名称以“Distance”结尾的变量都是无符号长整型,只表示磁头移动的距离(无方向)。所以在比较磁头的偏移和距离时,或者在将偏移赋值给距离时,都要取偏移的绝对值(调用C库函数abs)。本实验在实现其它磁盘调度算法时也同样遵守此约定;②在开始遍历之前,将最小距离(ShortestDistance)初始化为最大的无符号长整型数,这样,第一

7、次计算的距离一定会小于最小距离,从而可以使用第一次计算的距离来再次初始化最小距离。本实验在实现其它磁盘调度算法时也同样使用了此技巧。6)生成项目,启动调试,待EOS启动完毕,在EOS控制台中输入命令“ds”后按回车;对比EOS控制台和“输出”窗口中的内容(特别是线程ID的顺序),可以发现,SSTF算法唤醒线程的顺序与线程被阻塞的顺序是不同的。图18-4显示了本次调度执行时磁头移动的轨迹。对比SSTF算法与FCFS算法在“输出”窗口中的内容,可以看出,SSTF算法的平均寻道数明显低于FCFS算法。197)验证

8、SSTF算法造成的线程“饥饿现象”,使用SSTF算法时,如果不断有新线程要求访问磁盘,而且其所要访问的磁道与当前磁头所在磁道的距离较近,这些新线程的请求必然会被优先满足,而等待队列中一些老线程的请求就会被严重推迟,从而使老线程出现“饥饿”现象。8)修改sysproc.c文件ConsoleCmdDiskSchedule函数中的源代码,仍然使磁头初始停留在磁道10,而让其它线程依次访问磁道78、21、9、8、11、4

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。