操作系统课程设计-驱动调度.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
石家庄经济学院 实习报告 (学院)系: 信息工程学院 专 业: 网络工程专业 姓 名: 班 级: 学 号: 指导教师: 日期: 2011年1月14日 操作系统实习报告 姓名 学号 日期 实验室 指导教师 设备编号 设计题目 实习九驱动调度 、设计内容 模拟电梯调度算法,实现对磁盘的驱动调度。 二、 设计目的 磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负 着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待 处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度, 使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统 效率。本实验要求模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解 和掌握驱动调度的职能。 三、 设计过程 (1)数据结构设计 typedef struct Process// typedef struct Process //描述进程信息 {char name[N];int cyl_num; { char name[N]; int cyl_num; int tra_num; int rec_num; int signal; }process; (2)算法设计 函数模块 〃进程名 //柱面号 //磁道号 //物理记录号 〃标记,用以判断结构体数组中该元素是否有效 各函数调用关系如图1所示,箭头指向被调用的函数 各函数功能及流程图如下: 主函数:void main() 函数功能:显示提示信息,初始化进程数组,根据随机数的值选择调用驱动调度和接收请求或者 选择继续和退出程序 入口参数:无 出口参数:无 流程图:如图2所示 开始 i 输出提示信 / 息 初始化进程请求表 (实际为进程的结构 体数组) 输入_个随机 数 是—二.随机数>0冬一.-二—否 驱动调度 接收请求 继续? I否 结束 图2主函数流程图 随机数函数:float Ran_Num() 函数功能:接收随机数 入口参数:无 出口参数:接收进来的随机数 流程图:无 接收请求函数:void list(int pro_count, int pro_num,process pro[M]) 函数功能:存放输入的进程信息,创建等待进程列表 入口参数:初始化后的进程数组 出口参数:无 流程图:如图3所示 输入要输入 的进程个数 当前进程数组否 否. 第i个元素有 效? J是 输入进程信 息 是 输入信息有 错? I否 已输入的进程数 +1 是 已输入的进程 .数否一— .数 否 一 返回 图3接收请求流程图 旋转调度函数:void cir_sec(process pro[M]) 函数功能:如果有请求与当前柱面号相同,进行旋转调度,选择旋转距离最小的进程 入口参数:部分全局变量及进程数组 出口参数:选择的数组元素编号 流程图:如图4所示 开始 当前访问者旋 否 ?: ??转距离小于最 小旋转距离 +是 选择当前的 访问进程 图4旋转调度流程图 移臂调度函数:void mov_sec(process pro[M]) 函数功能:没有与当前柱面号相同的访问请求时,进行移臂调度 入口参数:进程数组 出口参数:选择的数组元素编号 开始是 当前移臂方向是向 否有比当前柱面号大 的访问请求否 有比当前柱面号小的访问请求1置当前移臂方 向为向外移置当前移臂方 向为向里移流程图:如图5所示 开始 是 当前移臂方向是向 否 有比当前柱面号大 的访问请求 否 有比当前柱面号小 的访问请求1 置当前移臂方 向为向外移 置当前移臂方 向为向里移 从大于当前柱面号 的访问请求中选择 从大于当前柱面号 的访问请求中选择 ―一个最小者— 从小于当前柱面号 的访问请求中选择 ―一个最小者— 旋转调度 结束 图5移臂调度流程图 驱动调度函数:void dri_sch(int pro_count,process pro[M]) 函数功能:进行进程调度,按照电梯调度算法选择进程 入口参数:当前有效进程数、进程数组 出口参数:无 流程图:如图6所示 是 有请求与当前一否 柱面号相同 移臂调度 旋转调度 图6驱动调度流程图 四、程序实现及运行结果 (1) 源代码如下: qddr.cpp主函数 pro struct.h 结构体定义 pro list.h创建进程请求表 ran num.h 接收随机数 Driver Scheduling.h 驱动调度 (2) 运行结果如下: 1初始状态,结果如图7所示 请按照如下顺序输入各进程信息」以空格分开,每条进程信息输入完成后按回车键结束: 旺程名柱面号磴道号物理记录号 汪:进程吝

文档评论(0)

dajiede + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档