
操作系统第六章实验——处理机管理(共18页).doc
18页精选优质文档-----倾情为你奉上第6章 处理机管理软件121 金凯1. 实验题目:用FCFS、RR和优先级调度算法来模拟处理机调度FCFS:在多道程序或多任务系统中,系统中同时处于就绪态的进程又若干个,也就是说能运行的进程数远远大于处理机个数,为了使系统中的各个进程能有条不紊的运行,必须选择某种调度策略,以选择一进程占用处理机RR:如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务FCFS (first come first service)总是把当前处于就绪队列之首的那个到运行状态也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素FCFS算法简单易行,但性能却不大好如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程如果进程在时间片结束前阻塞或结束,则CPU当即进行切换调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾优先级调度:(1)当该算法用于作业调度时,系统从后备作业队列中选择若干个优先级最高的,且系统能满足资源要求的作业装入内存运行2)当该算法用于进程调度时,将把处理机分配给就绪进程队列中优先级最高的进程。
2.程序中使用的数据结构及主要符号说明struct task_struct { char name[10]; /*进程名称*/ int number; /*进程编号*/ float come_time; /*到达时间*/ float run_begin_time; /*开始运行时间*/ float run_time; /*运行时间*/ float run_end_time; /*运行结束时间*/ int priority; /*优先级*/ int order; /*运行次序*/ int run_flag; / *调度标志*/ }tasks[MAX];3. 程序流程图 1> main函数以及进程信息的输入用delete语句撤销dispatch对象调用显示进程调度信息的算法print()调用进程调度算法开始运行主函数结束主函数的运行输出选择进程调度算法的提示信息输入数据满足要求否是根据满足要求的输入,调用dispatch的构造函数构生成相应的dispatch对象从文本文档lin.txt读入进程信息关闭lin/.txt文档2> 先来先服务进程调度算法(FCFS)调用FCFSS算法按到达时间顺序排列的PQueue进程队列是否为空?察看当前进程是否访问过?取出第PQueue中的队首元素,即PQueue队列中到达时间最早的进程否否输出错误提示模拟运行该进程,对总周转时间,总带权周转时间进行赋值,对end_time(结束时间)点赋值。
并把当前进程插入Queue队列,并删除其在PQueue中的信息队列PQueue是否为空?是结束FCFS函数调用源程序注:下列程序在c++编译器cfree上通过测试,vc6.0没有经过测试1>先来先服务算法说明:这里建立了如教材127页上面的一个例子,模拟了3个作业请求处理的情况具体可以对照教材说明进行查阅include 继续调整作业进入顺序,将进入顺序调整为3、2、1可以得到:该程序结果和教材上面的结果一致,FCFS算法测试完毕!2>时间片轮转法说明:这里我用了链表来存放各个进程中的信息,用环形链表来保证数据的输出include
