实验名称: 作业调度实验
实验类型: 验证性实验
学 时: 4
适用对象: 信息与计算科学专业
一、实验目的 (黑体,小4号字)
模拟作业调度算法,学习作业在操作系统中的调度过程,加深对作业管理的理解。特别是作业调度的概念、作业调度与进程调度的区别。培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解,拓宽学生的知识领域,锻炼学生的实践技能。
二、实验要求 (黑体,小4号字)
本实验模拟单处理器系统的作业调度,加深对作业调度算法的理解。用某种语言编写和调试一个作业调度的算法程序,有一些简单的界面,能够运行,仿真操作系统中作业调度的原理和过程。
1、 在后备作业队列中输入5道作业各自需要的时间及存储空间。数据输入格式如下:
作业编号 作业名称 提交时间 运行时间 存储空间 开始时间 完成时间 等待时间
1 JA 02:40 20 30
2 JB 02:50 30 15
3 JC 02:55 10 90
4 JD 03:00 24 10
5 JE 03:05 6 60
2、 按先来先服务(FCFS)的原则进行调度,输出作业调度的顺序及各自的等待时间。
3、 按最短作业优先(SJF)的原则进行调度,输出作业调度的顺序及各自的等待时间。
4、 按最小作业(存储空间)优先的原则进行调度,输出作业调度顺序及各自的等待时间。
5.建立3个子函数对应3种算法,在主函数中调用它们并按格式输出相关信息;
6.按调度顺序输出作业,输出格式为:
作业编号、作业名、提交时间、运行时间、存储空间、等待时间
三、实验原理(黑体,小4号字)
作业调度算法和进程调度算法。其中作业调度算法主要有先来先服务法FCFS、短作业优先法SJF、最高响应比优先法HRN、定时轮转法和优先数法。在进程调度算法中主要介绍了先来先服务法FCFS、轮转法RR、多级反馈轮转法和优先数法。
需要指出的是:(1)在作业调度和进程调度中同时出现的算法,如FCFS、RR、优先数法,其使用原理是基本相同的;(2)作业调度算法和进程调度算法应严格与存储管理中的“请求淘汰换页算法”相区别,注意不要混淆。
实验提示
1、 根据作业输入数据,定义JCB结构;
struct JCB{
char JobNum[2];
char JobName[8];
…
};
2、 定义数据结构装载后备作业
JCB JobArray[MaxNumber];
3、 三种调度算法的设计
4、 C++语言描述顺序
建立文件:jcb.h;其中存放:
最大作业数;
定义数据结构JCB;
三个作业调度函数;
建立主函数,其中包含:
#include<iostream.h>
#include”jcb.h”
void mian()
{
JCB jobArray[MaxNumber];
数据输入;
调用三种算法并输出调度结果;
}
四、实验所需仪器、设备、材料
PC机
五、实验预习要求、实验条件、方法及步骤
1)熟练掌握作业相关的基本概念。
2)熟练掌握作业调度的有关算法。
3)熟练掌握作业调度算法所需的数据结构和算法流程;
4)熟练掌握某一门编程语言,如C、C++或者Dephi等479