资源描述:
《批处理系统作业调度实验-2008431071-陈云云.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、动态分区存储管理方式的主存分配回收实验报告年级08级学号姓名陈云云成绩专业数学与应用数学实验地点主楼402指导教师王硕实验项目批处理系统作业调度实验日期2010年10月27日一、实验目的加深对作业概念的理解;深入了解批处理系统如何组织作业、管理作业和调度作业;二、实验要求编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。三、实验原理:操作系统根据允许并行工作的道数和一定的算法从系统中选取若干作业把它们装
2、入主存储器,使它们有机会获得处理器运行,这项工作被称为“作业调度”。实现这部分功能的程序就是“作业调度程序”。四、实验程序设计#include"stdafx.h"#includeusingnamespacestd;#include#include"JCB.h"classJCB{public:intcreat(intname,intlength,inttape,intprinter,intwaittime,intruntime);voidshedule(JCB*head);JCB*next;JCB();v
3、irtual~JCB();private:intname;intprinter;inttape;intwaittime;intruntime;longlength;};intJCB::creat(intname,intlength,inttape,intprinter,intwaittime,intruntime){this->name=name;this->printer=printer;this->tape=tape;this->waittime=waittime;this->runtime=runtime;this->length=
4、length;return0;}voidJCB::shedule(JCB*head){JCB*p,*q;JCB*k1,*k2;longtemp;inta;longmemory=65536;inttape=4;intprinter=2;q=head;p=q->next;cout<<"运行次序为:"<length>memory
5、
6、p->tape>tape
7、
8、p->printer>printer){cout<name<<"作
9、业不满足条件不能执行"<next;deletek1;q->next=p;}else{temp=(p->runtime+p->waittime)/p->runtime;if(anext;}if(k2!=NULL){cout<name<<"作业执行"<next;deletep;k1->next=k2;}q=head;p=q->next;}}intmain(){JCB*head;JCB*p;head
10、=newJCB;head->next=NULL;p=head;inta=0;intname;intprinter;inttape;intwaittime;intruntime;intlength;cout<<"输入作业相关数据(以作业大小为负数停止输入"<>name;cin>>length;cin>>tape;cin>>printer;cin>>waittime;cin>>runtime;while(length>0){p->
11、next=newJCB;p=p->next;a=p->creat(name,length,tape,printer,waittime,runtime);cout<next=NULL;cin>>name;cin>>length;if(length<0)break;cin>>tape;cin>>printer;cin>>waittime;cin>>runtime;}head->shedule(head);return0;}五、实验结果与分析分析:本程序用类作为作业控制块(JCB)实现了数据的封装,对作业执行的安全有一定保障。
12、同时程序中采用响应比优先的作业调度方法实现了作业调度并显示了作业调度的顺序。但是,本程序的代码还是有点复杂有待简化。