1、 在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。对调度的处理又都可采用不同的调度方式和调度算法。调度算法是指:根据系统的资源分配策略所规定的资源分配算法。短进程优先调度算法是指对短进程优先调度的算法,它是从后备队列中选择一个或者若干个进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。四、重要数据结构或源程序中疑难部分的说明,需附详细注释 #include stdio.h#include conio.h#define getpch(type) (type*)malloc(sizeof(type) #define NUL
2、L0struct pcb /* 定义进程控制块PCB */ char name10; /进程名 char state; /状态 int super; /优先数 int ntime; /需要运行时间 int rtime; /运行时间 struct pcb* link;*ready=NULL,*p;typedef struct pcb PCB;int num;sort() /* 建立对进程进行短进程优先排列函数*/ PCB *first, *second; int insert=0; if(ready=NULL)|(p-ntime)ntime) /*需要运行时间最小者,插入队首*/ p-link=
3、ready; ready=p; else /* 进程比较需要运行时间,插入适当的位置中*/ first=ready; second=first-link; while(second!=NULL) if(p-(second-ntime) /*若插入进程比当前进程需要运行时间小,*/ /*插入到当前进程前面*/ p-link=second; first-link=p; second=NULL; insert=1; else /* 插入进程需要运行时间最大,则插入到队尾*/ first=first- second=second- if(insert=0) first- void input() /*
4、 建立进程控制块函数*/ int i; /clrscr(); /*清屏*/ printf(n 请输入进程数:); scanf(%d,&num); for(i=0;iname);n 输入进程需要运行时间:p-ntime);rtime=0;state=w;link=NULL; sort(); /* 调用sort函数*/ void main() /*主函数*/ int i,len,h=0; char ch; input(); ch=getchar();n调度序列为: p=ready; for(i=num;i0;i-) printf( %s p=p-printf(nn 进程已经完成.n五、程序运行结果
5、七、结果分析与实验小结 结果正确。短进程优先需要把进程按左右运行时间排序,然后让其按顺序执行即可。实验二 作业调度一、 实验目的:用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。二、 实验内容:1 写并调试一个单道处理系统的作业等待模拟程序。2 作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。3 由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。4 每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交
6、时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。5 对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。5、重要数据结构或源程序中疑难部分的说明,需附详细注释 编写一个程序将输入的进程按其提交时间进行排列,按排列顺序进行调度,计算其开始时间、完成时间、周转时间等数值先来先服务#include int ctime; /提交时间 int stime; /开始时间 int ftime; /完成时间 i
7、nt ttime; /周转时间 float dtime; /带权周转时间void sort() /* 建立对进程先来先服务排列函数*/ ctime)ftime=0; if(second-ctimefirst-ftime) /*计算完成时间,周转时间等*/ second-stime=second-ctime; elsestime=first-ftime;ftime=(second-ntime)+(second-stime);ttime=(second-ftime)-(second- x=second-ttime; y=second-ntime;dtime=(float)x/(float)y; %s t %d t %d t %d t %f n,second-name,second-stime,second-ftime,second-ttime,second-dtime); s1=s1+second- s2=s2+second-dtime; if(se
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1