1 / 12
文档名称:

处理机管理实验报告.doc

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

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

分享

预览

处理机管理实验报告.doc

上传人:ffy51856fy 2019/6/11 文件大小:287 KB

下载得到文件列表

处理机管理实验报告.doc

文档介绍

文档介绍:实验报告课程名称:操作系统实验名称:处理机管理学号:学生姓名:班级:指导教师:评分:实验日期:2012年 11月 19日1、实验目的:在多道程序或多任务系统中,系统同时处于就绪态的进程有若干个,也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊地运行,必须选择某种调度策略,以选择一进程占用处理机。设计模拟单处理机调度的算法,巩固和加深处理机调度的概念。2、实验要求(1)设计一个按优先级调度的算法(2)按时间片轮转法进行CPU调度3、实验环境硬件:CPU:AMDQL64内存:2GB显卡:ATI4570硬盘:日立250G软件:Windows2000/XP。开发工具:VC++。4、实验内容1)实现原理(1)设计一个按优先级调度的算法进程的优先数由用户自己指定或程序任意设定,且优先级数越低,优先级越高。调度时,总是选择优先级最高的进程运行。为了调度方便,设计一个指针指向5个进程排成的就绪队列的第一个进程,另外再设计一个当前运行进程指针,指向当前正运行的进程。为了采用动态优先级调度,进程每运行一次,其优先级减1。进程运行最后一次,若剩余的运行时间部位0,且优先级低于就绪队列的进程的优先级,则选择一个高优先级进程抢占CPU;若剩余时间为0,则把它的状态改为完成状态(C),并撤出就绪队列。若就绪队列部位空,则重复以上操作,直到所有进程为完成状态。在所涉及的程序中,应有显示或打印语句,以显示或打印每次被选中进程的进程名以及运行一次后进程的变化,就绪队列中的个进程排队情况等。为5个进程任意确定一组“优先级”和“要求运行时间”,启动处理机调度程序,显示或打印为此选中的进程名以及进程控制块的动态变化过程:包括进程已运行时间,剩余时间,就绪队列中的进程等。优先级调度算法:按照进程的优先级大小来调度。使高优先级进程或线程得到优先的处理的调度策略称为优先级调度算法。进程的优先级可以由系统自动地按一定原则赋给它,也可由系统外部来进行安排但在许多采用优先级调度的系统中,通常采用动态优先数策略。即一个进程的优先级不是固定的,往往是随许多因素的变化而变化。尤其随作业(进程)的等待时间,已使用的处理器时间或其他系统资源的使用情况而定,以防止低优先级进程或线程长期饥饿现象发生时间片轮转算法:时间片轮转算法主要用于处理器调度。采用此算法的系统,其进程就绪队列往往按进程到达的时间来排序。进程调度程序总是选择就绪队列中的第一个进程,也就是说按照先进先出原则调度,但一旦进程占有处理器仅使用一个时间片,在使用完一个时间片后,进程还没有完成其运行,它也必须释放出(被抢占)处理器给下一个就绪的进程。而被抢占的进程返回到就绪队列的末尾重新排队等候再次运行。(2)按时间片轮转法进行CPU调度。编写并调试一个模拟的进程调度程序,采用“简单时间片轮转法”进行CPU调度。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已运行时间、进程状态等等。进程的到达时间及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(Wait)、运行R(Run)两种状态之一。就绪进程获得CPU后都只能运行一个时间片。用运行时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。进程调度算法:采用多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行。2)程序结构定义结构体PCB描述进程的进程控制块,定义数组PCBpcb[Max]存放进程进程调度程序调用face()函数选择所要进行的操作。输入1则增加进程并调度进程,输入2则打印进程,输入0则任务结束增加进程,调用AddProcess()函数,将输入的进程存放在数组pcb[Max]中打印进程,调用print()函数,在该函数中首先调用sort()函数对进程按优先级和先来先服务排序,然后显示输出排序后的进程进程调度,调用attemper()函数,调度优先级最高的进程分配给CPU使之运行一个时间片进程优先级排序,调用sort()函数,按照先来