- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)