模拟批处理多道操作系统的作业调度.doc
文本预览下载声明
石家庄经济学院
实验报告
(学 院)系: 信息工程学院
专 业: 网络工程
姓 名: 何秉乾
班 级: 网络2班
学 号: 407109070501
指导教师: 王建东
日期:2010 年 1月 22 日
操作系统实验报告 姓名 何秉乾 学号 407109070501 日期 2010/1/11-2010/1/22 实验室 260机房 指导教师 王建东 设备编号 设计题目 作业调度 一.设计内容
模拟批处理多道操作系统的作业调度 二.设计目的
每个用户请求计算机计算的一个计算任务叫做一个作业。一个作业从输入初始数据到得到计算结果,要经过若干个步骤的相继执行。例如,编辑、编译、运行等,其中每一个步骤称作一个作业步。用户向系统提出作业加工步骤的方式称作业控制方式,作业控制方式有两种:终端控制方式(又称直接控制方式或联机控制方式)和批处理控制方式(又称自动控制方式或脱机控制方式)。
在批处理控制方式下,用户采用系统提供的作业控制语言(JCL)写好作业说明书,说明作业加工的步骤。操作员把一批作业组织成输入流,通过“预输入”手段使每个作业的信息(包括作业说明书、源程序、初始数据等)暂存在辅助存储器的“输入井”中。
批处理多道操作系统的作业管理有两个任务:作业调度和作业控制。采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业分配所需的系统资源。对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。
本实习要求学生模拟作业调度的实现,了解作业调度在操作系统中的作用。 三.设计过程
1、数据结构设计:
设计一个结构体数组
typedef struct work{
char username[10]; //用户名
char workname[10]; //作业名
float time; //作业运行时间
char state; //状态R为收容,A表示执行状态,T为完成
int store; //主存
int tape; //磁带
}WORK;
WORK w[N]; //工作数组
初始化操作
printf(初始化:\n);
for(i=0;iN;i++)
{
printf(--请输入第%d个作业的信息--\n,i+1);
printf(第%d个作业:用户名:,i+1);
scanf(%s,w[i].username);
printf(第%d个作业:作业名:,i+1);
scanf(%s,w[i].workname);
printf(第%d个作业:运行时间:,i+1);
scanf(%f,w[i].time);
printf(第%d个作业:状态:,i+1);
scanf(%s,w[i].state);
printf(第%d个作业:主存:,i+1);
scanf(%d,w[i].store);
printf(第%d个作业:磁带:,i+1);
scanf(%d,w[i].tape);
}
2、算法设计:
算法选择函数:int choice()
函数功能:根据要求选择FCFS或SFJ。
入口参数:c
出口参数:i
流程图见图1
图1 作业调度算法选择流程图
先来先服务函数(FCFS):int FCFS()
函数功能:FCFS的运算过程
入口参数: F
出口参数:j或-1
流程图见图2所示:
图2 先进先出算法流程图
短作业优先服务函数(SFJ):int SFJ()
函数功能:SFJ的运算过程
入口参数: S
出口参数:j或-1
流程图见图3所示:
图3 短作业优先算法流程图
随机数算法操作
函数功能:输入随机数模拟处理器调度
入口参数:time_t和k
出口参数:p和q
流程图:无
(5)撤离作业算法操作
函数功能:主存中的作业按运行的时间来决定撤离的先后次序
入口参数: h 和l
出
显示全部