批处理系统作业调度实验(共7页).doc
精选优质文档-倾情为你奉上 动态分区存储管理方式的主存分配回收实验报告年级 08级 学号 姓名 陈云云 成绩 专业 数学与应用数学 实验地点 主楼402 指导教师 王硕 实验项目 批处理系统作业调度 实验日期 2010年10月27日 一、实验目的 加深对作业概念的理解;深入了解批处理系统如何组织作业、管理作业和调度作业;二、实验要求编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。三、实验原理:操作系统根据允许并行工作的道数和一定的算法从系统中选取若干作业把它们装入主存储器,使它们有机会获得处理器运行,这项工作被称为“作业调度”。实现这部分功能的程序就是“作业调度程序”。四、实验程序设计#include "stdafx.h"#include <iostream> using namespace std;#include <string>#include "JCB.h"class JCB public:int creat(int name, int length, int tape, int printer, int waittime, int runtime );void shedule(JCB *head);JCB *next;JCB();virtual JCB();private:int name;int printer;int tape;int waittime;int runtime; long length;int JCB:creat(int name, int length, int tape, int printer, int waittime, int runtime) this->name=name;this->printer=printer;this->tape=tape;this->waittime=waittime;this->runtime=runtime;this->length=length; return 0;void JCB:shedule(JCB *head)JCB *p,*q;JCB *k1,*k2;long temp;int a;longmemory=65536; int tape=4; int printer=2;q=head;p=q->next;cout<<"运行次序为:"<<endl;while(p!=NULL)a=0;k1=k2=NULL; while(p!=NULL) if(p->length>memory|p->tape>tape|p->printer>printer)cout<<p->name << "作业不满足条件不能执行"<<endl;k1=p;p=p->next ;delete k1;q->next=p; else temp= (p->runtime+p->waittime )/p->runtime; if(a<temp) a=temp; k1=q; k2=p; q=p; p=q->next; if(k2!=NULL) cout<<k2->name<<"作业执行"<<endl; p=k2; k2=k2->next ; delete p; k1->next=k2; q=head; p=q->next;int main()JCB *head;JCB *p;head=new JCB; head->next=NULL;p=head;int a=0;int name;int printer;int tape;int waittime;int runtime;int length;cout<<"输入作业相关数据(以作业大小为负数停止输入"<<endl;cout<<"输入作业名、作业大小、磁带机数、打印机数、等待时间、估计执行时间"<<endl; cin >> name; cin >> length; cin >> tape; cin >> printer; cin >> waittime; cin >> runtime; while(length>0) p->next=new JCB; p=p->next; a=p->creat( name, length,tape,printer, waittime, runtime ); cout<<endl; p->next=NULL; cin >> name; cin >> length; if(length<0) break; cin >> tape; cin >> printer; cin >> waittime; cin >> runtime; head->shedule(head);return 0;五、实验结果与分析 分析:本程序用类作为作业控制块(JCB)实现了数据的封装,对作业执行的安全有一定保障。 同时程序中采用响应比优先的作业调度方法实现了作业调度并显示了作业调度的顺序。但是,本程序的代码还是有点复杂有待简化。专心-专注-专业