1 / 27
文档名称:

操作系统实验磁盘调度算法.docx

格式:docx   大小:34KB   页数:27页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验磁盘调度算法.docx

上传人:cby201601 2022/6/13 文件大小:34 KB

下载得到文件列表

操作系统实验磁盘调度算法.docx

文档介绍

文档介绍:操作系统
实验报告
课程名称
操作系统实验
实验项目名称
磁盘调度算法
学号
班级
姓名
专业
计算机科学与
学生所在学院
计算机科学
与技术学院
指导教师
初妍
实验室名称地点
21#428
束,又包括整个队列结束(如果整个队列的长度小于第一个子队列剩余的长度)。注意,
不要直接使用第一个子队列剩余的长度做为计数器,可以定义一个新的局部变量来做为计
数器。按照 SCAN 算法从第一个子队列剩余的项中选择一个合适的请求。最后,需要将第
一个子队列剩余长度减少 1 (SubQueueRemainLengthM少1),如果第一个子队列剩余长 度变为 0, 说明第一个子队列处理完毕, 需要将子队列剩余的长度重新变为 N
(SubQueueRemainLength重新赋值为SUB_QUEUE_LENGTHM而开始处理下一个子队歹限
需要解决的问题及解答
(1)实验指导P176-(FCFS磁盘调度算法,要求请给出在“输 出”窗口中的结果。
答:先来先服务(FCFS磁盘调度算法在“输出”窗口中的结果如下图所示。

(2)实验指导P177-(SSTF磁盘调度算法,要求请
给出在“输出”窗口中的结果。
答:最短寻道时间优先(SSTF磁盘调度算法在“输出”窗口中的结果如下图所示。

(3)实验指导P178-“饥饿”现象,要求请给出在“输 出”窗口中的结果。
答:SSTF算法造成的线程“饥饿”现象在“输出”窗口中的结果如下图所示。

(4)实验指导P179-(SCAN磁盘调度算法,要求在非饥饿(即《实验
指导》 P176- 节中的数据) 和饥饿 (即 《实验指导》 P178- 节中的数据) 请给出在 “输 出”窗口中的结果,并且要求在每次输入两次“ ds”命令(注意不要连续输入,要等第一 次“ds”命令执行完,再输入第二次“ ds”命令),分析结果为什么不同。
答:在非饥饿情况下,“输出”窗口中的结果如下图所示。

在饥饿情况下,“输出”窗口中的结果如下图所示。

ScanInside是一个全局变量,当第一次执行“ ds”命令时,调用lopDiskSchedule 函 数,ScanInside被修改了一次,再次执行"ds”命令时,ScanInside不会被重置,因此输 出的结果会不一样。
(5)在执行SCAN N-Step-SCAN磁盘调度算法时,如果在EOS空制台中多次输入“ds”
命令,调度的顺序会发生变化,说明造成这种现象的原因(提示:注意这两种算法使用的
全局变量) 。 尝试修改源代码, 使这两种算法在多次执行时, 都能确保调度的顺序一致 (提
示: 可以参考 io/ 文件中 IopReceiveRequest 函数和 IopProcessNextRequest 函 数判断磁盘调度算法开始工作和结束工作的方法)。
答:ScanInside是一个全局变量,当第一次执行“ ds”命令时,调用lopDiskSchedule 函数,ScanInside被修改了一次,再次执行“ ds”命令时,ScanInside不会被重置,因此 输出的结果会不一样。只需在 for 循环结束后添加如下代码,就能确保调度的顺序一致。

( 6)尝试在io/ 文件中定义一个全局的函数指针变量DiskScheduleFunc ,
该函数指针初始指向实现了 FCFS 算法的 IopDiskSchedule 函数。 修改 io/ 文件 中的 IopProcessNextRequest 函数,在该函数中不再直接调用 IopDiskSchedule 函数, 而是调用函数指针 DiskScheduleFunc 指向的磁盘调度算法函数; ke/ 文件中的 ConsoleCmdDiskSchedule 函数中也不再直接调用 IopDiskSchedule 函数, 也要修改为调用
函数指针 DiskScheduleFunc 指向的磁盘调度算法函数。 最后, 添加一个控制台命令“ sstf ” ,
该命令使函数指针DiskScheduleFunc指向实现了 SSTF算法的函数。这样,在 EOS启动 后默认会执行FCFS算法,执行控制台命令“ sstf ”后,会执行SSTF算法。按照这种方式 依次实现“ fcfs ”、“scan”、“cscan”和“ nstepscan ”命令。说明这种在 EOS运行时 动态切换磁盘调度算法的好处。