操作系统实验 FCFS和短作业优先SJF调度算法模拟

操作系统实验 FCFS和短作业优先SJF调度算法模拟
操作系统实验 FCFS和短作业优先SJF调度算法模拟

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

姓名:

学号:

专业:

学院:

指导教师:林若宁

二零一八年十一月

一、实验目的

模拟单处理器系统的进程调度,分别采用短作业优先和先来先服务的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.

二、实验内容

1. 短作业优先调度算法原理

短作业优先调度算法,是指对短作业或断进程优先调度的算法。它们可以分别可以用于作业调度和进程调度。短作业优先调度算法,是从后备队列中选择一个或若干个运行时间最短的作业,将它们调入内存运行。短进程优先调度算法,是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

2. 先来先服务调度算法原理

先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。

三、程序设计

1.概要设计

程序包括主函数、FCFS算法函数、SJF算法函数、输出函数;主函数流程:输入文件中的数据—显示各进程数据—选择算法—调用相应算法的函数—输出结果

2.算法流程

SJF算法流程图:

3.详细设计

(1)定义一个结构体

typedef struct PCB

{

char job_id[10]; //作业ID

float Arr_time; //到达时刻

float Fun_time; //估计运行时间

float Wait_time; //等待时间

float Start_time; //开始时刻

float Fin_time; //完成时刻

float Tur_time; //周转时间

float WTur_time; //带权周转时间

int Order; //优先标记

}list;

(2)先来先服务算法函数

void fcfs(list *p,int count) //先来先服务算法{

list temp; //临时结构体变量int i;

int j;

for(i = 1;i < count;i++) //按到达时刻直接插入排序

{

temp = p[i];

j = i-1;

while(temp.Arr_time < p[j].Arr_time && j >= 0)

{

p[j+1] = p[j];

--j;

}

p[j+1] = temp;

}

for(i = 0;i < count;i++) //循环计算各个作业的时间值

{

if(i == 0)

{

p[i].Start_time = p[i].Arr_time;

}

else

{

p[i].Start_time = p[i-1].Fin_time; //开始时刻==前一个作业的完成时刻}

p[i].Wait_time = p[i].Start_time - p[i].Arr_time; //等待==开始-到达

p[i].Fin_time = p[i].Start_time + p[i].Fun_time; //完成==开始+运行

p[i].Tur_time = p[i].Fin_time - p[i].Arr_time; //周转=完成-到达

p[i].WTur_time = p[i].Tur_time / p[i].Fun_time; //带权周转=周转/运行}

return;

}

(3)最短作业优先函数

void sjf(list *p,int count) //最短作业优先算法(sjf)

{

list item; //结构体变量

int i = 0;

int j = 0;

int k = 0; //最短运行时间作业的下标

int flag = 0; //优先级设置

float min = 0; //最短运行时间

float temp; //开始的时刻

temp = p[0].Arr_time;

//先求出最先到达作业的时刻for(i = 0;i < count;i++)

{

if(temp > p[i].Arr_time)

{

temp = p[i].Arr_time; //保存最先到达的作业的时刻

k = i; //最先到达的作业的下标,默认为p[0] }

}

for(i = 0;i < count;i++)

{

p[k].Order = ++flag; //设置优先级为1,最高优先级

p[k].Start_time = temp;

p[k].Wait_time = temp - p[k].Arr_time; //计算各个时间

p[k].Fin_time = temp + p[k].Fun_time;

p[k].Tur_time = p[k].Fin_time - p[k].Arr_time;

p[k].WTur_time = p[k].Tur_time / p[k].Fun_time;

min = 100;

temp = p[k].Fin_time; //后一个作业的开始时刻是前一个作业的完成时刻

for(j = 0;j < count;j++)

{

if(p[j].Order != 0 || temp - p[j].Arr_time <= 0) //跳过不满足条件的(已设置优先级的和到达时刻要晚于前一个作业的完成时刻的)

continue;

if(min > p[j].Fun_time)

{

min = p[j].Fun_time;

k = j; //求出满足条件最短运行时间的作业的下标

}

}

}

for(i = 1;i < count;i++) //按优先级排序

{

item = p[i];

j = i-1;

while(item.Order < p[j].Order && j >= 0)

{

p[j+1] = p[j];

--j;

}

p[j+1] = item;

}

return;

}

四、实验结果

测试数据:

(1)先来先服务算法调试

(2)最短作业优先算法调试

五、实验小结

FCFS调度算法有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业(进程)。

CPU繁忙型作业是指该类作业需要大量的CPU时间进行计算,而很少请求I/O。通常的科学计算便属于CPU繁忙型作业。

I/O繁忙型作业是指CPU进行处理时需频繁地请求I/O。目前的大多数事务处理都属于I/O 繁忙型作业。

SJ(P)F调度算法也存在不容忽视的缺点:

该算法对长作业不利,如作业C的周转时间由10增至16,其带权周转时间由2增至3.1。更严重的是,如果有一长作业(进程)进入系统的后备队列(就绪队列),由于调度程序总是优先调度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期不被调度。

该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。

由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。

#include "stdafx.h"

#include

#define MAX 100

typedef struct PCB

{

char job_id[10]; //作业ID

float Arr_time; //到达时刻

float Fun_time; //估计运行时间

float Wait_time; //等待时间

float Start_time; //开始时刻

float Fin_time; //完成时刻

float Tur_time; //周转时间

float WTur_time; //带权周转时间

int Order; //优先标记

}list;

void fcfs(list *p,int count);

void sjf(list *p,int count);

void print(list *p,int count);

void avg(list *p,int count);

void fcfs(list *p,int count) //先来先服务算法

{

list temp; //临时结构体变量

int i;

int j;

for(i = 1;i < count;i++) //按到达时刻直接插入排序

{

temp = p[i];

j = i-1;

while(temp.Arr_time < p[j].Arr_time && j >= 0)

{

p[j+1] = p[j];

--j;

}

p[j+1] = temp;

}

for(i = 0;i < count;i++) //循环计算各个作业的时间值

{

if(i == 0)

{

p[i].Start_time = p[i].Arr_time;

}

else

{

p[i].Start_time = p[i-1].Fin_time; //开始时刻==前一个作业的完成时刻}

p[i].Wait_time = p[i].Start_time - p[i].Arr_time; //等待==开始-到达

p[i].Fin_time = p[i].Start_time + p[i].Fun_time; //完成==开始+运行

p[i].Tur_time = p[i].Fin_time - p[i].Arr_time; //周转=完成-到达

p[i].WTur_time = p[i].Tur_time / p[i].Fun_time; //带权周转=周转/运行}

return;

}

void sjf(list *p,int count) //最短作业优先算法(sjf)

{

list item; //结构体变量

int i = 0;

int j = 0;

int k = 0; //最短运行时间作业的下标

int flag = 0; //优先级设置

float min = 0; //最短运行时间

float temp; //开始的时刻

temp = p[0].Arr_time;

//先求出最先到达作业的时刻for(i = 0;i < count;i++)

{

if(temp > p[i].Arr_time)

{

temp = p[i].Arr_time; //保存最先到达的作业的时刻

k = i; //最先到达的作业的下标,默认为p[0] }

}

for(i = 0;i < count;i++)

{

p[k].Order = ++flag; //设置优先级为1,最高优先级

p[k].Start_time = temp;

p[k].Wait_time = temp - p[k].Arr_time; //计算各个时间

p[k].Fin_time = temp + p[k].Fun_time;

p[k].Tur_time = p[k].Fin_time - p[k].Arr_time;

p[k].WTur_time = p[k].Tur_time / p[k].Fun_time;

min = 100;

temp = p[k].Fin_time; //后一个作业的开始时刻是前一个作业的完成时刻

for(j = 0;j < count;j++)

{

if(p[j].Order != 0 || temp - p[j].Arr_time <= 0) //跳过不满足条件的(已设置优先级的和到达时刻要晚于前一个作业的完成时刻的)

continue;

if(min > p[j].Fun_time)

{

min = p[j].Fun_time;

k = j; //求出满足条件最短运行时间的作业的下标

}

}

}

for(i = 1;i < count;i++) //按优先级排序

{

item = p[i];

j = i-1;

while(item.Order < p[j].Order && j >= 0)

{

p[j+1] = p[j];

--j;

}

p[j+1] = item;

}

return;

}

void print(list *p,int count) //输出各个作业的详细信息

{

int i;

printf("*****************************************************************\n");

printf("ID\t到达\t运行\t等待\t开始\t完成\t周转\t带权周转\n");

for(i = 0;i < count;i++)

{

printf("%s\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n",p[i].job_id,p[i].Arr_time,p[i].Fun_time,p [i].Wait_time,p[i].Start_time,p[i].Fin_time,p[i].Tur_time,p[i].WTur_time);

}

return;

}

void avg(list *p,int count)

{

float AvgTur1; //平均周转

float AvgTur2; //平均带权周转

float t1 = 0;

float t2 = 0;

int i;

for(i = 0;i < count;i++)

{

t1 += p[i].Tur_time; //周转时间和

t2 += p[i].WTur_time; //带权周转和

}

AvgTur1 = t1/count;

AvgTur2 = t2/count;

printf("\n平均周转时间为:%f\t平均带权周转时间为:%f\n",AvgTur1,AvgTur2);

printf("\n*****************************************************************\n");

return;

}

int main()

{

list st[MAX]; //最多可以一百个作业

int job_count = 0; //作业数量

int flag = 1; //算法标记

int i = 0;

printf("请输入作业数量:");

scanf("%d",&job_count);

printf("请输入作业ID,到达时刻,估计运行时间(用空格隔开):\n");

do

{

scanf("%s %f %f",st[i].job_id,&st[i].Arr_time,&st[i].Fun_time);

st[i].Order = 0; //优先级初始化

}while(++i < job_count);

printf("请选择算法:\n1, 先来先服务算法!\n2, 最短作业优先算法!\n");

scanf("%d",&flag);

switch(flag)

{

case 1 : {

fcfs(st,job_count);

printf("\n*******************************************\n\n");

printf("先来先服务算法\n");

} break;

case 2 : {

sjf(st,job_count);

printf("\n*******************************************\n\n");

printf("最短作业优先算法\n");

} break;

}

print(st,job_count);

avg(st,job_count);

return 0;

}

作业调度_实验报告

实验名 称 作业调度 实验内容1、设计可用于该实验的作业控制块; 2、动态或静态创建多个作业; 3、模拟先来先服务调度算法和短作业优先调度算法。 3、调度所创建的作业并显示调度结果(要求至少显示出各作业的到达时间,服务时间,开始时间,完成时间,周转时间和带权周转时间); 3、比较两种调度算法的优劣。 实验原理一、作业 作业(Job)是系统为完成一个用户的计算任务(或一次事物处理)所做的工作总和,它由程序、数据和作业说明书三部分组成,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。 二、作业控制块J C B(J o b C o nt r o l Bl o ck) 作业控制块JCB是记录与该作业有关的各种信息的登记表。为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块,如同进程控制块是进程在系统中存在的标志一样,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。在JCB中所包含的内容因系统而异,通常应包含的内容有:作业标识、用户名称、用户帐户、作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业已运行时间)、资源需求(预计运行时间、要求内存大小、要求I/O设备的类型和数量等)、进入系统时间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等。 三、作业调度 作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。 四、选择调度算法的准则 1).面向用户的准则 (1) 周转时间短。通常把周转时间的长短作为评价批处理系统的性能、选择作业调度方式与算法的重要准则之一。所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称

2020年春【中石油】工程流体力学(含实验演示)模拟实验在线作业(标准)

【石油大学】工程流体力学(含实验演示)-模拟实验在线作业 试卷总分:100 得分:100 第1题,1.(5.0分)水箱气体空间的压力P0(P0≠Pa,Pa为大气压)时,测压管1,2中油品的高度差为h,如果将测压管中的油品换成水(ρwo),水柱高度()油柱高度。 A、大于 B、小于 C、不变 正确答案:B 第2题,2.(5.0分)完全放入水中的平板,如果平板的形心相对水面的深度不变,那么在木板做无规则转动时(木板不露出水面),作用在木板上的静水总压力()。 A、变大 B、变小 C、不变 正确答案:C 第3题,3.(5.0分)随着雷诺数的增大,孔板流量计的理论流量系数μ()。 A、变大 B、变小 C、不变 正确答案:C 第4题,4.(5.0分)伯努利方程可适用于以下那种情况()。 A、不可压缩理想流体渐变流 B、不可压缩理想流体急变流 C、不可压缩实际流体急变流 正确答案:A 第5题,5.(5.0分)在动量方程的实验中,是否需要等流动稳定了再测量记录数据?() A、有必要 B、无所谓 C、不可以 正确答案:A 第6题,6.(5.0分)在测量下临界雷诺数时,阀门应当() A、阀门只可以关小 B、阀门只可以开大 C、关小开大都可以

正确答案:A 第7题,7.(5.0分)实验数据最后整理求局部损失系数时ζ,需要计算() A、前后断面的测压管水头差 B、雷诺数 C、流体的粘度 正确答案:B 第8题,8.(5.0分)沿程水头损失系数λ是相对粗糙度δ/d与雷诺数的Re函数,但是在()流态下,λ仅是相对粗糙度δ/d的函数。 A、层流和紊流光滑区 B、紊流过渡区 C、紊流粗糙区 正确答案:C 第9题,9.(5.0分)在孔口和管嘴的实验中在计算流量系数时,如果孔口和管嘴高度相同以及开孔面积也相同,则()的取值是不相等的。 A、横截面积 B、水头 C、流量 正确答案:C 第10题,10.(5.0分)下面()措施能减小水击的危害。 A、延长关阀时间 B、减小输送流量 C、减小管道直径 正确答案:C 第11题,11.(5.0分)读取测压管读数时,应保持视线与液面边缘的高度平行。 正确 错误 正确答案:错误 第12题,12.(5.0分)浸没于水中的平板,形心yc不会位于总压力的作用点yd之下。 正确 错误 正确答案:正确

进程调度算法实验报告

操作系统实验报告(二) 实验题目:进程调度算法 实验环境:C++ 实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较 各种算法的性能优劣。 实验内容:编程实现如下算法: 1.先来先服务算法; 2.短进程优先算法; 3.时间片轮转调度算法。 设计分析: 程序流程图: 1.先来先服务算法 开始 初始化PCB,输入进程信息 各进程按先来先到的顺序进入就绪队列 结束 就绪队列? 运行 运行进程所需CPU时间 取消该进程 2.短进程优先算法

3.时间片轮转调度算法 实验代码: 1.先来先服务算法 #include #define n 20 typedef struct { int id; //进程名

int atime; //进程到达时间 int runtime; //进程运行时间 }fcs; void main() { int amount,i,j,diao,huan; fcs f[n]; cout<<"请输入进程个数:"<>amount; for(i=0;i>f[i].id; cin>>f[i].atime; cin>>f[i].runtime; } for(i=0;if[j+1].atime) {diao=f[j].atime; f[j].atime=f[j+1].atime; f[j+1].atime=diao; huan=f[j].id; f[j].id=f[j+1].id; f[j+1].id=huan; } } } for(i=0;i #define n 5 #define num 5 #define max 65535 typedef struct pro { int PRO_ID; int 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、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS,最短作业优先(SJF)、响应 比高者优先(HRN的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业, 先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准, 总是优先选取执行时间最短的作业。 (3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。 2、编写并调度一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进 行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 二. 实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解 三. 实验过程 < 一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: zuoye.c 执行程序: zuoye.exe 2)实验分析:

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

先来先服务FCFS和短作业优先SJF进程调度算法_实验报告材料

先来先服务FCFS和短作业优先SJF进程调度算法 1、实验目的 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 2、需求分析 (1) 输入的形式和输入值的范围 输入值:进程个数Num 范围:0

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 4、详细设计 5、调试分析 (1)调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析 ○1开始的时候没有判断进程是否到达,导致短进程优先算法运行结果错误,后来加上了判断语句后就解决了改问题。 ○2 基本完成的设计所要实现的功能,总的来说,FCFS编写容易,SJF 需要先找到已经到达的进程,再从已经到达的进程里找到进程服务时间最短的进程,再进行计算。 (2)算法的改进设想 改进:即使用户输入的进程到达时间没有先后顺序也能准确的计算出结果。(就是再加个循环,判断各个进程的到达时间先后,组成一个有序的序列) (3)经验和体会 通过本次实验,深入理解了先来先服务和短进程优先进程调度算法的思想,培养了自己的动手能力,通过实践加深了记忆。 6、用户使用说明 (1)输入进程个数Num

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

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

3、程序源码结构: void main() { void fcfs(); void sjf(); ... while(1){ printf("\n\t\t/* 1、fcfs */"); printf("\n\t\t/* 2、sjf */"); printf("\n\t\t/* 0、Exit */\n"); printf("\n\n\t请选择:\t"); scanf("%d",&a); printf("\n"); switch(a){ case 1: fcfs();break; case 2: sjf();break; default: break; } if(a!=1&&a!=2) break; } }

石油大学(北京)18春《大学物理(含模拟实验)》第二阶段在线作业100分答案

中国石油大学(北京)15秋《大学物理(含模拟实验)》第二阶段在线作业单选题(共27道题)

3.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:D 此题得分:2.5分4.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:C 此题得分:2.5分5.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:D 此题得分:2.5分6.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:B 此题得分:2.5分7.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分8.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分9.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分10.题目见图片

?B、. ?C、. ?D、. 我的答案:D 此题得分:2.5分11.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:C 此题得分:2.5分12.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:C 此题得分:2.5分13.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分14.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:B 此题得分:2.5分15.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:C 此题得分:2.5分16.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:C 此题得分:2.5分17.题目见图片 ?A、. ?B、.

?D、. 我的答案:B 此题得分:2.5分18.题目见图片 ?A、. ?B、. ?C、. ?D、. ?E、. ?F、. 我的答案:D 此题得分:2.5分19.题目见图片 ?A、. ?B、. ?C、. ?D、. ?E、. 我的答案:C 此题得分:2.5分20.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分21.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分22.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:A 此题得分:2.5分23.题目见图片 ?A、. ?B、. ?C、. ?D、. 我的答案:C 此题得分:2.5分24.题目见图片 ?A、.

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

作业调度 一、实验目的 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、实验内容 ⑴在后备作业队列中,输入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 算法设计 第一部分:初始化作业表

作业调度实验报告

实验项 目名称 作业调度 实验目的及要求一、实验目的: 1、通过模拟作业调度算法的设计加深对作业管理基本原理的理解。 2、深入了解批处理系统如何组织作业、管理作业和调度作业。 3、掌握作业调度算法。 二、实验要求: 1、编写程序完成实验内容; 2、对测试数据进行分析; 3、撰写实验报告。 实验内容1、设计可用于该实验的作业控制块; 2、动态或静态创建多个作业; 3、模拟先来先服务调度算法和短作业优先调度算法。 3、调度所创建的作业并显示调度结果(要求至少显示出各作业的到达时间,服务时间,开始时间,完成时间,周转时间和带权周转时间); 3、比较两种调度算法的优劣。 实验原理一、作业 作业(Job)是系统为完成一个用户的计算任务(或一次事物处理)所做的工作总和,它由程序、数据和作业说明书三部分组成,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。 二、作业控制块J C B(J o b C o n t ro l B lo c k) 作业控制块JCB是记录与该作业有关的各种信息的登记表。为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块,如同进程控制块是进程在系统中存在的标志一样,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。在JCB中所包含的内容因系统而异,通常应包含的内容有:作业标识、用户名称、用户帐户、作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业已运行时间)、资源需求(预计运行时间、要求内存大小、要求I/O设备的类型和数量等)、进入系统时间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等。 三、作业调度 作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及

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

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

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

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

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

实验二作业调度 一.实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 二.实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解 三.实验过程 <一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: zuoye.c 执行程序: zuoye.exe 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 //作业控制块 { char name[10]; //作业名 int reachtime; //作业到达时间

FCFS和SJF进程调度算法实验报告

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.实现结果输出 –输出作业状态表,展示调度过程 ?初始作业状态(未调度时) ?每次调度后的作业状态 设计作业控制块(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。,组成一个后备队列等待,总是首先调度等待队列中队首的作业。

操作系统实验 FCFS和短作业优先SJF调度算法模拟

. 题目先来先服务FCFS和短作业优先SJF进程调度算法 姓名: 学号: 专业: 学院: 指导教师:林若宁 二零一八年十一月

一、实验目的 模拟单处理器系统的进程调度,分别采用短作业优先和先来先服务的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解. 二、实验内容 1. 短作业优先调度算法原理 短作业优先调度算法,是指对短作业或断进程优先调度的算法。它们可以分别可以用于作业调度和进程调度。短作业优先调度算法,是从后备队列中选择一个或若干个运行时间最短的作业,将它们调入内存运行。短进程优先调度算法,是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。 2. 先来先服务调度算法原理 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。 三、程序设计 1.概要设计 程序包括主函数、FCFS算法函数、SJF算法函数、输出函数;主函数流程:输入文件中的数据—显示各进程数据—选择算法—调用相应算法的函数—输出结果 2.算法流程

SJF算法流程图:

3.详细设计 (1)定义一个结构体 typedef struct PCB { char job_id[10]; //作业ID float Arr_time; //到达时刻 float Fun_time; //估计运行时间 float Wait_time; //等待时间 float Start_time; //开始时刻 float Fin_time; //完成时刻 float Tur_time; //周转时间 float WTur_time; //带权周转时间 int Order; //优先标记 }list; (2)先来先服务算法函数 void fcfs(list *p,int count) //先来先服务算法{ list temp; //临时结构体变量int i; int j;

短作业优先调度

实验一进程调度 一、实验目的 编写并调试一个模拟的进程调度程序,以加深对进程的概念及进程调度算法的理解. 二、实验内容 1.采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进 程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达 时间、需要运行时间、已用CPU时间、进程状态等等。 2.每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish) 三种状态之一。每进行一次调度程序都打印一次运行进程、就绪队列、 以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都 完成为止。 三、实现思路 主函数-输入函数-短作业优先调度函数-输出函数。 这是一条最基础的思路。输入函数使用文本导入完成数据输入,输出函数输出调度结果,主函数完成各子函数连接,最主要的是短作业优先的调度函数。我想到的方法就是排序,不断选择需要运行时间最短的作业,接着进行数据输入计算输出等,遍历全部数据并完成调度。 四、主要的数据结构 struct Process_struct{ char name[MaxNum]; //进程名称 int arrivetime; //到达时间 int servertime; //开始运行时间 int finishtime; //运行结束时间 int runtime; //运行时间 int runflag; //调度标志 int order; //运行次序

double weightwholetime; //周转时间 double averagewt_FCFS,averagewt_SJF; //平均周转时间 double averagewwt_FCFS,averagewwt_SJF; //平均带权周转时间 }pro[MaxNum]; 五、算法流程图 六、运行与测试 用书上数据对程序进行测试,结果如下:

计算机网络原理(含模拟实验)第二次在线作业(100分)

第二次在线作业 单选题 (共40道题) 收起 1.( 2.5分)EIA-232协议定义了引脚20为DTE就绪信号引脚,这属于物理层协议() ? ? ? ? 我的答案:C 此题得分:2.5分 2.(2.5分)在下列传输介质中,( )抗电磁干扰能力最好。 ? ? ? ? 我的答案:C 此题得分:2.5分 3.(2.5分)利用模拟通信信道传输数字信号的方法称为() ? ? ? ? 我的答案:D 此题得分:2.5分

4.(2.5分)当通过调制解调器发送数据时,发送的数据和线路上信号之间的关系是() ? ? ? ? 我的答案:C 此题得分:2.5分 5.(2.5分)100Mbps交换式以太网的全双工端口带宽为( ) ? ? ? ? 我的答案:A 此题得分:2.5分 6.(2.5分)PPP协议是( )协议 ? ? ? ? 我的答案:B 此题得分:2.5分 7.(2.5分)分组交换方式是将长的报文分成若干较短的\有固定长度的分组.与报文的交换不同的是,分组交换方式有( ) ? ?

? ? 我的答案:D 此题得分:2.5分 8.(2.5分)WDM的作用是 ? ? ? ? 我的答案:A 此题得分:2.5分 9.(2.5分)数据链路层的功能是( ) ? ? ? ? 我的答案:D 此题得分:2.5分 10.(2.5分)下列产品中( )是在OSI模型的数据链路层进行互连的 ? ? ? ? 我的答案:D 此题得分:2.5分 11.(2.5分)以太网的协议标准是( ) ? ?

? ? 我的答案:A 此题得分:2.5分 12.(2.5分)HDLC帧格式中标识序列(F)是() ? ? ? ? 我的答案:D 此题得分:2.5分 13.(2.5分)下面()协议包括CSMA/CD,,令牌总线和令牌环. ? ? ? ? 我的答案:B 此题得分:2.5分 14.(2.5分)采用星型拓扑结构的10Mbps基带双绞线以太网可以表示为() ? ? ? ? 我的答案:C 此题得分:2.5分 15.(2.5分)为了避免传输中帧的丢失,数据链路层采用的是()。

各类作业调度算法

实验二作业调度实验 一. 目的要求: 用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二. 例题:为单道批处理系统设计一个作业调度程序。 由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 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()

操作系统作业调度实验

实验二作业调度 一、实验名称 作业调度算法的模拟实现 二、实验目标 作业调度又称宏观调度,其主要任务是对磁盘设备上大量的后备作业,以一定的原则进行挑选,给选中的作业分配内存等必须的资源,建立其相应的进程,让其投入运行。本实验要求学生用高级程序设计语言编写和调试一个简化的作业调度程序,模拟实现的调度算法包括:先来先服务调度算法,短作业优先调度算法,响应比高者优先调度算法等,并对这些算法的性能做比较和评价。以加深学生对作业、作业调度以及作业调度的各种算法的理解。 三、实验环境要求 Windows+Visual C++ 6.0; 四、实验基本原理 作业调度主要是完成作业从后备状态到执行状态的转变,以及从执行状态到完成状态的转变。 (1)创建JCB(作业控制块):系统在作业进入后备状态时为每个作业创建一个作业控制块(JCB),从而使该作业可被调度程序感知。当该作业执行完毕进入完成状态时候,系统自动撤销其JCB并释放有关资源,进而撤销该作业。 (2)按照作业调度算法,从后备队列中挑选一作业投入运行。作业调度程序为运行作业建立相应的进程,并分配资源。 (3)主要的作业调度算法包括:先来先服务(FCFS)、短作业优先和最高响应比。

(4)调度策略的指标:最常用的调度性能指标有,周转时间(带权)、吞吐率、响应时间以及设备利用率。 五、数据结构设计 (1)作业控制块,包括作业的基本信息描述。 struct time //时间的数据结构 { int hour; int minute; }; struct Job //作业 { string jobname; //作业名 time intime; //进入时间 int runtime; //作业估计运行时间 time starttime; //作业开始时间 time endtime; //作业结束时间 int cycletime; //作业周转时间 float cltime; //作业带权周转时间 bool haverun; //是否已运行 };

相关文档
最新文档