学号:012091034002课程设计题目进程调度模拟设计——先来先服务、优先级法学院计算机科学与技术学院专业计算机科学与技术专业班级计算机009班姓名永指导教师汪祥莉2012年01月13日武汉理工大学《操作系统》课程设计说明书1目录课程设计任务书......................................................................................................21.需求分析...............................................................................................................31.1设计目的...............................................................................................................................31.2设计要求...............................................................................................................................32.功能设计...............................................................................................................32.1数据结构.....................................................................................................32.2先来先服务算法设计...........................................................................................................42.2.1先来先服务算法的定义及说明......................................................................................42.3优先级算法的设计...............................................................................................................62.3.1优先级算法的定义及说明..............................................................................................62.3.2优先级进程调度及实现过程...........................................................................................62.3.3优先级调度流程图..........................................................................................................102.4进程参数的输入...................................................................................................................112.5调度结果的输出...................................................................................................................123.源程序的主要部分..............................................................................................124.程序测试..............................................................................................................144.1先来先服务测试用例...........................................................................................................144.2先来先服务运行结果...........................................................................................................154.3优先级算法测试用例...........................................................................................................154.4优先级算法运行结果...........................................................................................................165.程序流程图..........................................................................................................176.自我评价与总结..................................................................................................187.源程序清单..........................................................................................................19武汉理工大学《操作系统》课程设计说明书2课程设计任务书学生姓名:永专业班级:计算机0909班指导教师:汪祥莉工作单位:计算机科学与技术学院题目:进程调度模拟设计——先来先服务、优先级法初始条件:1.预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2.实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.模拟进程调度,能够处理以下的情形:⑴能够选择不同的调度算法(要求中给出的调度算法);⑵能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;⑶根据选择的调度算法显示进程调度队列;⑷根据选择的调度算法计算平均周转时间和平均带权周转时间。2.设计报告内容应说明:⑴课程设计目的与功能;⑵需求分析,数据结构或模块说明(功能与框图);⑶源程序的主要部分;⑷测试用例,运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名:年月日系主任(或责任教师)签名:年月日武汉理工大学《操作系统》课程设计说明书3进程调度模拟设计——先来先服务、优先级法1.需求分析1.1设计目的(1)阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。(2)掌握一种计算机高级语言的使用。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.2设计要求(1)能够选择不同的调度算法(要求中给出的调度算法);(2)能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;(3)根据选择的调度算法显示进程调度队列;(4)根据选择的调度算法计算平均周转时间和平均带权周转时间。2.功能设计2.1数据结构1.进程的结构定义:structProcess//定义进程控制块{charname[10];//进程名intpriority;//进程优先级floatarive;//进程到达时间floatrun;//进程运行时间floatfinish;//进程完成时间floatzz;//进程周转时间floatdqzz;//进程带权周转时间boolrun_flag;//进程是否运行标志}武汉理工大学《操作系统》课程设计说明书42.2先来先服务算法设计2.2.1先来先服务算法的定义及说明将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。在该算法中,每个作业或进程按照它们在队列中等待时间长短来决定它们是否优先享受服务。在没有特殊理由要优先调度某类作业或进程时,从处理的角度来看,FCFS方式是一种最合适的方法,因为无论是追加还是取出一个队列元素在操作上都是最简单的。2.2.2进程调度及实现过程voidfcfs(Processpro[],intk)//先来先服务法{for(inti=0;i=k-2;i++){intmin=i;for(intj=i+1;jk;j++){if(pro[j].arivepro[min].arive){min=j;}}ProcesstmpPrp;memcpy(&tmpPrp,&pro[i],sizeof(Process));memcpy(&pro[i],&pro[min],sizeof(Process));memcpy(&pro[min],&tmpPrp,sizeof(Process));}intn;cout进程调度顺序为:;武汉理工大学《操作系统》课程设计说明书5for(n=0;n=k-1;n++)coutpro[n].name;coutendl;pro[0].finish=pro[0].arive+pro[0].run;pro[0].zz=pro[0].finish-pro[0].arive;pro[0].dqzz=pro[0].zz/pro[0].run;for(n=1;n=k;n++){pro[n].finish=pro[n].run+pro[n-1].finish;pro[n].zz=pro[n].finish-pro[n].arive;}floataveragezz,averagedqzz;averagezz=0;averagedqzz=0;for(n=0;n=k-1;n++){averagezz+=pro[n].zz;}averagezz=averagezz/k;cout平均周转时间为:averagezzendl;for(n=0;n=k-1;n++){pro[n].dqzz=pro[n].zz/pro[n].run;averagedqzz+=pro[n].dqzz;}a