作业调度系统
- 格式:ppt
- 大小:1014.50 KB
- 文档页数:45


批处理系统的作业调度
年级 2009级 学号 姓名 成绩
专业 实验地点 指导教师
实验项目 批处理系统的作业调度
实验日期 2010年10月15日
一、实验目的
加深对作业概念的理解;
深入了解批处理系统如何组织作业、管理作业和调度作业;
二、实验要求
编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。
三、实验原理:
操作系统根据允许并行工作的道数和一定的算法从系统中选取若干作业把它们装入主存储器,使它们有机会获得处理器运行,这项工作被称为“作业调度”。实现这部分功能的程序就是“作业调度程序”。
作业调度的实现主要有两个问题,一个是如何将系统中的作业组织起来;另一个是如何进行作业调度。
为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息在存储器中的位置、指向下一个作业控制块的指针等信息。这个记录作业相关信息的数据块称为作业控制块(JCB),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。一个作业全部信息进入系统后,就为其建立作业控制块,并挂入后备队列。当进行作业调度时,从后备队列中查找选择作业。
由于实验中没有实际作业,作业控制块中的信息内容只使用了实验中需要的数据。作业控制块中首先应该包括作业名;其次是作业所需资源,根据需要,实验中只包括需要主存的大小(采用可移动的动态分区方式管理主存,作业大小就是需要主存的大小)、需要打印机的数量和需要磁带机的数量;采用响应比作业调度算法,为了计算响应比,还需要有作业的估计执行时间、作业在系统中的等待时间;另外,指向下一个作业控制块的指针必不可少。
一个作业调度系统的设计与实现
1.本课题所涉及的问题在国内(外)的研究现状综述
随着社会的发展科技的进步,计算机已经成为我们日常生活中的必须品,在移动设备和计算机软件越来越多的情况下,数据量的增长也就成为了必然的结果。对用户数据进行处理,势在必行。随着大数据时代的到来,越来越多的大数据平台陆续出现,数据处理任务日益加重,仅仅依靠命令行和自带页面已经无法满足人们日志增长的数据处理需求。 任务调度系统,成为了大数据时代数据处理任务中不可或缺的一环。
国内发展状况:在大数据风靡全球的同时,我国也加快了对大数据相关技术的研究。在刚刚结束的十九大中已经把信息处理技术作为关键的创新工程之一,大数据技术的成熟发展使我国大数据产业链雏形呈现给许多的企业都带来了商机。随着大数据的发展,人们对数据处理技术应用以及数据处理任务的需求也越来越高。随之出现的是大量的数据处理任务的任务调度系统。这些任务调度系统的出现,简化了用户执行数据处理任务的繁杂程度,加强了数据处理任务的复用力度,方便了开发人员对数据处理任务的管理。
2.本人对课题任务书提出的任务要求及实现预期目标的可行性分析
经济可行性:使用免费的Jetbrains Idea作为开发工具,开源免费的CentOS7、Apache Tomcat8、MySQL、Hadoop为软件运行环境,只需要一台装有正版Windows10系统的电脑即可开发,无需付出额外经济成本。
技术可行性:技术上采用spring,shell、ftp、python、jar、hdfs、mapreduce、hive、spark、hbase等技术。考虑到如果用户数量和作业强度比较大,所以使用执行器的横向扩展解决高并发问题。现在以上的几种技术在软件开发以及数据处理中已经比较成熟我们可以直接使用。且由于现在距离毕业答辩的时间还比较长,可以在四个月之内完成项目所具有的功能。
法律可行性:该系统的开发将不会侵犯任何个人、集体、国家的利益,也不会违反国家的政策与法律。
批处理系统中作业调度:
#include"stdlib.h"
#include"string.h"
#include"iostream.h"
typedef struct cj
{char name[6];
int length;
int printer;
int tape;
int runtime;
int waittime;
struct cj *next;
}cj;
cj *head;
int tape,printer;
long memory;
void shedule()
{float xk,k;
cj *p,*q,*s,*t;
do
{p=head;
q=s=NULL;
k=0;
while(p!=NULL)
{if(p->length<=memory&&p->tape<=tape&&p->printer<=printer)
{xk=(float)(p->waittime)/p->runtime;
if(q==NULL||xk>k)
{k=xk;
q=p;
t=s;
}
}
s=p;
p=p->next;
}
if(q!=NULL)
{if(t==NULL)
head=head->next;
else
t->next=q->next;
memory=memory-q->length;
tape=tape-q->tape; printer=printer-q->printer;
cout<<"选中作业的作业名:" } }while(q!=NULL); } void main() { int size,tcount,pcount,wtime,rtime; char name[6]; cj *p; memory=65536; printer=2; tape=4; head=NULL; cout<<"输入作业相关数据(以作业大小为负数停止输入):\n"; cout<<"输入作业名、作业大小、磁带机数、打印机数、等待时间、估计执行时间\n";
Torque + Maui配置手册之抛砖引玉篇
本文将以应用于实际案例(南航理学院、复旦大学物理系、宁波气象局)中的作业调度系统为例,简单介绍一下免费开源又好用的Torque+Maui如何在曙光服务器上进行安装和配置,以及针对用户特定需求的常用调度策略的设定情况,以便可以起到抛砖引玉的作用,使更多的人关注MAUI这个功能强大的集群调度器(后期将推出SGE+MAUI版本)。本文中的涉及的软件版本Torque 版本: 2.1.7 maui版本:3.2.6p17。
1. 集群资源管理器Torque
1.1. 从源代码安装Torque
其中pbs_server安装在node33上,TORQUE有两个主要的可执行文件,一个是主节点上的pbs_server,一个是计算节点上的pbs_mom,机群中每一个计算节点(node1~node16)都有一个pbs_mom负责与pbs_server通信,告诉pbs_server该节点上的可用资源数以及作业的状态。机群的NFS共享存储位置为/home,所有用户目录都在该目录下。
1.1.1. 解压源文件包
在共享目录下解压缩torque
# tar -zxf torque-2.1.17.tar.gz
假设解压的文件夹名字为: /home/dawning/torque-2.1.7
1.1.2. 编译设置
#./configure --enable-docs --with-scp --enable-syslog
其中,
默认情况下,TORQUE将可执行文件安装在/usr/local/bin和/usr/local/sbin下。其余的配置文件将安装在/var/spool/torque下
默认情况下,TORQUE不安装管理员手册,这里指定要安装。
默认情况下,TORQUE使用rcp来copy数据文件,官方强烈推荐使用scp,所以这里设定--with-scp.
默认情况下,TORQUE不允许使用syslog,我们这里使用syslog。