批处理系统作业调度实验报告_第1页
批处理系统作业调度实验报告_第2页
批处理系统作业调度实验报告_第3页
批处理系统作业调度实验报告_第4页
批处理系统作业调度实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、批处理系统作业调度一、实验目的 加深对作业概念的理解;深入了解批处理系统如何组织作业、管理作业和调度作业;二、实验要求编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。三、实验原理:操作系统根据允许并行工作的道数和一定的算法从系统中选取若干作业把它们装入主存储器,使它们有机会获得处理器运行,这项工作被称为“作业调度”。实现这部分功能的程序就是“作业调度程序”。四、实验内容:编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实现具体包括

2、:首先确定作业控制块的内容和组成方式;然后完成作业调度;最后编写主函数,对所做工作进行测试。五、提示讲解: 作业调度的实现主要有两个问题:一个是如何将系统中的作业组织起来;另一个是如何进行作业调度。为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如,作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息在存储器中的位置、指向下一个作业控制块的指针等信息。这个记录作业相关信息的数据块称为作业控制块(JCB ),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。当进行作业调度时,从后备队列中查找选择作业。由于实验中没有实际作业,

3、作业控制块中的信息内容只使用了实验中需要的数据。作业控制块中首先应该包括作业名;其次是作业所需资源(内存大小、打印机的数量和磁带机的数量);采用响应比高者优先作业调度算法,为了计算响应比,还需要有作业的估计执行时间、作业在系统中的等待时间;另外,指向下一个作业控制块的指针必不可少。将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,作业队列头指针定义为:int *head;实验中,内存采用可移动的动态分区管理方法,即只要内存空闲区总和比作业大就可以满足作业对内存的需求;对打印机和磁带机这两种独占设备采用静态分配法,即作业执行前必须获得所需资源,并且执行完才归还。采用响应比高

4、者优先调度算法进行调度时,必须计算出系统中所有满足必要条件作业的响应比,从中选择响应比最高的一个作业装入主存储器分配资源。由于是实验,所以就将作业控制块出队,并输出作业名代替装入处存储器,同时修改系统的资源数量。假设系统资源情况:主存64KB(Memory)(以KB为单位分配)、4台磁带机(Tape)和2台打印机(Pinter)。六、实验程序设计#include "stdafx.h"#include <iostream> using namespace std;#include <string>#include "JCB.h"cl

5、ass 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,

6、 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<&

7、lt;"运行次序为:"<<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

8、 )/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;i

9、nt 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 >> len

温馨提示

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

评论

0/150

提交评论