实习六-作业调度_第1页
实习六-作业调度_第2页
实习六-作业调度_第3页
实习六-作业调度_第4页
实习六-作业调度_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实习六作业调度四、实习报告(1) 实习题目。采用先来先服务算法和运行时间最短者优先算法模拟设计作业调度程序。提示:(1) 作业调度程序负责从输入井选择假如干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在作业中作出选择。先来先服务算法是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那

2、么顺序挑选后面的作业。运行时间最短者优先算法总是按作业要求运行的时间来选择作业,每次挑选要求运行时间短且资源要求能满足的作业先进入主存执行。(2) 为了表示暂存在输入井中的各个作业的情况作业信息在输入井中的位置、作业的资源要求等,常常采用二级结构:作业表和预输入表。例如:用户名作业名资源要求预输入表地址作业表文件名文件属性文件长度在输入井中位置预输入表“预输入程序为每个作业在作业表中占一登记栏,且把作业信息存放到输入井中并按文件源程序文件、数据文件等登记在预输入表中。“预输入程序工作时还把作业控制语句集中,作为作业说明书文件存放在输入井并登记在预输入表的第一栏中,同时把用户在作业说明书中提出的

3、资源要求登记在作业表中。本实习模拟作业调度,所以可不考虑有关“预输入程序的工作。假定“预输入程序已经把一批作业的信息存放在输入井了,并为它们建立了如下的作业表:用户名作业名状态运行时间资源要求预输入表地址主存磁带AZYA收容0.3小时15k2BZYB收容0.5小时60k1CZYC收容0.1小时50k3DZYD收容0.4小时10k2EZYE收容0.1小时30k3其中状态分三种:收容状态作业已在输入井,但尚未被选中执行;执行状态作业被选中,正在执行;完成状态作业执行完毕。(3) 假定主存中可容纳多道作业同时执行,那么作业调度按调度算法和资源分配情况查作业表,从中选择假如干作业,对每个被选中的作业创

4、建一个作业控制进程且使它们处于就绪状态,同时把选中作业的作业说明书读入主存。处理器调度按调度策略选择作业调度进程或作业控制进程轮流占有处理器处理器调度参见实习二。作业控制进程按作业说明书控制作业执行,当一个作业执行完毕后,作业调度再从输入井中选择一个作业进入主存,直到输入井中的作业都执行完毕,通知操作员再预输入一批作业。本实习主要模拟作业调度,所以对处理器调度、作业控制过程简化。用输入随机数模拟处理器调度,用输入“用户名、作业名模拟一个作业已经执行完毕。 (4) 假定某系统可供用户使用的主存空间共100k,并有5台磁带机。主存分配采用可变分区分式且主存某某息不允许移动参考实习四,对磁带机采用静

5、态分配策略,主存中可同时执行的作业限定为两道,作业调度分别采用先来先服务算法和运行时间最短者优先算法,参考图11-1设计模拟作业调度的程序。假定作业表的初值如提示2,分别在两种算法控制下运行设计的程序,依次显示被选中作业的用户名和作业名。比拟两种作业调度算法选择作业的次序。在模拟作业执行完毕输入被撤离作业的用户名、作业名时,应根据已在主存中的作业需运行的时间来决定撤离的先后次序。(2) 程序所用的数据结构与其说明。typedef struct WorkFormchar user;char name4;int state;/0-完成,1-执行,2-收容,-1-被选中double runtime;

6、int resource1;/内存资源int resource2;/磁带资源WorkForm;WorkForm workform5;WorkForm *ptworkform=workform;typedef struct PCB/PCB类型的结构体 WorkForm* workf; char state;/状态,R-就绪,E-完毕,W-等待 int order;/0-资源不满足,1-主存满足条件,2-磁带满足条件,3-两种资源均满足条件PCB;PCB pcb5;(3) 打印一份源程序且附上注释。#include#includemath.h#include #include #include#d

7、efine NUM1 100/主存大小#define NUM2 5/磁带数量typedef struct WorkFormchar user;char name4;int state;/0-完成,1-执行,2-收容,-1-被选中double runtime;int resource1;/内存资源int resource2;/磁带资源WorkForm;WorkForm workform5;WorkForm *ptworkform=workform;typedef struct PCB/PCB类型的结构体 WorkForm* workf; char state;/状态,R-就绪,E-完毕,W-等待

8、 int order;/0-资源不满足,1-主存满足条件,2-磁带满足条件,3-两种资源均满足条件PCB;PCB pcb5;WorkForm q;double time5;double* pttime5=&time0,&time1,&time2,&time3,&time4;int number=0;PCB *ptpcb5=&pcb0,&pcb1,&pcb2,&pcb3,&pcb4;/通过指针改变结构体数组的值int num1=100,num2=5;/分别存放主存剩余容量和磁带可用数量int a=-1;int tag1=1,tag2=1;/0-任务已全部完成,1-任务未完成,tag1标记选择作业

9、diaodu,tag2标记控制作业controlint FIFS(WorkForm p5,WorkForm *q)/先来先服务int m=0;for(int i=0;i5;i+)if(pi.resource1=num1 & pi.resource2state=-1;return m;else if(pi.resource1state=-1;return m;else if(pi.resource2state=-1;ptworkform=return m;return m;void show(WorkForm p5)/显示子程序int i;printf( user name state runt

10、ime resource1 resource2n);for(i=0;i5;i+)/依次显示每个进程的名、优先数、要求运行时间和状态printf( %c %s%5d %0.2f%8d%8dn,pi.user,&,pi.state,*pttimei,pi.resource1,pi.resource2);int SJF(WorkForm p5)/短作业优先int b=-1,m=0,t=5;double max=100;for(int i=0;i5;i+)/找出需要时间最少的作业 if(pi.state =2 & pi.runtime max)max=pi.runtime;b=i;if(

11、b!=-1)for(int s=0;s5;s+)if(pb.resource1 = 100 & pb.resource2 state=-1;*pttimeb=pb.runtime;ptworkform-runtime=100;return m;else if(pb.resource1state=-1;*pttimeb=pb.runtime;ptworkform-runtime=100;return m;else if(pb.resource2state=-1;*pttimeb=pb.runtime;ptworkform-runtime=100;return m;return m;int con

12、trol(PCB pcb5,WorkForm p5)int m=0;for(int i=0;iworkf=ptworkform;printf(%s,&ptpcba-workf-name);ptpcba-order=n;ptpcba-state=r;else printf(无满足资源条件的作业n);return 0;int diaodu(PCB p5,WorkForm workform5)int n,m=0,x=0;printf(请输入随机数:n);for(int i=0;i5;i+)if(pi.state=r)n=pi.order;for(int s=0;suser=workforms.use

13、r)x=s; switch(n)case 0:break;case 1:workformx.state=1; num2-=workformx.resource2; workformx.resource2=0;break;case 2:workformx.state=1; num1-=workformx.resource1; workformx.resource1=0;break;case 3: workformx.state=1; num2-=workformx.resource2; num1-=workformx.resource1; workformx.resource1=0; workf

14、ormx.resource2=0;break;show(workform);for(int j=0;jresource1=0 & pcbj.workf-resource2=0)printf(请输入用户名,作业名n);break;for(int t=0;tstate=0)m+;if(m=4)tag1=0;printf(调度作业的顺序为:n);for(int r=0;rname);putchar(n);return 0;switch(n)/完成调度后资源状态复原case 0:break;case 1:workformx.state=2;ptpcbx-state=w;break;case 2:wor

15、kformx.state=2;ptpcbx-state=w;break;case 3:workformx.state=0;ptpcbx-state=e;break;num1=100;num2=5;return 0;int main()WorkForm workform5=A,ZYA,2,0.3,15,2,B,ZYB,2,0.5,60,1,C,ZYC,2,0.1,50,3,D,ZYD,2,0.4,10,2,E,ZYE,2,0.1,30,3;for(int j=0;j5;j+)/pcb5初始化pcbj.workf=&workformj;pcbj.state=w;pcbj.order=0;timej

16、=workformj.runtime; int x=0,y=0;while(tag1!=0)if(tag2=1)control(pcb,workform);diaodu(pcb,workform);return 0;(4) 打印程序运行前的作业表,运行不同算法的作业调度程序,打印每选择一个作业后的作业表变化情况以与作业被选中执行的次序。请输入随机数: user name state runtime resource1 resource2 A ZYA 1 0.30 0 0 B ZYB 2 0.50 60 1 C ZYC 2 0.10 50 3 D ZYD 2 0.40 10 2 E ZYE 2

17、0.10 30 3请输入用户名,作业名请输入随机数: user name state runtime resource1 resource2 A ZYA 0 0.30 0 0 B ZYB 1 0.50 0 0 C ZYC 2 0.10 50 3 D ZYD 2 0.40 10 2 E ZYE 2 0.10 30 3请输入用户名,作业名请输入随机数: user name state runtime resource1 resource2 A ZYA 0 0.30 0 0 B ZYB 0 0.50 0 0 C ZYC 1 0.10 0 0 D ZYD 2 0.40 10 2 E ZYE 2 0.1

18、0 30 3请输入用户名,作业名请输入随机数: user name state runtime resource1 resource2 A ZYA 0 0.30 0 0 B ZYB 0 0.50 0 0 C ZYC 0 0.10 0 0 D ZYD 1 0.40 0 0 E ZYE 2 0.10 30 3请输入用户名,作业名请输入随机数: user name state runtime resource1 resource2 A ZYA 0 0.30 0 0 B ZYB 0 0.50 0 0 C ZYC 0 0.10 0 0 D ZYD 0 0.40 0 0 E ZYE 1 0.10 0 0请输入用户名,作业名调度作业的顺序为ZYA,ZYB,ZYC,ZYD,ZYE,ZYFPress any key to continue 短作业优先,输出结果如下:ZYC请输入随机数: user name state runtime resource1 resource2 A ZYA 2 0.30 15 2 B ZYB 2 0.50 60 1 C ZYC 1 0.10 0 0 D ZYD 2 0.40 10 2 E ZYE 2 0.10 30 3请输入用户名,作业名ZYE请输入随机数: user name state r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论