您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 44操作系统实验报告
操作系统实验报告学院___计算机学院____专业___软件工程_班级06级3班学号3206007034姓名陈晓梨指导教师胡欣如(2008年12月)计算机学院软件工程专业06级3班学号:3206007034姓名:陈晓梨协作者:________教师评定:考勤情况程序运行情况程序质量实验技能创新精神实验报告设计文档实验__一__题目__进程调度_______第周星期实验__二__题目__作业调度_______第周星期实验__三(综合性)题目__主存空间的分配与回收_第周星期实验__四_题目_文件系统_第周星期实验平台:(宋体5号字)1、计算机及操作系统:Windowsxp2、编程环境:vc++6源程序名和可执行程序名:实验一:1.cpp;1.exe(宋体5号字)实验二:2.cpp,2.exe实验三(综合性):3.cpp,3.exe实验四:4.cpp,4.exe备注:(宋体5号字)学号:3206007034姓名:陈晓梨协作者:________实验__一__题目__进程调度___第周星期___一、实验目的进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具体实施办法。二、实验内容和要求设计一个有N个进程共行的进程调度程序。进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC或兼容机软件环境:VC++6编程环境四、实验原理及设计方案1、实验原理;假设系统有5个进程,每个进程用一个进程控制块PCB来代表。为每个进程任意确定一个要求运行时间和到达时间。按照进程到达的先后顺序排成一个循环队列。再设一个队首指针指向第一个到达进程的首址。执行处理机调度时,开始选择队首的第一个进程运行。另外,再设一个当前运行进程的指针,指向当前正在运行的进程。进程运行一次后,估计运行时间减一,输出当前运行进程的名字进程运行一次后,以后的调度则将当前指针依此下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行,若该进程的剩余运行时间为零,则将该进程的状态置为完成态C,并退出循环队列。若就绪队列不空,则重复上述的(5)和(6)步骤直到所有的进程都运行完为止。在所设计的调度程序中,应包含显示或打印语句。显示或打印每次选中的进程的名称及运行一次后队列的变化情况。2、设计方案(1)设计一个有N个进程共行的进程调度程序。每个进程由一个进程控制块PCB表示。进程控制块包括以下信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等。(2)本调度程序用时间片轮转算法。(3)编写程序并调试运行。3、相关数据结构的说明本程序采用优先数算法对N个进程进行调度。每个进程处于R,就绪W和完成F三种状态之一,并假定起始状态就是就绪状态W。structpcb/*创建PCB*/{charname[10];/*进程标识*/charstate;/*进程状态*/intntime;/*进程运行时间*/intrtime;structpcb*link;/*链指针*/}*ready=NULL,*p;typedefstructpcbPCB;4、程序流程图5、实验的核心代码(少量),并附有注释,代码部分分成两栏(字号小五)/***********************插入进程队列***********************/voidinitp(){PCB*first,*second;if(ready==NULL){p-link=ready;ready=p;}else{first=ready;second=first-link;while(second!=NULL){first=first-link;second=second-link;}first-link=p;}}/*********************建立进程就绪函数***************************/voidrunning(inttpit){intk=0;while((ktpit)&&(p-rtimep-ntime)){(p-rtime)++;k++;}if(p-rtime==p-ntime)destroy();else{p-state='W';initp();}}五、实验结果及分析1、运行结果(要求截图)(能动态说明执行结果)简单轮转法2、实验结果的分析及说明在操作系统中,由于进程总数多于处理机,它们必然竞争处理机。进程调度的功能就是按一定策略、动态地把处理机分配给处于就绪队列中的某一进程并使之执行。根据不同的系统设计目标,可有多种选择某一进程的策略。例如系统开销较少的静态优先数法,适合于分时系统的轮轮法以及UNIX采用的动态优先数反馈法等。本实验是采用优先数法进程调度算法来模拟演示进程调度,编程语言为C语言。六、调试总结及心得体会先模拟建立进程就绪链表----置所有进程的到达时间均为0,依PCB链接顺序从第一个进程PCB开始,使进程编号依次为0,1,2,3,4……;就绪链表中进程的数量,由常量num控制;再模拟建立调度函数--------取表头PCB,修改进程执行时间,得到的新时间,即为剩余执行时间,当剩余时间小于或等于0时,将此进程的PCB取出,依完成的先后次序链到完成链表中,记录当前完成进程的完成时间,同时修改就绪链表表头;最后计算和打印里程调度信息-----计算出各进程周转时间及所有进程的平均周转时间。心得体会由于网上给出了最高优先数优先的算法,所以照猫画虎,写轮转法起来也很容易不同的算法原理不同,但实现起来确是很像的实验难点主要在于对于算法原理的理解,理解了原理做起程序来很快第一次实验比较简单,没什么好说的。七、思考题1、分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围。先来先服务法先提交的作业先运行,运行一个之后再轮到下一个这种算法实现简单,但是响应不及时,适用于交互性要求不高的系统轮转法轮转法规定由各个准备就绪进程顺次轮流使用CPU,而且每一次使用的时间一般规定为一定值当时间片结束时,就强迫一个现行进程出让CPU。轮转法实现也较简单,而可以保证不会有进程长期得不到响应,缺点是无法照顾到一些特殊进程,早期分时系统采用的就是简单轮转法。最高优先数优先法为每一个进程设置一个优先数,CPU调度时每次选择就绪进程中优先数最大者,让它占用CPU运行。优先数法可划分成静态优先数法和动态优先数法两种:静态优先数法在创建进程时就已确定了该进程的优先数,并且在进程运行的整个过程中该优先数不再动态地改变,那么这种优先数的确定方法便称为静态优先数法。采用静态优先数法简单,而且实现比较容易,但太死板,且适用范围也较小。另外,采用静态优先数法可能会使某些低优先数的进程无限期地等待CPU,不能准确地反映出系统以及进程在运行过程中不断变化的特性。随着进程的推进,进程的许多与优先数确定相关的因素也都将随之发生变化。动态优先数法按照变化着的情况对各个进程的优先数不断适时地做出调整。从以上可以看出该算法优点是即保证了不会有进程长期等待,也能照顾到特殊进程,缺点是每次需重新计算进程优先级,占用较多资源。适用于性能较好的分时系统。学号:3206007034姓名:陈晓梨协作者:________实验__二_题目__作业调度___第周星期___一、实验目的作业管理是用户与操作系统的接口。作业调度的主要功能是检查系统是否能满足用户作业的资源要求以及按照一定的算法选取作业。本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。二、实验内容和要求编写并调试一个单道处理系统的作业等待模拟程序。作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC或兼容机软件环境:VC++6编程环境四、实验原理及设计方案1、实验原理;由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。作业调度算法:1.先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。2.最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。3.响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。作业调度算法总体分析:1.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。2.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。3.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。2、设计方案1、建立3个子函数对应3种算法,在主函数中调用它们并按格式输出相关信息;2、按调度顺序输出作业,输出格式为:作业编号、作业名、提交时间、运行时间、存储空间、等待时间等;3、相关数据结构的说明structjcb{charname[10];/*作业名*/charstate;/*作业状态*/intts;/*提交时间*/floatsuper;/*优先级*/inttb;/*开始运行时间*/inttc;/*完成时间*/floatti;/*周转时间*/floatwi;/*带权周转时间*/intntime;/*作业所需运行时间*/charresource[10];/*所需资源*/structjcb*link;/*结构体指针*/}*p,*q,*head=NULL;4、程序流程图5、实验的核心代码(少量),并附有注释,代码部分分成两栏(字号小五)voidfcfs(intm){//先来先服务inti,iden;printf(\n\n作业正在运行...);for(i=0;in;i++){p=head;iden=1;do{if(p-state=='W'&&p-ts=time)iden=0;if(iden)p=p-link;}while(p!=NULL&&iden);if(iden){i--;printf(\ntime=%d:\t没有作业提交...等待中...,tim
本文标题:44操作系统实验报告
链接地址:https://www.777doc.com/doc-4076106 .html