编辑: wtshxd 2019-01-06
操作系统课程设计 一.

实验题目. 2.编写并调试一个单道批处理系统的作业调度程序.要求: (1)至少有四种的作业调度算法. (2)能根据不同的调度算法算出每个作业的周转时间和带权周转时间,并通过一组作业算出系统的平均周转时间和平均带权周转时间,比较各种算法的优缺点. (3)设计一个实用的用户界面,以便选择不同的作业调度算法. 二.设计思想说明(5%) 本人先开辟首个一个链表空间存放输入的原始作业的数据(我这里用HEAD表示),然后.设计的四种算法分别开辟四个链表空间.以实现不改变输入作业的原始数据而可以同时进行四种算法的调用,以示对比四种算法的优劣性,可以同时打印出所有算法在同一组作业时的平均周转时间和平均带权周转时间. 三.系统结构的说明(15%) 函数调用关系如图: 这个设计中,共包括的函数有: void input();

输入生成HEAD链表函数,用于存放输入作业的所有信息 void connect();

连接结点函数 void myprintf();

打印我的界面 void printftable();

排印作业状态 void sortFCFS();

先来先服务复制HEAD并形成先来先服务的headFCFS链表 void sortSJF();

短作业优先复制HEAD并形成短作业优先链表.headSJF void sortHRN();

高响应比函数,包括了执行 void sortSUPER();

高优先权函数复制HEAD形成headSUPER链表 void choose();

功能及算法选择函数 void execute(JCB *p);

执行函数 void copynode(JCB *p1,JCB *p2);

复制结点函数 void printffinish(JCB *p);

打印一个作业完成是的周转时间等统计 JCB *delenode(JCB *ph,JCB *p);

删除并返回结点,用于高响应比算法 void printfall();

打印用过四种算法后,所有算法的周转时间和带权周转时间 void destroy(JCB *p);

销毁函数 释放空间实现重新输入作业 四.数据结构的说明(5%) 我采用的是带头结点的单链表来存放数据并进行各种操作.结点结构如下: struct jcb { char name[10];

/*作业名*/ int ntime;

/*所需时间*/ int htime;

/*提交时间*/ int starttime;

/*作业开始运行时刻*/ int zhouzhuan;

/*周转时间*/ float daiquan;

/*带权周转时间*/ float xiangyingbi;

/*响应比*/ int super;

/*优先级*/ int flat;

/*是否被复制的标志位*/ char states;

/*作业状态,运行或者等待*/ struct jcb* next;

}*ready=NULL;

每个结点存放作业的所有属性数据,所有结点通过头指针连接而成,结点与结点中由结点自带的指针相连,便于查找和遍厉.如下图: 五.各模块的算法流程图(5%) 算法中: 先来先服务算法是直接复制首个作业的链表HEAD作为先来先服务的链表(因为首个原始输入作业的链表就是按输入顺序进行连接形成的). 短作业优先算法中,每次查找所有HEAD的结点,并将结点中最小作业所需运行时间的结点复制并连接到短作业优先链表的最后结点中.每复制一个结点,结点的是否被复制位置1.共复制HEAD链表长度的LENGHU次,就复制完毕.这样形成的最短作业优先链表就刚刚好是按作业所需运行时间按从小到大的顺序排列的了. 响应比优先算法,首先是将HEAD整个链表复制过来形成高响应比链表,然后每执行一次就算出正在执行作业以后所有结点的响应比,查找出响应比最高的那个结点,将响应比最高的结点插入到正在执行作业的后面. 这样执行下一个结点时,必定是未执行所有结点中,响应比最高的结点. 高优先权优先算法,其中的操作和短作业优先差多.因为作业在输入时已经有了作业时间和优先权.高优先权算法是查找HEAD中最高优先权的结点进行复制. 由于各种算法之间都有相似之处,都包括遍厉查找,和节点指针的连接,而且在系统结构说明部分,我已经画出了函数之间的调用关系图.在这里,其他模块的流程图我就不画了,差不多的,和上面我举的 短作业优先的流程图 . 六.程序运行及清单(共60%,其中书面源程序占20%,光盘的源程序在计算机上实现程度占40%) /*网络一班.张帮顺.学号:3104007181 操作系统课程设计(单道)*/ #include stdio.h #include #include #include #define getpch(type) (type*)malloc(sizeof(type)) #define NULL

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题