您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 2015广工操作系统实验报告(文档最后含源码下载地址)
操作系统实验报告学生学院____计算机学院______专业班级13级计科9学号学生姓名指导教师李敏2015年12月29日成绩实验一进程调度实验一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二、实验内容和要求设计一个有N个进程共行的进程调度程序。要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程),时间片轮转算法,多级反馈队列调度算法这三种算法。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC或兼容机软件环境:C++、C语言编程环境四、实验方法1、编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。2、编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。简单轮转法的基本思想是:所有就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。3、多级反馈队列调度算法的基本思想是:当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。五、程序流程图(一个实验有多个算法的应该分别给出)1、“最高优先数优先”调度算法(已在模板中给出)2、“轮转法”调度算法3、多级反馈队列调度算法六、各程序之间的调用关系1、“最高优先数优先”调度算法(已在模板中给出)2、“轮转法”调度算法3、多级反馈队列调度算法七、重要数据结构或源程序中疑难部分的说明,需附详细注释1、“最高优先数优先”调度算法(已在模板中给出)2、“轮转法”调度算法typedefstructpcb{charname[10];//进程名inttime;//进程的总时间intruntime;//进程已经占用的cpu时间intneedtime;//进程还需要的时间charstate;//进程运行状态:w(wait)orr(runing)structpcb*next;}pcb,*PCB;3、多级反馈队列调度算法typedefstructpcb{charname[10];//进程名inttime;//进程的总时间intruntime;//进程已经占用的cpu时间intneedtime;//进程还需要的时间charstate;//进程运行状态:w(wait)orr(runing)structpcb*next;}pcb,*PCB;typedefstructqueue{charname[10];inttimeSlice;//时间片的大小PCBmPcb;structqueue*next;}queue,*QUEUE;八、程序运行结果1、“最高优先数优先”调度算法(已在模板中给出)2、“轮转法”调度算法测试数据:进程名进程所需时间时间片aa32bb42cc52dd62ee723、多级反馈队列调度算法测试数据:队列名时间片QueueA2QueueB4QueueA8进程名进程所需时间aa3bb4cc5dd6ee7九、结果分析与实验小结通过实验可知,“最高优先数优先”调度算法是通过最高优先数来排列进程的执行顺序,可以满足普遍的进程,但缺点较大,可能出现优先级低的进程长期无法执行。“轮转法”调度算法则是规定每个进程在规定的时间片内运行进程,可以使进程非常公平地执行,但若出现优先级较高的程序则无法优先执行。多级反馈队列调度算法则是通过较好地满足各种类型进程的需要来分配进程调度,是目前公认的一种比价好的进程调度算法。实验二作业调度一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。二、实验内容和要求1、为单道批处理系统设计一个作业调度程序1)编写并调试一个单道处理系统的作业等待模拟程序。2)作业调度算法:分别采用先来先服务(FCFS)、最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。3)由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。4)每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。5)对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺点。1、模拟批处理多道操作系统的作业调度1)编写并调试一个作业调度模拟程序。2)作业调度算法:分别采用先来先服务(FCFS)和短作业优先调度算法。3)在批处理系统中,要假定系统中具有的各种资源及数量,调度作业时必须考虑到每个作业的资源要求,所需要的资源是否得到满足。作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。但有时系统中现有的尚未分配的资源即可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在这些作业中作出选择。当作业正常运行完毕或因发生错误非正常终止时,作业进入完成状态,此时,系统将收回该作业所占用的全部资源,并清除有关的JCB。并输出显示作业运行情况及作业输出结果。三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC或兼容机软件环境:C++、C语言编程环境四、实验方法1、编写并调试一个单道处理系统的作业等待模拟程序。假设在单道批处理环境下有四个作业JOB1、JOB2、JOB3、JOB4,已知它们进入系统的时间、估计运行时间。分别采用先来先服务(FCFS)、最短作业优先(SJF)、响应比高者优先(HRN)的调度算法,计算出作业的平均周转时间和带权平均周转时间。五、程序流程图(一个实验有多个算法的应该分别给出)1.1单道先来先服务算法1.2单道短作业优先算法1.3单道高相应比优先调度算法2.1多道先来先服务算法2.2多道短作业优先算法六、各程序之间的调用关系(1)单道作业调度(2)多道作业调度七、重要数据结构或源程序中疑难部分的说明,需附详细注释(1)单道作业调度typedefstructjcb{charname[10];//作业名intstartTime;//开始时刻intneedTime;//所需时间intfinishTime;//完成时刻intperiod;//周转时间floatwPeriod;//带权周转时间floatrp;//相应比:(等待时间+要求服务时间)/要求服务时间charstate;//状态structjcb*next;//下一个指针}jcb,*JCB;(2)多道作业调度typedefstructjcb{charname[10];//作业名intstartTime;//开始时刻intneedTime;//所需时间intfinishTime;//完成时刻intneedMemory;//所需内存intneedSource;//所需资源(磁带机台数)charstate;//状态structjcb*next;//下一个指针}jcb,*JCB;八、程序运行结果1.单道调度(1)单道先来先服务算法测试数据:JOB13JOB29JOB32JOB48(2)单道短作业优先算法测试数据:JOB120JOB249JOB325JOB467(3)单道高相应比优先调度算法测试数据:JOB14JOB29JOB35JOB472.多道调度注:测试数据均来自实验要求提供的数据,主存是100,磁带机是10(1)多道先来先服务算法(2)多道短作业优先算法九、结果分析与实验小结通过本实验,在进行单道作业调度时,我们采用了三种调度算法,分别是FCFS算法,SJF算法和HRRN算法,这几个算法都有各自的优点,FCFS算法是针对顺序作业队列的,而SJF算法则是对短作业算法优先执行,HRRN算法是综合了两个的考虑,来进行平衡。在多道作业调度过程中,则不仅要考虑所需时间,更要考虑所需内存和资源,因为在多道作业调度中,各个作业是并发执行的,所以当一个作业调度完成后,将会释放资源和内存,从而满足其他作业的调度。通过这个实验,我感觉FCFS算法是作业调度的基础,而其他算法则是建立在它的基础中不断优化的算法。实验三存储管理实验一、实验目的1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。2、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二、实验内容和要求设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得50%的指令是顺序执行的。25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。为简单起见。页面淘汰算法采用FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。具体的做法可以是:产生一个需要访问的指令地址流;指令合适的页面尺寸(例如以1K或2K为1页);指定内存页表的最大长度,并对页表进行初始化;每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不在主存且页表已满,则按FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC或兼容机软件环境:C++、C语言编程环境四、实验方法、步骤及结果测试1、设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。2、设计一个可变式分区分配的存
本文标题:2015广工操作系统实验报告(文档最后含源码下载地址)
链接地址:https://www.777doc.com/doc-3395177 .html