ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:379.20KB ,
资源ID:19322926      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19322926.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整word版操作系统作业调度实验报告多道批处理Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整word版操作系统作业调度实验报告多道批处理Word文档下载推荐.docx

1、 作业的平均带权周转时间:W=全部进程的带权周转时间/进程个数1、先来先服务调度算法(FCFS):每次调度都是从后备作业队列中,选择一个或多个最先进入 该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,这每次调度是从就绪队列中,选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件阻赛后,才放弃处理机。2、最短作业优先(SJF):每次从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均

2、周转时间及带权平均周转时间,并比较各种算法的优缺点。3、多道作业调度算法:将作业按FCFS原则排好队,在输入井中按作业到达的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业,把不能满足要求的放回输入井尾部等待,当作业执行结束进入完成状态时,做好释放资源等善后工作。四、流程图1、FCFS算法和SJF算法:2.多道作业调度算法五、给出程序中源程序名和执行程序名:源程序名:FCFS and SJF,执行程序名:fcfs and sjf.cppDUODAO 执行程序名:duodao.cpp六、程序清单1.FCFS和SJF

3、算法#include stdio.h#include conio.h#define getpch(type) (type*)malloc(sizeof(type)struct jcb char name10; char state; int atime;/作业到达时间 int btime;/作业开始运行时间 int ftime;/作业完成时间 int ntime;/作业估计运行时间 int rtime;/作业执行时间 int ttime;/周转时间 float wtime;/带权周转时间(周转时间/估计运行时间) struct jcb* link;*ready=NULL, *p;/ready指

4、向队头,p指向正被调度的作业typedef struct jcb JCB; int T=0; /初始化时间量 float total;/记录所有作业的总时间 double weight;/记录所有作业的带权周转时间void sort() /* 建立对作业进行到达时间排列函数*/ JCB *first, *second; int insert=0; if(ready=NULL)|(p-atime)atime) /*作业到达时间最短的,插入队首*/ p-link=ready; ready=p; T=p-atime; /更改时间量 else /* 作业比较到达时间,插入适当的位置中*/ first=

5、ready; second=first-link; while(second!=NULL) if(p-(second-atime) /*若插入作业比当前队尾作业到达时间短,*/ /*插入到当前队尾作业前面*/link=second; first-link=p; second=NULL; insert=1; else /* 插入作业到达时间最长,则插入到队尾*/ first=first- second=second- if (insert=0) first- void shortjob() / 获取队列中的最短作业 JCB *pr,*min,*qr; min=ready;/min指向作业对头 q

6、r=ready; pr=ready- while(pr! if(pr!=NULL)&(T=pr-atime)&(pr-ntime)ntime) /当插入作业到达时间要比时间量T小 min=pr; /min指向pr qr-link=pr-/qr的下一个指向pr的下一个 pr- pr=pr- else /当pr的需要时间不小于min的需要时间 qr=pr; ready=min;/把最终获取的min的需要时间赋给ready,开始执行void input() /*建立作业控制块函数*/ int i; printf(n 请输入4个作业:); for(i = 0; i name);n输入作业到达时间:%d

7、,&atime);n 输入作业运行时间:ntime);rtime = 0;btime=0;ftime=0;ttime=0;wtime=0;state = W;link = NULL; sort();int space() /*查看作业个数*/ int l = 0; JCB *pr = ready; while(pr != NULL) l+; pr = pr- return(l);void disp(JCB *pr) /*建立作业显示函数,用于显示当前作业*/n qname t state t atime t ntime t btime t rtime t ftime t ttime t wti

8、me n |%s t,pr- |%c tstate); |%d tbtime);rtime);ftime);ttime); |%.2f twtime);void check() /* 建立作业查看函数 */ JCB* pr;n * 当前正在运行的作业是: /*显示当前运行作业*/ disp(p); pr=ready;n *当前就绪队列状态为: /*显示就绪队列状态*/ disp(pr);void destroy()n 作业%s 已完成。 free(p);void running(JCB *pr) /计算各个时间 if(Tatime) pr-btime=T;/插入作业的到达时间比时间量小,T为该

9、作业的开始时间 else pr-btime=pr-/否则该作业到达时间为它的开始时间ftime=pr-btime+pr-ntime;wtime=(float)pr-ttime/(float)pr- total+=pr-ttime; weight+=pr-wtime; T=pr-ftime;/T为该上一个作业的完成时间void running1(JCB *pr) /分离出要执行的当前作业void running2(JCB *pr) /判断运行时间和需要运行时间的关系 while(pr-rtimentime)R (pr-rtime)=(pr-nn *该作业执行完毕时的状态:state=F dest

10、roy();int main() int i,len, h = 0; char ch; total=0; weight=0;*n n FCFS算法或SJF算法 n input(); len = space();n选择算法: i); switch(i) case 1:FCFS算法:break; case 2:SJF算法: default:printf(FAULSE if(i=1|i=2) while(len != 0) & (ready != NULL) ch = getchar(); if(i=2) shortjob(); h+;n The execute number:%dn,h); p =

11、 ready; /*将队首指针赋给p*/ ready = p- /*ready指向原p的下一个进程*/ /*p的link赋空*/btime=p- running1(p); check(); running(p); running2(p);n 按任一键继续.nn作业已完成。n*nn平均周转时间:%f,total/(float)4);n平均带权周转时间:%lf,weight/(float)4);2.多道作业调度算法:#define source 15 char username10; char jobname10; /作业的运行时间 int nsource;/作业所需系统资源 int asourc

12、e;/已分配的资源 int need1;/ready指向就绪队列的队头,p指向正被调度的作业 int rsource=15;/剩下资源int num,i=0;/num为作业个数,i为记录不能满足作业要求调度的次数void destroy(JCB *pr) free(pr);nsource=0)&(p-nsourceasource) /需要资源要在系统资源范围内,分配资源要在需要资源范围内,剩下资源不能小于0 if(ready=NULL)|(p- else destroy(p);void sort1() /*对作业进行排列函数 */ JCB *first; if(ready=NULL) /*如果

13、就绪队列为空*/ /*将新建作业放入队列中,将ready指向队首作业 */ else /*队列中有作业在等待,将新建作业插入到队尾 */ /*first指针指向队首作业 */ while(first-link!=NULL) first=first- /*当first指针没有指向队尾时,指针后移 */*将p指向的作业插入队尾*/n 请输入作业个数:num); for(i=0;insource-p-asource;/还需要资源=需要资源-已分配资源link=NULL; int l=0; JCB *pr=ready;=NULL) n 用户N t 作业N t 状态S t 到达T t 服务T t 所需S

14、 t 已分S t 还需S nneed1);void check() JCB *pr;n*当前正在运行的作业是:n*当前输入井队列状态为:= NULL)void running(JCB *p)/对输入井队列中满足资源要求的作业进行服务 while(p- (p-rtime)+;n*作业运行完成后状态:n 用户名%s的作业%s 已完成。username,p-void running1()/ 计算剩下资源 for(pr=ready;pr!=NULL;pr=pr-link) rsource=rsource-pr-void running2(JCB *pr) if(pr-need1need1;asource+=pr-need1 =0;t*nn分配给作业后所剩的资源是:%d n,rsource); running(pr); rsource = rsource + pr-nsource;n释放后的资源是: destroy(pr); printf(该作业不能满足要求,调度下一个作业 sort1(); i+;void main()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1