




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二:作业调度一、实习内容模拟批处理多道操作系统的作业调度。二、实习目的每个用户请求计算机的一个计算任务叫做一个作业。一个作业从初始数据到得到计算结果,要 经过若干个步骤的相继执行。例如,编辑、编译、运行等,其中每一个步骤称作一个作业步。用户向系统提出作业加工的方式称作业控制方式,作业控制方式有两 种:终端控制方式(又称直接控制方式或联机控制方式)和批处理控制方式(又称自动控制方式或脱机控制方式)。在批处理控制方式下,用户采用系统提供的作业控制语言(JCL)写好作业说明书,说明作业加工的步骤。操作员把一批作业组织成输入流,通过“预输入”手段使每个作业的信息(包括作业说明书、源程序、初始数据等)暂存在辅助存储器的“输入井”中。批处理多道操作系统的作业管理有两个任务:作业调度和作业控制。采用多道程序设计方法的 操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被 选中的作业分配所需的系统资源。对被选中运行的作业,必须按照它们各自的作业说明书规定的步骤进行控制。本实习要求学生模拟作业调度的实现,了解作业调度在操作系统中的作用。三、实习题目采用先来先服务算法和运行时间最短者优先算法模拟设计作业调度程序。【提示】(1) 作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可以占用处理器运行,作业调度选择一个作业的必 要条件是系统中现有的尚未分配的资源可以满足该作业的资源需求。但有进系统中现有的尚未分配的资源既可满足某个作业的要求也可以满足其它一些作业的要求, 那么,作业调度必须按照一定的算法在这些作业中作出选择。先来先服务算法是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系 统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业。运行时间最短者优先算法总是按作业要求能满足的作业先进入主存执行。(2) 为了表示暂存在输入井中的各个作业的情况(作业信息在输入井中的位置、作业的资源要求等待),常常采用二级目录结构:作业表和预输入表。例如:“预输入”程序为每个作业在作业表中占一登记栏,且把作业信息存放到输入井中并按文件 (源程序文件、数据文件等)登记地预输入表中。“预输入”程序工作时还把作业控制语句集中,作为作业说明书文件存放在输入井并登记在预输入表的第一栏中, 同时把用户在作业说明书中提出的资源要求登记在作业表中。本实习模拟作业调度,所以可以不考虑有关“预输入”程序的工作。假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了如下的作业表: 用户名作业名状态运行时间资源要求主存磁带AZYA收容0.3小时15K2BZYB收容0.5小时60K1CZYC收容0.1小时50K3DZYD收容0.4小时10K2EZYE收容0.1小时30K3其中状态分为三种:收容状态作业已在输入井,当尚未被选中执行:执行状态作业被选中,正在执行;完成状态作业执行结束。(3) 假定主存中个容纳多道作业同时执行,那么作业调度按调度算法和资源分配情况查作业表,从中选择的作业创建一个作业控制进程轮流占有处理器(处理器调度参见 实习二)。作业控制进程按作业说明书控制作业执行,当一个作业执行结束后,作业调度再从输入井中选择一个作业进入主存,知道输入井中的作业都执行结束,同 志操作系统再预输入一个批作业。本实习主要模拟作业调度,所以对处理器调度、作业控制过程简化。用输入随即数模拟处理器调度,用输入“用户名、作业名”模拟一个作业已经执行结束。于是,本实习的模拟流程可参考21。(4) 假定某系统可供用户实验的主存空间共100K,共有5台磁带机。主存分配采用可变分区分配方式且主存中信息不允许移动,对磁带机采用静态分配策略,主存中 可同时执行的作业限定为两道,作业调度分别采用先来先服务算法和运行时间最短者优先算法,参考图21设计模拟作业调度的程序。假定作业表的初值如提示 (2),分别再两种算法选择作业的次序。在模拟作业执行结束输入被撤离作业的用户名、作业名时,应根据已在主存中的作业需运行的时间来决定撤离的先后次序。三、流程图四、源程序#include stdio.h#include stdlib.h#define MEMLENGTH 100#define RECORDERNUM 5typedef struct JCBchar * UserID;char * JobID;char status;float RunTime;int ApplyMem;int MemoryNum;int ApplyRecorder;struct JCB * next;JCB;JCB * JTfind(JCB * jcb,char status)JCB * p;if(jcb=NULL) return NULL;for(p=jcb-next;p!=NULL&p-status!=status;p=p-next);return p;void JTinit(JCB * p)p-next=(JCB *)malloc(sizeof(JCB);p-next-next=NULL;p-UserID=p-JobID=NULL;void JTinsert(JCB * jt,JCB * j)JCB * p;for(p=jt;p-next!=NULL;p=p-next);p-next=j;j-next=NULL;int JTdel(JCB * jt,JCB * j)JCB * p;if(j=NULL)return 0;p=jt-next;if(p=NULL)return 0;for(;p-next!=NULL&p-next!-j;p=p-next);if(p-next=NULL)return 0;p-next-j-next;return 1;void JTrelease(JCB * jt)JCB * p;JCB * q;p=jt-next;if(p=NULL)return;for(q=p-next;q!=NULL;p=q,q=q-next)free(p);JCB jt;int memory=MEMLENGTH;int recorder=RECORDERNUM;int count=0;int num=5;void large()JCB * ep,* pd;int i;ep=JTfind(&jt,s);if(ep!=NULL)pd=ep;while(pd=JTfind(pd,s)!=NULL)if(ep-RunTimepd-RunTime)ep=pd;if(countep-ApplyMem)if(recorder=ep-ApplyRecorder)ep-status=e;JTdel(&jt,ep);JTinsert(&jt,ep);memory-=ep-ApplyRecorder;count+;printf(The selected jobs name is %sn,ep-JobID);printf(The selected user is %sn,ep-UserID);else printf(The recorder is not adequate n);else printf(The main memory is not adequate n);else printf(The system can not excute any more jobs!n);else printf(The saved queue is empty!n);void small()char * str1,str2;char i;JCB *ep;ep=JTfind(&jt,e);if(ep=NULL)printf(主存中无作业!n);return;/*先来先服务*/else printf( Be executiving custmoer %sn,ep-JobID);/*printf(输入用户名字,作业名字A,B,C,D,E!n);*/printf(The user and job are:%s,%sn,ep-UserID,ep-JobID);count-;num-;memory+=ep-ApplyMem;recorder+=ep-ApplyRecorder;JTdel(&jt,ep);return;void init()JCB *p;JTinit(&jt);p=(JCB*)malloc(sizeof(JCB);p-UserID=(char*)malloc(10*sizeof(char);p-UserID=A;p-JobID=(char*)malloc(10*sizeof(char);p-JobID=ZYA;p-status=s;p-RunTime=0.3;p-ApplyMem=15;p-ApplyRecorder=2;JTinsert(&jt,p);p=(JCB*)malloc(sizeof(JCB);p-UserID=(char*)malloc(10*sizeof(char);p-UserID=B;p-JobID=(char*)malloc(10*sizeof(char);p-JobID=ZYB;p-status=s;p-RunTime=0.5;p-ApplyMem=60;p-ApplyRecorder=1;JTinsert(&jt,p);p=(JCB*)malloc(sizeof(JCB);p-UserID=(char*)malloc(10*sizeof(char);p-UserID=C;p-JobID=(char*)malloc(10*sizeof(char);p-JobID=ZYC;p-status=s;p-RunTime=0.1;p-ApplyMem=50;p-ApplyRecorder=3;JTinsert(&jt,p);p=(JCB*)malloc(sizeof(JCB);p-UserID=(char*)malloc(10*sizeof(char);p-UserID=D;p-JobID=(char*)malloc(10*sizeof(char);p-JobID=ZYD;p-status=s;p-RunTime=0.4;p-ApplyMem=10;p-ApplyRecorder=2;JTinsert(&jt,p);p=(JCB*)malloc(sizeof(JCB);p-UserID=(char*)malloc(10*sizeof(char);p-UserID=E;p-JobID=(char*)malloc(10*sizeof(char);p-JobID=ZYE;p-status=s;p-RunTime=0.1;p-ApplyMem=30;p-ApplyRecorder=3;JTinsert(&jt,p);void main()int operation;init();for(;num!=0;)printf(nnPlease input a random integer in the range
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心脏病介绍课件
- 端午节相关知识课件初中
- 端午知识问答课件
- 童年的发现说课课件
- 石渣处理协议书范本
- 退伙清算协议书范本
- 科室合作协议书范本
- 心理健康课课件
- 心理健康课初中课件
- 2025年大流量罗茨鼓风机项目发展计划
- 2025年北京市中考招生考试数学真题试卷(真题+答案)
- 2025年放射工作人员放射防护培训考试题及答案
- 2024南阳农业职业学院辅导员招聘笔试真题
- 2024年发展对象培训结业考试真题
- 肺结节中医课件
- 医院安全生产包括哪些方面
- 小型灌区渠道管理办法
- 老年护理课件模板
- 护理核心制度考试试卷(附答案)
- 汽车之夜活动方案
- 2025至2030中国熊胆粉行业市场发展分析及发展战略与投资前景预测报告
评论
0/150
提交评论