- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录
前 言 2
摘 要 3
正 文 4
1. 设计思想 4
2. 算法用到的主要数据结构(采用类 C 语言定义) 5
3. 相关的各模块的伪码算法 5
4. 调试分析 8
5. 测试结果 14
6. 源程序(带注释) 15
总 结 24
参考文献 25
致 谢 26
前 言
每个用户请求计算机计算的一个计算任务叫做一个作业。一个作业从输入初始数据到得到计算结果,要经过若干个步骤的相继执行。例如:编辑、编译、运行等,其中每一个步骤称作一个作业步。用户向系统提出作业加工步骤的方式称作业控制方式,作业控制方式有两种:终端控制方式(又称直接控制方式或联机控制方式)和批处理控制方式(又称自动控制方式或脱机控制方式) 。
在批处理控制方式下,用户采用系统提供的作业控制语言( JCL)写好作业说明书,说明作业加工的步骤。操作员把一批作业组织成输入流,通过“预输入”
手段使每个作业的信息(包括作业说明书、源程序、初始数据等)暂存在辅助存储器的“输入井”中。
批处理多道程序操作系统的作业管理有两个任务:作业调度和作业控制。采用多道程序设计方法的操作系统,在系统中要经常用保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的作业分配所需的系统资源。对被选中运行的作业按照它们各自的作业说明书中规定的步骤进行控制。
摘 要
对于成批进入系统的作业来说,根据作业控制块信息,按照一定的策略选取若干个作业使它们可以去获得处理器运行,这项工作称为作业调度。而对于每个用户来说,总希望自己的作业的周转时间尽可能小,最理想的情况是进入系统后能立即运行,即希望作业的周转时间等于执行时间。对于系统来说,则希望进入
系统的作业的平均周转时间尽可能的小,是的 CPU 的利用率尽量高。于是,每个计算机系统都必须选择适当的作业调度算法,既考虑用户的要求又要有利于系统
效率的提高。当选中一个作业后,首先要建立此作业的用户进程,同时为其分配系统资源,接着就可以投入运行。当一个作业执行结束进入完成状态时,负责收回资源,撤销其作业控制块。
本课设则模拟了作业调度的实现,通过 FCFS 、 SJF 、HRF 几种算法的实现,说明了作业调度在操作系统中的作用。
关键字:作业;调度; FCFS;SJF;HRF
正 文
设计思想
作业调度是操作系统非常重要的内容,选择合适的算法可以提高计算机的运
行效率。根据操作系统的学习,我们采用 FCFS、SJF、HRF 算法各自处理相同的
作业,对比各自的平均周转时间和平均代权周转时间。
建立作业的控制块信息,利用多道程序设计,采用不同的策略运行,观察各
算法的优略性。
1.1 各模块及程序流程图
输入作业
J0 J1 J2 J3
选择算法
FCFS SJF HRF
执行 执行 执行
打印结果
2. 算法用到的主要数据结构(采用类 c 语言定义)
2.1 运行时间等控制块
struct worktime{
float Tb;
//作业运行时刻
float Tc;
//作业完成时刻
float Ti;
//周转时间
float Wi;
// 带权周转时间
};
2.2 作业控制块信息
struct jcb { /* 定义作业控制块 JCB */
char name[10];
float subtime;
float runtime;
// char resource;
float Rp;
char state;
struct worktime wt;
struct jcb* link;
}*jcb_ready=NULL,*j;
// 作业名
//作业提交时间
// 作业所需的运行时间
// 所需资源
// 后备作业响应比
// 作业状态
//链指针
相关的各模块的伪码算法
3.1 FCFS 算法的伪码算法
typedef struct jcb JCB;
float T=0;
void sort() /* 建立对作业进行提交时间排列函数 */
{
JCB *first, *second;
int insert=0;
if((jcb_ready==NULL)||((j-subtime)(jcb_ready-subtime))) /* 作业提交时
间最短的 ,插入队首 */
{
j-link=jcb_ready;
jcb_ready=j;
T=j-subtime;
j-Rp=1;
}
else /* 作业比较提交时间 ,插入适当的位置中 */
{
first=jcb_ready;
second=first-link;
while(second!=NULL)
{
if((j-subtime)(second-subtime)) /* 若插入作业比当前作业提交
时间短 ,*/
{ /* 插入到当前作业前面 */ j-link=sec
原创力文档


文档评论(0)