广工大操作系统实验报告-作业调度

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统8作业调度模拟程序一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。二、实验内容和要求为单道批处理系统设计一个作业调度程序(1)编写并调试一个单道处理系统的作业调度模拟程序。(2)作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。I.先来先服务:就是每次调度都是从后备作业队列中,选择一个最先进入该队列的作业,将它调入内存,为它分配资源、创建进程,然后放入就绪队列,投入运行,一直运行到完成或发生某事件而阻塞后,才放弃处理。II.最短作业优先:是从后备队列中选择一个估计运行时间最短的作业,将它调入内存运行并一直执行到完成,或发生某事件而被阻塞放弃处理时,再重新调度。III.响应比高者优先:是通过计算出作业的响应比,按响应比高而进行调度的,其计算公式是:优先权=(等待时间+要求服务时间)/要求服务时间.(3)由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。(4)每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。(5)对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺点。三、实验主要仪器设备和材料硬件环境:IBM-PC或兼容机软件环境:C语言编程环境四、实验原理及设计方案调度也称dispatcher,这是内核的主要职责之一。一个良好的任务调度算法应该主要体现在以下几个方面:1.公平:保证每个进程得到合理的CPU时间;2.高效:使CPU保持忙碌状态,即总是有进程在CPU上运行;3.响应时间:使交互用户的响应时间尽可能短;4.周转时间:使批处理用户等待输出的时间尽可能短;5.吞吐量:使单位时间内处理的进程尽可能多;很显然在任何操作系统中这几个目标不可能同时达到所以不同的。操作系统会在这几个方面中做出相应的取舍从而确定自己的调度算法,常用的处理机调度算法有:先来先服务FCFS、短作业优先SJF、优先级、时间片轮转法、多级队列法、多级反馈队列法。(1)先来先服务(FCFS)广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统9FCFS是最简单的CPU调度算法,即按进程到来的先后次序进行调度,这样在系统中等待时间最长的进程被优先调度,而不管其所需运行时间的长短。(2)作业优先SJF算法是指当CPU可供使用时SJF算法把CPU分给需要运行时间最短的进程。(3)时间片轮转调度法当两个或两个以上任务有同样优先级,内核允许一个任务运行事先确定的一段时间叫做时间额度quantum,然后切换给另一个任务也叫做时间片调度timeslicing,内核在满足以下条件时把CPU控制权交给下一个就绪态的任务,当前任务已无事可做,当前任务在时间片还没结束时已经完成了。轮转法主要是为分时系统设计的,其中时间片是一个重要的参数,不能取的过大或过小,通常为10至100ms数量级,就绪队列可以看成是一个环形队列,CPU调度程序轮流地把CPU分给就绪队列中地每个进程。五、流程图开始作业调度算法?初始化作业JCB和资源source,所有作业按照先后顺序排列,作业提交时间为系统默认时间p-ptime=Systemtim,作业完成时间p-ftime=0用先来先服务算法调度队首作业投入运行,更改作业状态为R,记住作业开始运行时间,修改下一作业指针等,计算运行作业i的完成时刻,周转时间和带权周转时间用短作业算法调度需求时间最短的作业投入运行,更改作业状态为R,记住作业开始运行时间,修改下一作业指针等,计算运行作业i的完成时刻,周转时间和带权周转时间用响应比高优先算法,先计算所有作业高响应比,调度队响应比最高的首作业投入运行,更改作业状态为R,记录作业开始运行时间和完成时间,修改下一作业指针等,计算运行作业i的完成时刻,周转时间和带权周转时间213作业运行完毕?释放该作业占用资源等待队列空?结束计算并打印这组作业的平均周转时间及带权平均周转时间YNNY广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统10六、结果过程及截图主程序菜单《先来先服务算法》单道作业批处理系统初始化,输入三个作业,按照提示输入其时间,资源需求等:第一轮作业调度,如图显示了每个作业提交时间、需求时间、响应比、即时状态、主存需求、磁带机数量等,每次调度完毕输出作业完成时间、周转时间、带权周转时间、释放的资源:广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统11同样,第二轮调度,作业22222完成,如下显示:同样,第三轮调度,作业33333完成,如下显示:全部作业运行完毕,计算总的平均周转时间和带权周转时间:广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统12《短作业优先算法》单道作业批处理系统初始化,输入三个作业,按照提示输入其时间,资源需求等:第一轮作业调度,如图显示了每个作业提交时间、需求时间、响应比、即时状态、主存需求、磁带机数量等,每次调度完毕输出作业完成时间、周转时间、带权周转时间、释放的资源:广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统13同样,第二轮调度,作业33333完成,输出作业完成时间、周转时间、带权周转时间、释放的资源:同样,第三轮调度,作业22222完成,输出作业完成时间、周转时间、带权周转时间、释放的资源:全部作业运行完毕,计算总的平均周转时间和带权周转时间:广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统14《响应比高者优先算法》单道作业批处理系统初始化,输入三个作业,按照提示输入其时间,资源需求等:第一轮作业调度,如图显示了每个作业提交时间、需求时间、响应比、即时状态、主存需求、磁带机数量等,11111调度完毕输出作业完成时间、周转时间、带权周转时间、释放的资源:广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统15第二轮作业调度完毕,22222已经完成,输出作业完成时间、周转时间、带权周转时间、释放的资源:全部作业运行完毕,计算总的平均周转时间和带权周转时间:广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统16七、所遇困难的解决以及心得体会1)测试的数据必须是符合JCB模块中相同类型的,如在源码中式int类型的,而在测试的时候输入float类型就出错。2)各个库函数的运用需要掌握相应的功能,否则会照成代码冗余、繁杂、不优化等各种问题。3)通常在dos下运用的都是英文,而想要用汉字提示就必须考虑一些问题。在源码中我们用制表符(\t)来控制提示,输出的数字是不能与之对齐的,所以我们要将“\t”改成空格。4)在编写和调试程序时,为了尽快调通程序应该按照流程图的结构(保证流程图思路是对的情况下)来建立编程思路。八、源代码#includestdio.h#includestdlib.h#includeconio.h#definegetpch(type)(type*)malloc(sizeof(type))intSelect;intSystemtime=0;/*系统初始时间*/intJCBnum=0;/*总作业数*/intJCBtime=0;/*总周转时间*/doubleJCBtotaltime=0;/*总带权周转时间*/structsource{/*定义资源需求结构*/charmemery[5];/*主存需求*/intmachine;/*磁带机数量*/};structjcb{/*定义作业控制块PCB*/charname[10];charstate;/*状态*/doublesuper;/*响应比优先权*/intntime;/*需要运行时间*/intrtime;/*开始运行时间*/intptime;/*提交时间*/intftime;/*完成时间*/source*needsources;/*资源需求链*/structjcb*link;/*下一个作业控制块的地址*/}*ready=NULL,*run,*p;typedefstructjcbJCB;typedefstructsourceSOURCE;voiddisplay(){intc;do{system(cls);printf(\n\t\t单道批处理系统作业调度演示\n);printf(\n\t\t*********************************************\t\t);printf(\n\t\t\t1.先来先服务算法.);printf(\n\t\t\t2.最短作业优先算法.);printf(\n\t\t\t3.响应比高者优先算法);printf(\n\t\t\t0.退出程序.);printf(\n\t\t*********************************************\t\t\n);printf(\t\t\t请输入选择所要操作(0-3):);scanf(%d,&c);system(cls);广东工业大学实验报告自动化学院网络工程专业11(3)班学号3111001381姓名何宇航成绩评定_______教师签名钟灵实验2题目作业调度课程名称操作系统17}while(c0||c3);switch(c){case0:exit(0);break;case1:Select=1;break;case2:Select=2;break;case3:Select=3;break;default:break;}}voidsort()/*建立对进程进行优先级排列函数*/{JCB*first,*second,*temp;intinsert=0;switch(Select){case1:/*先来先去服务算法*/if(ready==NULL)/*队首空插入队首*/{p-link=ready;ready=p;}else/*否则插入队尾*/{first=ready;second=ready-link;while(second!=NULL){first=first-link;second=second-link;}first-link=p;}break;case2:/*最短作业优先算法*/if((ready==NULL)||((p-ntime)(ready-ntime)))/*队首*/{p-link=ready;ready=p;}else/*往后搜索适当的位置插入*/{first=ready;second=first-l

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功