欢迎来到天天文库
浏览记录
ID:18114360
大小:48.00 KB
页数:7页
时间:2018-09-14
《操作系统作业调度实验程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统实验二作业调度实验一、目的要求用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。1.编写并调试一个单道处理系统的作业等待模拟程序。作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。#include"stdio.h"#include#include#definegetpch(type)(type*)mall
2、oc(sizeof(type))//#defineNULL0structworktime{floatTb;//作业运行时刻floatTc;//作业完成时刻floatTi;//周转时间floatWi;//带权周转时间};structjcb{/*定义作业控制块JCB*/charname[10];//作业名floatsubtime;//作业提交时间floatruntime;//作业所需的运行时间charresource;//所需资源floatRp;//后备作业响应比charstate;//作业状态structworktimewt;structjcb*link;//链指针}*jcb_re
3、ady=NULL,*j;typedefstructjcbJCB;floatT=0;voidsort()/*建立对作业进行提交时间排列函数*/{JCB*first,*second;intinsert=0;if((jcb_ready==NULL)
4、
5、((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;wh
6、ile(second!=NULL){if((j->subtime)<(second->subtime))/*若插入作业比当前作业提交时间短,*/{/*插入到当前作业前面*/j->link=second;first->link=j;second=NULL;insert=1;}else/*插入作业优先数最低,则插入到队尾*/{first=first->link;second=second->link;}}if(insert==0)first->link=j;}}voidSJFget()/*获取队列中的最短作业*/{JCB*front,*mintime,*rear;intipmove=
7、0;mintime=jcb_ready;rear=mintime->link;while(rear!=NULL){if((rear!=NULL)&&(T>=rear->subtime)&&(mintime->runtime)>(rear->runtime)){front=mintime;mintime=rear;rear=rear->link;ipmove=1;}elserear=rear->link;}if(ipmove==1){front->link=mintime->link;mintime->link=jcb_ready;}jcb_ready=mintime;}voidH
8、RNget()/*获取队列中的最高响应作业*/{JCB*front,*mintime,*rear;intipmove=0;mintime=jcb_ready;rear=mintime->link;while(rear!=NULL){if((rear!=NULL)&&(T>=rear->subtime)&&(mintime->Rp)<(rear->Rp)){front=mintime;mintime=rear;rear=rear->link;ipmove=1;}elserear=rear->link;}if(ipmove==1){front->link=mintime->link;
9、mintime->link=jcb_ready;}jcb_ready=mintime;}voidinput()/*建立作业控制块函数*/{inti,num;printf("请输入作业数:?");scanf("%d",&num);for(i=0;iname);printf("输入作业提交时刻:");scanf(
此文档下载收益归作者所有