1 / 37
文档名称:

处理机调度实验报告.docx

格式:docx   大小:1,041KB   页数:37页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

处理机调度实验报告.docx

上传人:aishangni990 2020/3/14 文件大小:1.02 MB

下载得到文件列表

处理机调度实验报告.docx

文档介绍

文档介绍:深圳大学实验报告课程名称:实验项目名称:学院:专业:指导教师:报告人:学号:操作系统处理机调度计算机与软件学院软件工程班级:实验时间:2013年5月7日实验报告提交时间:2013年教务处制5月22日二、方法、步骤:(说明程序相关的算法原理或知识内容,程序设计的思路和方法,可以用流程图表述,程序主要数据结构的设计、主要函数之间的调用关系等)先来先服务算法:按到达时间先后,选择最先来的作业最先执行实现思想:对作业的到达时间按大小进行排序,然后按顺序执行短作业优先算法:在后备队列中,选择服务时间最短的作业最先执行实现思想:对作业按到达时间排序,接着对到达的作业,即后备队列中的作业按服务时间排序,取服务时间最小的作业最先执行高响应比算法:对作业的优先权(响应时间/要求服务时间)进行计算,对优先权最高的最先执一、实验目的与要求:实验目的:模拟在单处理器多进程操作系统的CPU调度。帮助学生掌握多种CPU调度算法的知识原理和运作机制。本实验为模拟实验,不要求实现真正的进程创建与进程调度。主要实现各种调度算法。实验要求:阅读理解例程,掌握例程的运作流程。运行例程,理解先来先服务算法的调度原理和运行结果。参考先来先服务算法,尝试实现其他四种调度算法:短作业优先、高响应比、时间片轮转、多级反馈队列。要求至少实现一种算法。除了多级反馈队列,其他算法采用非抢占调度短作业优先算法使用例题一数据或程序内置数据,要求运行结果给出调度顺序、完成时间、周转时间、带权周转时间高响应比算法使用例题二的数据,要求运行结果给出调度顺序、完成时间、周转时间、带权周转时间时间片轮转算法可以使用程序内置数据,要求运行结果给出每个时间片是被哪个进程使用,每个进程完成时,要修改状态并输出提示。多级反馈队列算法使用例题三的数据,要求运行结果给出正确的进程调度顺序和过程描述。行实现实现:计算后备队列中作业的优先权,并排序,优先权最高的最先执行时间片轮转算法:将所有就绪进程按先来先服务排成队列,把CPU分配给队首进程,进程只执行一个时间片,时间片用完后,将已使用时间片的进程送往就绪队列的末尾,分配处理机给就绪队列中下一进程实现思想:将作业按到达时间排序,在后备队列中选择第一个作业,把CPU分配给它,执行一个时间片,时间片用完后,将作业送往后备队列的末尾,把CPU分配给下一个作业,直到所有作业完成多级反馈队列调度算法:设置多个就绪队列,各个队列优先级逐个降低,各个队列时间片逐个增加,优先级越高的队列执行时间片就越短,一般时间片按倍增规则,每个新进程首先进入第一个队列,遵循FCFS,在当前队列的时间片内,进程若能完成,退出,进程若未完成,降级到第二个队列,同样遵循FCFS依次类推,若在第二个队列的时间片内仍未完成,再降级到第三个队列……实现思想:设置多个就绪队列,各个队列优先级逐个降低,各个队列时间片逐个增加,优先级越高的队列执行时间片就越短,一般时间片按倍增规则,例如,第二队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍,整合了时间片、FCFS、优先级三种机制。:(对程序代码进行说明和分析,越详细越好,代码排版要整齐,可读性要高)#include""#include<>//#include<>#include<>#include<>//#defineNULL0#definegetpch(type)(type*)malloc(sizeof(type))typedefstructpcbPCB;structpcb{//定义进程控制块PCBintid;//标示符charname[10];//名称inttime_start;//到达时间inttime_need;//服务时间inttime_left;//剩余运行时间inttime_used;//已使用时间charstate;//进程状态};//****************系统函数void_sleep(intn){clock_tgoal;goal=(clock_t)n*CLOCKS_PER_SEC+clock();while(goal>clock());}char_keygo(){charc;printf("按任意键继续……\n");c=getchar();returnc;}//******************用户函数inttime_unit=2;intnum=5;//实际进程数量PCBpcbdata[10]={//例程内置数据{1000,"A",0,4,4,0,'R'},{1001,"B",1,3,3,0,'R'},{1002,"C",2,5,5,0,'R'},{1003,"D",3,2,2,0