文档库 最新最全的文档下载
当前位置:文档库 › 作业调度

作业调度

作业调度
作业调度

先来先服务FCFS和短作业优先SJF进程调度算法

【实验题目】:编写程序,实现FCFS和SJF算法,模拟作

业调度过程,加深对作业调度的理解。

【实验内容】

实现FCFS和SJF调度算法。

–数据结构设计(JCB,后备作业队列)

–算法实现与模拟(排序、调度)

–输出调度结果,展示调度过程并解释

【实验要求】

1. 设计作业控制块(JCB)的数据结构

–应包含实验必须的数据项,如作业ID、需要的服务时间、进入系统时间、完成时间,以及实验者认为有必要的其他数据项。

2. 实现排序算法(将作业排队)

–策略1:按“进入系统时间”对作业队列排序(FCFS)

–策略2:按“需要的服务时间”对作业队列排序(SJF)

3. 实现调度过程模拟

(1)每个作业用一个JCB表示,如果模拟FCFS,按策略1将作业排队

,如果模拟SJF,按策略2将作业排队

(2)选择队首的作业,将其从后备队列移出

(3)(作业运行过程,在本实验中,无需实现,可认为后备队列上

作业一但被调度程序选出,就顺利运行完毕,可以进入第4步)(4)计算选中作业的周转时间

(5)进行下一次调度(去往第2步)

4.实现结果输出

–输出作业状态表,展示调度过程

?初始作业状态(未调度时)

?每次调度后的作业状态

5.撰写实验报告

–包含实验要求中1~4项内容,要求有设计图(

结构图/流程图)和源代码。

–注明使用的编程语言和环境。

设计作业控制块(JCB)的数据结构

每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。具体结构如下: typedef struct jcb{

char name[10]; /* 作业名 */

char state; /* 作业状态 */

int ts; /* 提交时间 */

float super; /* 优先权 */

int tb; /* 开始运行时间 */

int tc; /* 完成时间 */

float ti; /* 周转时间 */

float wi; /* 带权周转时间 */

int ntime; /* 作业所需运行时间 */

char resource[10]; /* 所需资源 */

struct jcb *next; /* 结构体指针 */

} JCB;

JCB *p,*tail=NULL,*head=NULL;

作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。,组成一个后备队列等待,总是首先调度等待队列中队首的作业。

本实验采用链表的形式存放各后备队列当中的作业控制块,各个等待的作业按照提交时刻的先后次序排队。当一个作业进入系统时,就为其动态建立一作业控制块(JCB),挂入后备队列尾部。当作业调度时,从后备队列中按某种调度算法选择一作业,让其进入主存以便占用CPU执行。

每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。

设计图

程序代码:

#include

#include

#define Number 5

void main()

{

int n;

int daoda[Number],fuwu[Number],i;

cout<<"请依次输入各个进程的到达时间并以空格间隔:";

for(i=0;i

{

cin>>daoda[i];

}

cout<<"请依次输入各个进程的服务时间,并以空格间隔:";

for(i=0;i

{

cin>>fuwu[i];

}

cout<<"请输入n=1选择FCFS或者n=2选择SJF或者n=3同时调用FCFS 和SJF,n=";

cin>>n;

while(n<1||n>3){

cout<<"输入的n有误,请重新输入n,n=";

cin>>n;

}

struct statedd //声明结构

{

bool doneF,doneS;

int daoda,fuwu;

float wancheng,zhouzhuan,daiquan,wan,zhou,dai;

};

statedd process[Number];//声明结构变量,这里为数组

int timeflyF=0,timeflyS=0;//定义两个类似于秒表的变量

int j,k,l,nextproF,nextproS;

// 获取数据

for(i=0;i

{

process[i].doneF = false;

process[i].doneS = false;

process[i].wancheng = 0;

process[i].zhouzhuan = 0;

process[i].daiquan = 0;

process[i].wan = 0;

process[i].zhou = 0;

process[i].dai =0;

process[i].daoda = daoda[i];

process[i].fuwu = fuwu[i];

}

// 获取最先到达的进程下标first

int first=0;

l=first;

for(i=1;i

{

if(daoda[first]>daoda[i])

first=i;

}

process[first].doneF=true;

process[first].doneS=true;

process[first].wancheng = process[first].fuwu + process[first].daoda;

process[first].wan = process[first].fuwu + process[first].daoda;

timeflyF += process[first].daoda+process[first].fuwu;

timeflyS += process[first].daoda+process[first].fuwu;

// 接下去到达的进程

//************************************************************* // fcfs ******************************************************** for(j=1;j

{

nextproF = Number+1;

for(k =0 ; k

{

if( !process[k].doneF )

{

if( process[k].daoda <= timeflyF ) // 到达

{

if( nextproF ==Number+1)

nextproF = k;

else

{

if( process[nextproF].daoda > process[k].daoda )

nextproF = k; //获取到达时刻最先的进程

}//else

}//if2

}//if1

}//for

// 处理

process[nextproF].wancheng = process[nextproF].fuwu + timeflyF;

timeflyF += process[nextproF].fuwu;

process[nextproF].doneF=true;

} // circle2

// SJF **********************************************

for(j=1;j

{

nextproS = Number+1;

for(k=0 ; k

{

if(!process[k].doneS)

{

if( process[k].daoda <= timeflyS ) // 到达

{

if( nextproS ==Number+1 )

nextproS = k;

else

{

if( process[nextproS].fuwu > process[k].fuwu )

nextproS = k; //获取服务时间最小的进程

}//else

}//if2

}//if1

}//for

// 处理

process[nextproS].wan = process[nextproS].fuwu + timeflyS;

timeflyS += process[nextproS].fuwu;

process[nextproS].doneS=true;

} // circle2

//**************************************************************** float Fz=0,Fdq=0,Sz=0,Sdq=0;//

for(i=0;i

{ //----------------------------------------------------

process[i].zhouzhuan=process[i].wancheng-process[i].daoda;

Fz += process[i].zhouzhuan;

process[i].daiquan=process[i].zhouzhuan/process[i].fuwu;

Fdq += process[i].daiquan;

//----------------------------------------------------

process[i].zhou=process[i].wan-process[i].daoda;

Sz += process[i].zhou;

process[i].dai=process[i].zhou/process[i].fuwu;

Sdq += process[i].dai;

}

//=========================输出

==================================

//-------------------------------------------------------------------

if(n==1||n==3){

cout<<"\t"<

cout<<"FCFS:"<

for(i=0;i

{

if(i<1)

{

cout<<"时刻"<

}

else

{

cout<<"时刻"<

}

}

cout<

cout<

cout<

cout<

for(i=0;i

{

cout<

cout<

cout<

cout<

}

cout<<"平均周转时间为:"<

cout<<"平均带权周转时间为:"<

}

//-------------------------------------------------------------------

if(n==2||n==3){

cout<<"\t"<

cout<<"SJF:"<

for(i=0;i

{

if(i<1)

{

cout<<"时刻"<

}

else

{

cout<<"时刻"<

}

cout<

cout<

cout<

cout<

for(i=0;i

{

cout<

cout<

cout<

cout<

}

cout<<"平均周转时间为:"<

cout<<"平均带权周转时间为:"<

cout<<"\t"<

}

}

实例截图:

五个进程,到达时间分别为0,1,3,4,6

服务时间分别为5,7,3,8,2

设置选择量n,

当n=1时,选择FCFS

当n=2时,选择SJF

当n=3时,同时分别调用FCFS和SJF

n不为1或2或3时提示错误,重新输入n;1-FCFS 算法

2-SJF算法

3同时调用FCFS和SJF

进程调度习题

12.假设一个系统中有5个进程,它们到达的实践依次为0、2、4、6、8,服务时间依次为3、6、4、5、2,忽略I/O以及其他时间开销,若分别按响应比高者优先、时间片轮转(时间片为1)、先来先服务、非抢占短进程优先、抢占短进程优先调度算法调度CPU,请给出进程的调度顺序,计算各进程的平均周转时间和平均带权周转时间。 【解】 (1)响应比高者优先调度算法 平均周转时间=(3+7+9+14+7)/5 = 40/5 = 8 平均带权周转时间=(1+1.17+2.25+2.8+3.5)/5=10.72/5=2.144 (2)时间片轮转(时间片为1)调度算法 平均带权周转时间=(1+2.67+2.75+2.8+4)/5=13.22/5=2.644 进程调度顺序:P1、P2、P3、P4、P5 平均周转时间=(3+7+9+12+12)/5 = 41/5 = 8.2 平均带权周转时间=(1+1.17+2.25+2.4+6)/5=12.82/5=2.564 (4)非抢占短进程优先调度算法

平均周转时间=(3+7+11+14+3)/5 = 38/5 = 7.6 平均带权周转时间=(1+1.17+2.75+2.8+1.5)/5=9.22/5=1.844 (5)抢占短进程优先调度算法 平均周转时间=(3+18+9+9+2)/5 = 41/5 = 8.2 平均带权周转时间=(1+3+2.25+1.8+1)/5=9.05/5=1.81 补充:有5个待运行的进程A、B、C、D、E,各自估计运行时间为9、6、3、5、x,试问哪种运行次序可以使平均响应时间最短? 【解】 使平均响应时间最短的调度算法是短进程优先。因进程E的时间待定,所以调度次序与x 的大小有关。 (1)当x<3时的运行次序为:E、C、D、B、A (2)当3<=x<5时的运行次序为:C、E、D、B、A (3)当5<=x<6时的运行次序为:C、D、E、B、A (4)当6<=x<9时的运行次序为:C、D、B、E、A (5)当x>=9时的运行次序为:C、D、B、A 、E

生产计划与调度

《生产计划与调度》课程研究报告

一、研究内容 此次课程研究,我以《基于协商的Mult-i Agent 生产计划与调度系统》[1]这篇论文为研究对象,探讨其所提出方法的核心思想并对其进行研讨。 1.1论文研究背景 这篇论文主要是解决生产计划与调度中ERP中当加工数量和工序的加工时间计算变动提前期时难以解决的提前期定义问题,提出了基于协商Multi-Agent的集成生产计划与调度的方法。 1.2论文研究方法的核心思想 生产计划与调度通常采用三层模型描述:1、战略层或高层计划;2、战术计划;3、生产调度(作业计划)。相应这些层分别与长期、中期和短期计划相对应。传统三层模型的缺点是每一层成为下一层的制约,结果导致计划的不可行。即使可行,这样的计划也不是优化的。不可行问题通常通过能力需求计划来解决,但不能保证计划的优化。这篇论文考虑通用的、离散、多场所的生成存货系统,这是知道企业中最典型的制造形式。生产计划与调度主要是对各个工作中心的负荷能力进行平衡,使企业资源得到合理利用。考虑到最终的生产定单是由工作中心完成, 调度也是对各工作中心的任务( 工序) 进行, 如果增加工作中心的智能, 把人的智能集成到工作中心中, 因此, 把工作中心封装为Agent, 通过各个工作中心Agent 与其它功能Agent 之间的交互和协商, 依据各自能力和成本最终达成协议并形成承诺, 生成生产计划( 定单) 以及详细的车间作业计划, 生成的计划是可行的且是优化的, 使得调度问题简单化。通过多Agent 间的协商, 实现分布式计算, 解决由于硬件和软件技术的限制而采取的分层的计划与调度模型中层与层之间的约束以及计划的不可行问题。 这篇论文中的系统有如下类型的功能Agent,如表1所示: 表 1 Agent 名称及其扮演的角色

作业调度实例(全部代码)

源代码: #include #include #include #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 int n; float T1=0,T2=0; int times=0; struct jcb //作业控制块 { char name[10]; //作业名 int reachtime; //作业到达时间 int starttime; //作业开始时间 int needtime; //作业需要运行的时间 float super; //作业的响应比 int finishtime; //作业完成时间 float cycletime; //作业周转时间 float cltime; //作业带权周转时间 char state; //作业状态 struct jcb *next; //结构体指针 }*ready=NULL,*p,*q; typedef struct jcb JCB; void inize() //初始化界面 { printf("\n\n\t\t*********************************************\t\t\n"); printf("\t\t\t\t单道批处理作业调度系统\n"); printf("\t\t*********************************************\t\t\n"); printf("\n\n\n\t\t\t\t\t09软件+电子商务2班\n"); printf("\t\t\t\t\t\t黄才旺\n\n"); printf("\n\n\n\t\t请按任意键进入主菜单:"); getch(); } void inital() //建立作业控制块队列,先将其排成先来先服务的模式队列{ int i; printf("\n输入作业数:"); scanf("%d",&n); for(i=0;iname); getch();

作业调度算法(先来先服务算法,短作业算法)

《操作系统》实验报告 题目:作业调度算法 班级:网络工程 姓名:朱锦涛 学号:E31314037

一、实验目的 用代码实现页面调度算法,即先来先服务(FCFS)调度算法、短作业优先算法、高响应比优先调度算法。通过代码的具体实现,加深对算法的核心的理解。 二、实验原理 1.先来先服务(FCFS)调度算法 FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行的时间的长短,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列。 2.短作业优先算法 SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。SJF算法可以分别用于作业和进程调度。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存。 3、高响应比优先调度算法

高响应比优先调度算法则是既考虑了作业的等待时间,又考虑了作业的运行时间的算法,因此既照顾了短作业,又不致使长作业等待的时间过长,从而改善了处理机调度的性能。 如果我们引入一个动态优先级,即优先级是可以改变的令它随等待的时间的延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可以描述为: 优先权 = (等待时间 + 要求服务时间)/要求服务时间 三、实验内容 源程序: #include #include #include struct work { i nt id; i nt arrive_time;

作业调度实验报告

作业调度实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

实验二作业调度 一.实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 (3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。 2、编写并调度一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 二.实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解三 .实验过程 <一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: 执行程序: 2)实验分析:

1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU 时限等因素。 2、每个作业由一个作业控制块JCB 表示,JCB 可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W 。 3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 3)流程图: 二.最短作业优先算法 三.高响应比算法 图一.先来先服务流程图 4)源程序: #include <> #include <> #include <> #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 int n; float T1=0,T2=0; int times=0; struct jcb .\n",p->name); free(p); .wait...",time); if(times>1000) 代替 代替

第三章部分习题答案

第三章部分习题答案 1、高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 答:高级调度主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说高级调度的调度对象是作业。 低级调度主要任务是:决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。 中级调度的任务:使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。 2、何谓作业、作业步和作业流? 答:作业(Job):作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。 作业步(Job Step)。通常,在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,我们把其

中的每一个加工步骤称为一个作业步,各作业步之间存在着相互联系,往往是把上一个作业步的输出作为下一个作业步的输入。 作业流:若干个作业进入系统后,被依次存放在外存上,这便形成了输入的作业流;在操作系统的控制下,逐个作业进行处理,于是便形成了处理作业流。 5、试说明低级调度的主要功能。 答:(1) 保存处理机的现场信息。 (2) 按某种算法选取进程。 (3) 把处理器分配给进程。 6、在抢占调度方式中,抢占的原则是什么? 答:(1) 优先权原则。 (2) 短作业(进程)优先原则。 (3) 时间片原则。 7、在选择调度方式和调度算法时,应遵循的准则是什么? 答:面向用户应遵循的准则是:(1) 周转时间短。(2) 响应时间快。 (3) 截止时间的保证。(4) 优先权准则。 面向系统应遵循的准则是:(1) 系统吞吐量高。(2) 处理机利用率好。(3) 各类资源的平衡利用。

(完整版)调度员职责范围、工作标准、作业程序

调度员职责范围、工作标准、作业程序 一、调度员职责范围 (一)机车调度员岗位职责范围 1、机车调度员 (1)领导全组人员严格遵章守纪,认真执行各项规章制度,认真了解机统一上班存在问题,根据天、地、人、时订出保证和预想,做到有记录、有正式台帐对照规章命令,指示及段细日班计划,机车周转图组织供质量良好的机车,组织及时整备正点出库,禁止放出违背(技规)第113条规定的机车,根据机车实际运用情况向调度提出合理化建议和要求,经济合理的运用机车,提高机车运用效率,对客车特别担当有重要任务的机车,班长应亲自检查机车并督促正点出库。 (2)按照机车检修、计划,司机途中预报掌握活件情况,根据轻重缓急,积极组织调正机车入库或组织派人积极抢修,并督促指导司机途中正确处理紧急活件,安全回段修理,10点参加洗检碰头会向工厂检修部门重点汇报运用问题和建议,掌握小辅修;中检、临修机车的交路计划,及时准确填写各种报表及机车小辅修走行公里和划清小辅修符号,正确填写机统一等台帐记录。 (3)了解出入厂机车的回送状态,督促机车的过境回送工作。 (4)督促做好机车整备工作,检查库内停留机车的防溜、防冻作业,重点检查特、专、军运、客机车、备用检修加入运用的机车,对运行中的安全问题和事故情况及时查明原因通知值班人员和有关领导果断采取措施,不得延误。 (5)督促检查本班调度员的标准化作业程序和班组建议,严格执行考勤制度和各种学习制度,做好人员的岗位思想工作。 (6)主持本班碰头会,听取领导有关指示、布置班中工作,传达有关注意、安全事项。 (7)参加交班会,详细向领导汇报机车出段和运行正点,行车安全、机车质量、定检机车出、入库时间、主要指标完成情况、上级指示贯彻执行情况、好人好事以及提出改正工作意见。 2、调度员(人事) (1)加强对机车乘务员的管理,严格掌握固定包车制及轮乘制,严格纪律,根据计划按时准确的派班、叫班,合理使用人员。 (2)掌握乘务员考勤,办理各种假的请假手续和旷工、漏乘登记,对各种假要正确挂牌,不得有私情、舞弊行为,做好岗位思想工作。 (3)严格控制和按段文件规定的便乘票使用办法,必须认真保管、回收、发放,不得超范围使用。(4)负责叫班工作,校对计划准确,派班、做到三对照,四不叫、不早叫、不晚叫、不漏叫、不错叫,对过境回送机车派线路指导。负责电子与人名牌维护确保准确无误. (5)维护固定包乘组,需要打乱的由主任批准,若有替班人员时应事先有计划的配好班次,防止三人同时替班,确保人身和行车安全正点。 (6)交班要实行对口交接,接班人员未到,交班人员不得擅自离开工作岗位,将交班四小时工作安排好,认真填写交班记录,并将有关命令、电报、文件、上级指示及未完成工作向接班人员交待清楚。(7)参加交班会向领导汇报人员动态,恢复包乘组等情况,认真执行标准化作业情况。 3、计划调度员 (1)及时收抄上级命令和指示,审查校对日班计划,落实交接班机车实际位置后的机车交路实现,按

操作系统实验报告-作业调度

作业调度 一、实验目的 1、对作业调度的相关内容作进一步的理解。 2、明白作业调度的主要任务。 3、通过编程掌握作业调度的主要算法。 二、实验内容及要求 1、对于给定的一组作业, 给出其到达时间和运行时间,例如下表所示: 2、分别用先来先服务算法、短作业优先和响应比高者优先三种算法给出作业的调度顺序。 3、计算每一种算法的平均周转时间及平均带权周转时间并比较不同算法的优劣。

测试数据 workA={'作业名':'A','到达时间':0,'服务时间':6} workB={'作业名':'B','到达时间':2,'服务时间':50} workC={'作业名':'C','到达时间':5,'服务时间':20} workD={'作业名':'D','到达时间':5,'服务时间':10} workE={'作业名':'E','到达时间':12,'服务时间':40} workF={'作业名':'F','到达时间':15,'服务时间':8} 运行结果 先来先服务算法 调度顺序:['A', 'B', 'C', 'D', 'E', 'F'] 周转时间: 带权周转时间:

短作业优先算法 调度顺序:['A', 'D', 'F', 'C', 'E', 'B'] 周转时间: 带权周转时间:1. 响应比高者优先算法 调度顺序:['A', 'D', 'F', 'E', 'C', 'B'] 周转时间: 带权周转时间: 五、代码 #encoding=gbk workA={'作业名':'A','到达时间':0,'服务时间':6,'结束时间':0,'周转时间':0,'带权周转时间':0} workB={'作业名':'B','到达时间':2,'服务时间':50} workC={'作业名':'C','到达时间':5,'服务时间':20} workD={'作业名':'D','到达时间':5,'服务时间':10} workE={'作业名':'E','到达时间':12,'服务时间':40} workF={'作业名':'F','到达时间':15,'服务时间':8} list1=[workB,workA,workC,workD,workE,workF] list2=[workB,workA,workC,workD,workE,workF] list3=[workB,workA,workC,workD,workE,workF] #先来先服务算法 def fcfs(list): resultlist = sorted(list, key=lambda s: s['到达时间']) return resultlist #短作业优先算法 def sjf(list): time=0 resultlist=[] for work1 in list: time+=work1['服务时间'] listdd=[] ctime=0 for i in range(time): for work2 in list: if work2['到达时间']<=ctime: (work2) if len(listdd)!=0: li = sorted(listdd, key=lambda s: s['服务时间']) (li[0]) (li[0]) ctime+=li[0]['服务时间'] listdd=[]

生产计划员工作职责生产调度员

岗位名称:生产计划员 直接上级:生产部经理 工作概述:计划调配各装配生产线的工作 一、生产计划员工作职责之主要职责 1、安排各生产线生产计划; 2、管理各生产线生产工作; 3、编制生产日报表。 二、生产计划员每日工作内容 1、检查所属各生产线早训,了解前一天各生产线生产情况; 2、出席生产部生产主管早会,安排当日工作; 3、收集、审核分析各生产线生产日报表,编制总生产日报表,报总经理办公室 4、检查各生产线生产状况,解决报表反应问题,调配、生产任务; 5、协调所属单位与其它部门之间工作; 6、上各生产线检查工作; 7、日生产例会,安排明天生产任务; 8、总结生产会议; 9、出席生产部主管晚作业碰头会; 10、工作日志填写; 11、完成领导交办的工作任务。 三、生产计划员每周工作内容 1、收集分析下属单位周记,及时协商解决周记中所反应的问题; 2、总结上周工作,安排下周工作计划。 四、生产计划员每月工作内容 1、评估各生产线生产能力,做出相应调整; 2、协助财务部做好月底车间盘存工作; 3、总结本月工作,安排下月生产计划工作。 五、生产计划员每年工作内容 1、做年终生产计划工作总结; 2、做明年生产计划工作。 六、生产计划员主要权力 1、下属单位的日常管理权; 2、本部门人员任免建议权。 七、生产计划员任职资格 1、具有较强的组织协调能力; 2、中专以上文凭,具有一定的计算机水平; 3、忠于职守,诚信待人。 岗位名称:生产计划员

直接上级:生产主管 直接下级:计划文员 本职工作:协调生产过程、生产流程,保证生产活动正常运行。 一、岗位职责 1、在生产部的领导下负责工厂生产月计划与周计划的编制与生产指令的发布及执行的进度跟踪直至达成; 2、做好订单的评审、生产前的打样安排、确认、生产各环节的进度物料供应、工艺组织布置、品质状况跟踪落实。 3、依据生产计划的完成情况、采购物资供应情况,合理调整生产计划达成出货要求; 4、做好生产现场转单的物料供应筹备工作与结单时产品数量物料清退跟进工作; 5、协调工厂内各部门,解决生产障碍,保证生产的顺利进行; 6、有关产销协调会议的召开及相关工作事项的办理; 7、依订单生产之要求,跟踪需料需求、备料催询、紧急催询的落实工作; 8、负责每周一次异常工作报备的编制与上报工作。 二、核准审核编制 1、负责每月提出对呆滞物料的处理建议; 2、完成上级临时交办的事项; 3、及时向生产主管及厂长汇报生产计划的真实情况与有关数据。 4、定期向生产主管述职。 三、主要权力 1、有权对生产计划的修正与变更; 2、有权对生产状况物料使用进行稽核;

SQL调度作业

-- 月报表调度作业 BEGIN TRANSACTION DECLARE @JobID BINARY(16) DECLARE @ReturnCode INT SELECT @ReturnCode = 0 IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]' -- 删除同名的警报(如果有的话)。 SELECT @JobID = job_id FROM msdb.dbo.sysjobs WHERE (name = N'TestJob') IF (@JobID IS NOT NULL) BEGIN -- 检查此作业是否为多重服务器作业 IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0))) BEGIN -- 已经存在,因而终止脚本 RAISERROR (N'无法导入作业“TestJob”,因为已经有相同名称的多重服务器作业。', 16, 1) GOTO QuitWithRollback END ELSE -- 删除[本地]作业 EXECUTE msdb.dbo.sp_delete_job @job_name = N'TestJob' SELECT @JobID = NULL END BEGIN -- 添加作业 EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'TestJob', @owner_login_name = N'Machine1\Admin', @description = N'没有可用的描述。', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback -- 添加作业步骤 EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'Exec GenerateMothlyReport_Proc', @command = N'Exec GenerateMothlyReport_Proc', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

进程调度作业参考答案

进程调度作业参考答案-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

1.下表给出作业1、2、3到达时间和运行时间。采用短作业优先调度算法和先来先服务调度算法,试问平均周转时间各为多少是否还有更好的调度策略存在(时间单位:小时,以十进制进行计算。 解: 存在更好的调度算法,如采用剥夺式短作业优先调度算法 2.假设有四个作业,它们提交、运行时间如下表所示。若采用响应比高者优先调度算法,试问平均周转时间和带权周转时间为多少? (时间单位:小时,以十进制进行计算。)

解:第一个作业完成时间为10.0,此时其它作业的响应比计算如下: R2=(0.5+10-8.3)/0.5=4.4 R3=(0.1+10-8.5)/0.1=16 R4=(0.4+10-9)/0.4=3.5 根据响应比高者优先调度原则,应先运行作业3,作业3完成时间为10.1,此时作业2和作业4的响应比计算如下: R2=(0.5+10.1-8.3)/0.5=4.6 R4=(0.4+10.1-9)/0.4=3.75 根据响应比高者优先调度原则,应先运行作业2,作业2完成时间为10.6,最后运行作业4,作业4完成时间为11.0。 4.在单CPU和两台输入/输出设备(I1,I2)的多道程序设计环境下,同时投入三个作业 Job1、 Job2、 Job3运行。这三个作业对CPU和输入/输出设备的使用顺序和时间如下所示: Job1: I2(30ms);CPU(10ms);I1(30ms);CPU(10ms);I2(20ms|) Job2: I1(20ms);CPU(20ms); I2(40ms|) Job3: CPU(30ms);I1(20ms);CPU(10ms);I1(10ms|) 假定CPU 、 I1、I2都能并行工作, Job1优先级最高, Job2次之, Job3优先级最低,优先级高的作业可以抢占优先级低的作业的CPU但不抢占I1和I2。试求: (1)三个作业投入到完成分别需要的时间。

生产计划与调度管理制度

生产计划与调度管理制度 1.目的: 提高生产效率,实现准时化生产,确保市场需要得到有效的反应,销售订单得到有效的执行,生产过程得到有效的控制,用户需求得到有效的满足。 2.职责: 2.1销售部 2.1.1负责销售合同/订单的下达,市场数据的收集并将收集到的数据整理为月、季、年需求提供给生产部。 2.1.2负责生产过程中与客户沟通信息的传递。 2.2生产部 2.2.1负责生产计划的编制、报批和下达。 2.2.2负责生产计划的组织实施及过程控制。 2.2.3负责根据销售部提供的需求数据,提供工装模具计划及生产所需材料计划给采购部。 2.2.4负责定期组织调度会和生产专题会。 2.2.5负责年、月、周、日生产数据的统计及报出。 2.2.6负责公司内部设备或生产能力不能满足生产进度需求时的外协加工。 2.2.7负责未完成计划的考核提报。及生产原因造成未完成计划的原因分析、责任认定及纠正预防措施的制定。

2.2.8负责厂区5S的检查。 2.2.9负责生产流程的优化。 2.2.10负责协助和监督车间的管理工作。 2.3采购部 2.3.1负责生产所需工装模具、原料、辅料等的供应,并保证生产不受影响。 2.4技术部 2.4.1负责产品图纸的解释、相关工艺文件及产品图纸的编制、下发等。 2.4.2负责为生产部提供必要的技术信息,配合完成原材料计划和模具计划的编制。 2.4.3负责大型工装、附具的设计。 2.4.4负责新产品的试制过程以及试制计划的编制。 2.4.5负责生产过程中技术、质量相关问题的解决。 2.4.6负责因技术问题造成未完成计划的责任认定及纠正预防措施的监督完成。 2.5质量部 2.5.1负责质量管理工作及质量异议的处理。 2.5.2负责组织对不合格品进行分析,并提出解决方案。 2.5.3负责质量管理体系的建立和维护工作 2.6装备部 2.6.1负责对全厂动力系统、机器设备的正常运行提供保障,根据实

作业调度

作业调度实验报告 1、实验目的 作业管理是用户与操作系统的接口。作业调度的主要功能是检查系统是否能满足用户作业的资源要求以及按照一定的算法选取作业。 本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。 2 实验用具 个人电脑 3、实验内容 ⑴在后备作业队列中,输入5个作业的名称、状态、就绪时间、服务时间及存储空间。 ①按先来先服务的原则进行调度,输出作业调度的顺序及等待的时间。 ②按最短作业(即运行时间最短)优先的原则进行调度,输出作业调度的顺序及等待时间。

4 实习步骤 第一步:首先对整个题目进行分析,包括对作业、主存的定义类型。 第二步:对流程图进行分析,分析一些细节代码。 第三步:根据程序流程图写代码并调节一些细节错误。 第四步:运行看结果,这里主要看内存根据作业的要求对分配情况。 4.1 需求分析 本次实验是在预输入五道作业的基础上初始化,并通过作业的需求更改主存的输出显示情况,首先是输入5道作业,分别使用先来先服务算法和最短时间优先算法分配内存,最后进行内存的回收。

4.2 数据结构设计与说明 定义作业中的变量-资源需求: typedef struct source { int size; //资源要求大小 int tape_count; //资源要求磁带数 }src; 定义作业: typedef struct jobwork { char username[10]; //用户名 char jobname[10]; //作业名 char state[5]; //运行状态 int runtime; //运行时间 src source; //资源需求(结构体类型见上) struct jobwork *next; //下一个指针 }job; 定义内存: typedef struct memory { int size; //内存大小 int tape_count; //内存磁带数 char jobname[10]; //内存中存在的作业名(首次为空) char username[10]; //内存中作业的用户名char state[5]; //内存中作业的状态 int job_count; //内存中作业个数struct memory *next; //内存下一个指针}mem; 4.3 算法设计 第一部分:初始化作业表

计算机操作系统作业2(含答案)全解

一、选择题 1.在进程的组成部分之中,进程在运行中不可修改的部分是______。 A.私用程序段B.共享程序段 C.数据段D.进程控制块 2.响应比高者优先作业调度算法是以计算时间和______来考虑的。 A.输入时间B.完成时间C.周转时间D.等待时间 3.在消息缓冲通信中,消息队列属于______资源。 A.临界B.共享C.永久D.可剥夺 4.进程间的同步是指进程间在逻辑上的相互______关系。 A.联接B.制约C.继续D.调用 5.最适合于分时系统的进程调度算法是______。 A.先来先服务(FCFS)B.最短作业优先(SSJF) C.优先数法D.轮转法(RR) 6.进程A和进程B通过共享缓冲区协作完成数据处理,进程A负责生产数据并放入缓冲区,进程B从缓冲区中读数据并输出。进程A和进程B之间的关系是______。 A.互斥关系B.同步关系C.互斥和同步D.无制约关系 7.在优先级调度中,______类进程可能被“饿死”,即长时间得不到调度。 A.短进程B.长进程C.低优先级进程D.大内存进程 8.进程从运行状态到阻塞状态可能是由于______。 A.进程调度程序的调度B.现运行进程的时间片耗尽 C.现运行进程执行了wait操作D.现运行进程执行了signal操作 9.银行家算法在解决死锁问题中是用于______的。 A.预防死锁B.避免死锁C.检测死锁D.解除死锁 10.______不是进程调度算法。 A.时间片轮转法B.先来先服务方法 C.响应比高者优先法D.均衡调度算法 11.下面关于线程的叙述中正确的是______。 A.线程包含CPU现场,可以独立执行程序B.每个线程有自己独立的地址空间C.线程之间的通信必须使用系统调用函数D.进程只能包含一个线程 12.并发进程之间______。 A.彼此无关B.必须同步C.必须互斥D.可能需要同步或互斥 13.当一个进程运行时,系统可能基于某种原则强行将其撤下,把处理器分配给其他进程,这种调度方式是______。 A.非剥夺方式B.剥夺方式C.中断方式D.查询方式 14.信号量S不能用于______操作。 A.signal B.wait C.赋初值D.运算表达式 15.______是一种只能进行wait操作和signal操作的特殊变量 A.调度B.进程C.同步D.信号量 16.分配给进程占用处理机的时间到而强迫进程P让出处理器,或有更高优先级的进程要运行,迫使正在运行的进程P让出处理器,则进程P状态变化的情况为______ A.运行态->就绪态B.运行态->等待态 C.就绪态->运行态D.等待态->就绪态 17.下面关于进程的叙述中正确的是______。

作业调度实验报告

实验二作业调度 一.实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 (3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。 2、编写并调度一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 二.实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解 三 .实验过程 <一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: 执行程序: 2)实验分析:

1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU 时限等因素。 2、每个作业由一个作业控制块JCB 表示,JCB 可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W 。 3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 3)流程图: 二.最短作业优先算法 三.高响应比算法 图一.先来先服务流程图 4)源程序: #include <> #include <> #include <> #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 int n; 代替 代替

实习九 作业调度

实习九作业调度 一、实习内容 模拟批处理多道操作系统的作业调度。 二、实习目的 每个用户请求计算机计算的一个计算任务叫做一个作业。一个作业从输入初始数据到得到计算结果,要经过若干个步骤的相继执行。例如,编辑、编译、运行等,其中每一个步骤称作一个作业步。用户向系统提出作业加工步骤的方式称作业控制方式,作业控制方式有两种:终端控制方式(又称直接控制方式或联机控制方式)和批处理控制方式(又称自动控制方式或脱机控制方式)。 在批处理控制方式下,用户采用系统提供的作业控制语言(JCL)写好作业说明书,说明作业加工的步骤。操作员把一批作业组织成输入流,通过“预输入”手段使每个作业的信息(包括作业说明书、源程序、初始数据等)暂存在辅助存储器的“输入井”中。 批处理多道操作系统的作业管理有两个任务:作业调度和作业控制。采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业分配所需的系统资源。对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。 本实习要求学生模拟作业调度的实现,了解作业调度在操作系统中的作用。 三、实习题目 采用先来先服务算法和运行时间最短者优先算法模拟设计作业调度程序。 [提示]: (1) 作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在这些作业中作出选择。先来先服务算法是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业。运行时间最短者优先算法总是按作业要求运行的时间来选择作业,每次挑选要求运行时间短且资源要求能满足的作业先进入主存执行。 (2) 为了表示暂存在输入井中的各个作业的情况(作业信息在输入井中的位置、作业的资源要求等),常常采用二级目录结构:作业表和预输入表。例如: 作业表 “预输入” (源程序文件、数据文件等)登记在预输入表中。“预输入”程序工作时还把作业控制语句集中,作为作业说明书文件存放在输入井并登记在预输入表的第一栏中,同时把用户在作业说明书中提出的资源要求登记在作业表中。 本实习模拟作业调度,所以可不考虑有关“预输入”程序的工作。假定“预输入”程序

操作系统作业参考答案及其知识点

操作系统作业参考答案及其知识点 第一章 思考题: 10、试叙述系统调用与过程调用的主要区别? 答: (一)、调用形式不同 (二)、被调用代码的位置不同 (三)、提供方式不同 (四)、调用的实现不同 提示:每个都需要进一步解释,否则不是完全答案 13、为什么对作业进程批处理可以提高系统效率? 答:批处理时提交程序、数据和作业说明书,由系统操作员把作业按照调度策略,整理为一批,按照作业说明书来运行程序,没有用户与计算机系统的交互;采用多道程序设计,可以使CPU和外设并行工作,当一个运行完毕时系统自动装载下一个作业,减少操作员人工干预时间,提高了系统的效率。 18、什么是实时操作系统?叙述实时操作系统的分类。 答:实时操作系统(Real Time Operating System)指当外界事件或数据产生时,能接收并以足够快的速度予以处理,处理的结果又能在规定时间内来控制监控的生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的操作系统。 有三种典型的实时系统: 1、过程控制系统(生产过程控制) 2、信息查询系统(情报检索) 3、事务处理系统(银行业务) 19、分时系统中,什么是响应时间?它与哪些因素有关? 答:响应时间是用户提交的请求后得到系统响应的时间(系统运行或者运行完毕)。它与计算机CPU的处理速度、用户的多少、时间片的长短有关系。 应用题: 1、有一台计算机,具有1MB内存,操作系统占用200KB,每个用户进程占用200KB。如果用户进程等待I/0的时间为80%,若增加1MB内存,则CPU的利用率提高多少? 答:CPU的利用率=1-P n,其中P为程序等待I/O操作的时间占其运行时间的比例1MB内存时,系统中存放4道程序,CPU的利用率=1-(0.8)4=59% 2MB内存时,系统中存放9道程序,CPU的利用率=1-(0.8)9=87% 所以系统CPU的利用率提高了28% 2、一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A先开始做,程序B后开始运行。程序A的运行轨迹为:计算50ms,打印100ms,再计算50ms,打印100ms,结束。程序B的运行轨迹为:计算50ms,输入80ms,再计算100ms,结束。

各类作业调度算法

实验二作业调度实验 一. 目的要求: 用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二. 例题:为单道批处理系统设计一个作业调度程序。 由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。 作业调度算法:采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。 每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。 作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。 各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。 每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。 调度算法的流程图如下图所示。

三 . 实习题: 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。 2、编写并调度一个多道程序系统的作业调度模拟程序。

作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 3、编写并调试一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于优先级的作业调度。 可以参考课本中的例子自行设计。 三 . 实验过程: 1、编写并调试一个单道处理系统的作业等待模拟程序。 先来先服务(FCFS): main.cpp: /* **先来先服作业调度算法模拟 */ #include #include #define MAX_SOURCE 1000 //资源总数(对于单通道的作业调度可以忽略系统资源问题) using namespace std; struct jobCB { string name; double subtime;//提交时间 double runtime;//运行时间 double source;//资源 char state;//进程状态 struct jobCB *next; //链指针 }*ready,*rail,*p; int length; double maxsource; double now_source; double allTi;//总周转时间 double allWi;//总带权周转时间 double time;//时钟 void init()

相关文档
相关文档 最新文档