实验二 作业调度一、实验名称作业调度算法的模拟实现二、实验目标作业调度又称宏观调度,其主要任务是对磁盘设备上大量的后备作业,以一定的原则进行选择,给选中的作业分配内存等必须的资源,建立其相应的进程,让其投入运行。本实验要求学生用高级程序设计语言编写和调试一个简化的作业调度程序,模拟实现的调度算法包括:先来先服务调度算法,短作业优先调度算法,响应比高者优先调度算法等,并对这些算法的性能做比较和评价。以加深学生对作业、作业调度以及作业调度的各种算法的理解。三、实验环境要求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; //是否已运行};六、流程图图 1 作业调度算法流程图七、源代码#include #include using namespace std;struct time //时间的数据结构{int hour;int minute;};struct Job //作业{string jobname; //作业名time intime; //进入时间int runtime; //作业估量运行时间Y用户 选择进入系统选择调度算法FCFS 调度算法短作业优先响应比优先是 E 或 e退出系统time starttime; //作业开始时间time endtime; //作业结束时间int cycletime; //作业周转时间 float cltime; //作业带权周转时间bool haverun; //是否已运行};float T=0;//作业平均周转时间float W=...