作业调度_调度作业
作业调度由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“调度作业”。
操作系统实验报告
学
院______________________ 专
业______________________ 班
级______________________ 学
号______________________ 姓
名______________________ 指导教师
胡欣如
(2011年11 月)
实验报告内容要求
一、实验目的通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。
二、实验内容和要求
设计一个有 N个进程共行的进程调度程序。
进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法,多级反馈队列算法。
每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。
就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
三、实验主要仪器设备和材料
实验环境
硬件环境:IBM-PC或兼容机 软件环境:VC++6编程环境
四、实验原理及设计方案(下面6项必写)
1、实验原理
多级反馈队列基本思想为,当一个新的进程进入内存之后,首先将它放入第一队列的末尾,按FCFS原则排队等候调度,但轮到该进程执行的时候,如能在该时间片内完成,便可以撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按照FCFS原则等待调度执行,以此类推。
2、设计方案
(1)设计一个有N个进程共行的进程调度程序。每个进程由一个进程控制块 PCB表示。进程控制块包括以下信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等。
(2)本调度程序用多级反馈队列。(3)编写程序并调试运行。
3、相关数据结构的说明
typedef struct pcb{ string name;//进程名字
char state;//进程当前状态
int ntime;//进程需要的运行时间
int rtime;//进程已运行的时候
struct pcb* link;//链指针 }pub;
cla d_queue{ //队列类 private:
};struct pcb* head,*end;d_queue *next_queue;//指向下个队列的指针 int time_p;//轮转时间 void set_next_queue(d_queue*);//设置下个队列 void push(pcb*);//新作业调入队列 void display(pcb*);//显示一个进程 pcb* pop();//一个进程出队列 void display_all();//显示该队列的全部进程 void run();//队列的第一个进程运行 pcb* top();//返回队列的第一个元素 void change_state(char);//改变队头元素的状态 void set_time_piece(int);//设置时间轮转片 public: d_queue::d_queue();//队列初始化
4、程序流程图(详细)
5、给出程序中源程序名和可执行程序名。
6、程序清单(源程序中要附有详细的注释)(代码部分:分成两栏(字号小五))
(注:
6、此部分程序清单附在电子版的实验报告文档中,打印版不需要打印程序清单)
五、实验结果及分析
1、运行结果(要求截图)(能动态说明执行结果)(要求截图尺寸大小适中)
2、实验结果的分析及说明
六、调试总结及心得体会
(调试过程中小结、所遇问题及解决方法、心得体会)
七、思考题