最高优先数优先调度算法实验总结(共10篇)

上传人:bin****86 文档编号:60086809 上传时间:2018-11-14 格式:DOCX 页数:36 大小:30.63KB
返回 下载 相关 举报
最高优先数优先调度算法实验总结(共10篇)_第1页
第1页 / 共36页
最高优先数优先调度算法实验总结(共10篇)_第2页
第2页 / 共36页
最高优先数优先调度算法实验总结(共10篇)_第3页
第3页 / 共36页
最高优先数优先调度算法实验总结(共10篇)_第4页
第4页 / 共36页
最高优先数优先调度算法实验总结(共10篇)_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《最高优先数优先调度算法实验总结(共10篇)》由会员分享,可在线阅读,更多相关《最高优先数优先调度算法实验总结(共10篇)(36页珍藏版)》请在金锄头文库上搜索。

1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划最高优先数优先调度算法实验总结(共10篇)优先级调度算法实验报告院系:*学院班级:*姓名:*学号:*一、实验题目:优先级调度算法二、实验目的进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先级算法的具体实施办法。三、实验内容1.设计进程控制块PCB的结构,通常应包括如下信息:进程名、进程优先数、进程已占用的CPU时间、进程到完成还需要的时间、进程的状态、当前队列指针等。2.编写优先级调度算法程序3.按

2、要求输出结果。四、实验要求每个进程可有三种状态;执行状态、就绪状态和完成状态,并假定初始状态为就绪状态。进程控制块结构如下:NAME进程标示符PRIO/ROUND进程优先数NEEDTIME进程到完成还需要的时间片数STATE进程状态NEXT链指针注:1.为了便于处理,程序中进程的的运行时间以时间片为单位进行计算;2.各进程的优先数或,以及进程运行时间片数的初值,均由用户在程序运行时给定。进程的就绪态和等待态均为链表结构,共有四个指针如下:RUN当前运行进程指针READY就需队列头指针TAIL就需队列尾指针FINISH完成队列头指针五、实验结果:六、实验总结:首先这次实验的难度不小,它必须在熟悉

3、掌握数据结构的链表和队列的前提下才能完成,这次实验中用了三个队列,就绪队列,执行队列和完成队列,就绪队列中的优先级数是有序插入的,当进行进程调度的时候,需要先把就绪队列的队首节点移入执行队列中,当执行进程结束后,判断该进程是否已经完成,如果已经完成则移入完成队列,如果没有完成,重新有序插入就绪队列中,这就是这次实验算法的思想。附录:#include#include#includetypedefstructnodecharname20;/*进程的名字*/intprio;/*进程的优先级*/intcputime;/*CPU执行时间*/intneedtime;/*进程执行所需要的时间*/charst

4、ate;/*进程的状态,W-就绪态,R-执行态,F-完成态*/structnode*next;/*链表指针*/PCB;PCB*ready=NULL,*run=NULL,*finish=NULL;/*定义三个队列,就绪队列,执行队列和完成队列*/intnum;voidGetFirst();/*从就绪队列取得第一个节点*/voidOutput();/*输出队列信息*/voidInsertPrio(PCB*in);/*创建优先级队列,规定优先数越小,优先级越高*/voidInsertTime(PCB*in);/*时间片队列*/voidInsertFinish(PCB*in);/*时间片队列*/voi

5、dPrioCreate();/*优先级输入函数*/voidTimeCreate();/*时间片输入函数*/voidPriority();/*按照优先级调度*/voidRoundRun();/*时间片轮转调度*/voidmain()printf(优先数调度算法n);printf(请输入要创建的进程数目:);scanf(%d,&num);PrioCreate();Priority();Output();voidGetFirst()/*取得第一个就绪队列节点*/run=ready;if(ready!=NULL)run-state=R;ready=ready-next;run-next=NULL;计算

6、机操作系统一、设计理论描述进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。另有一种定义方法是“程序在处理器上的执行”。简单地说,进程包括三种状态:运行状态(Running)、就绪状态(Ready)、等待状态或阻塞状态(Blocked);严格地说,进程除了上面的三个状态,还有挂起就绪(Readya)和挂起等待(Blocked)等状态。进程控制块(PCB)的数据结构来记录进程的属性信息。PCB一般应包含以下信息:进程标识信息(本进程的标志ID、父进程的标志ID、用户标识);处理机状态信息(用户使用的寄存器、控制和状态寄存器、堆栈指针);进程调度和控制信息(进程的状态、进程的调度优

7、先级、程序和数据的地址、进程同步和通信机制、进程已等待时间、已使用的处理器时间、进程在有关队列中的链接指针、分给进程的主存大小和位置、进程使用的其他资源信息、进程得到有关服务的优先级、进程调度所需的其他信息)。进程调度算法:先进先出调度算法(FIFO):按照进程的到达顺序调度进程,属于不可抢占策略。优先级调度算法:按照进程的优先级大小来调度,是高优先级进程得到优先的处理的调度策略,可使用非抢占或可抢占两种策略。二、设计思想、设计分析及数据结构模型这个设计需要考虑三个问题:如何组织进程、如何创建进程和如何实现处理机调度。考虑如何组织进程,首先就要设置进程控制块的内容。进程控制块PCB记录各个进程

8、执行时的情况。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类:标识信息每个进程都要有一个唯一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。说明信息用于记录进程的基本情况,例如,进程的状态、等待原因、进程程序存放位置、进程数据存放位置等。设计中,因为进程没有数据和程序,仅使用进程控制块模拟进程,所以这部分内容仅包括进程状态。现场信息现场信息记录各个寄存器的内容。当进程由于某种原因让出处理机时,需要将现场信息记录在进程控制块

9、中,当进行进程调度时,从选中进程的进程控制块中读取现场信息进行现场恢复。现场信息就是处理机的相关寄存器内容,包括通用寄存器、程序计数器和程序状态字寄存器等。在设计中,可选取几个寄存器作为代表。用大写的全局变了量AX、BX、CX、DX模拟通用寄存器,大写的全局变量PC模拟程序计数器,大写的全局变量PSW模拟程序状态字寄存器。管理信息管理信息记录进程管理和调度的信息。例如进程优先数和进程队列指针等。设计中,仅包括队列指针。因此可将进程控制块结构定义如下:typedefstructnodecharname10;/*进程标识符*/intprio;/*进程优先数*/intcputime;/*进程占用CP

10、U时间*/intneedtime;/*进程到完成还要的时间*/charstate;/*进程的状态*/structnode*next;/*链指针*/PCB;PCB*finish,*ready,*run;/*队列指针*/intN;/*进程数*/确定进程控制块内容后,要考虑的就是如何将进程控制块组织在一起。多道程序设计系统,往往同时创建多个进程。在单处理机的情况下,每次只能有一个进程处于运行态,其他的进程处于就绪状态或等待状态。为了便于管理,通常把处于相同状态的进程的进程控制块链接在一起。单处理机系统中,正在运行的进程只有一个,因此,单处理机系统中进程控制块分成一个正在运行进程的进程控制块、就绪进程

11、的进程控制块组织成的就绪队列和等待进程的进程控制块组成的等待队列。由于设计模拟的是进程调度,没有对等待队列的操作,所以设计中只有一个指向正在运行进程的进程控制块指针和一个就绪进程的进程控制块队列指针。操作系统的实现中,系统往往在内存中划分出一个连续的专门区域存放系统的进程控制块,设计中应该用数组模拟这个专门的进程控制块区域,定义如下:#definenl0/假定系统允许进程个数为10structpcbpcbarean;/模拟进程控制块区域的数组这样,进程控制块的链表实际上是数据结构中使用的静态链表。进程控制块的链接方式可以采用单向和双向链表,设计中,进程控制块队列采用单向不循环静态链表。为了管理

12、空闲进程控制块,还应该将空闲控制块链接成一个队列。设计中指向运行进程的进程控制块指针、就绪队列指针和空闲进程控制块队列指针定义如下:intrun;/定义指向正在运行进程的进程控制块的指针inthead;Inttail;ready;/定义指向就绪队列的头指针head和尾指针tailIntpfree;/定义指向空闲进程控制块队列的指针以上是如何组织进程,下面考虑如何创建进程。进程创建是一个原语,因此在设计中应该用一个函数实现,进程创建的过程应该包括:(1)申请进程控制块。进程控制块的数量是有限的,如果没有空闲进程控制块,则进程不能创建,如果申请成功才可以执行第二步。(2)申请资源。除了进程控制块外

13、,还需要有必要的资源才能创建进程,如果申请资源不成功,则不能创建进程,并且归还已申请的进程控制块;如果申请成功,则执行第三步,设计无法申请资源,所以模拟程序忽略了申请资源这一步。(3)填写进程控制块。将该进程信息写入进程控制块内,设计中只有进程标识符、进程状态可以填写,每个进程现场信息中的寄存器内容由于没有具体数据而使用进程,刚刚创建的进程应该为就绪态,然后转去执行第四步。(4)挂入就绪队列。如果原来就绪队列不为空,则将该进程控制块挂入就绪队列尾部,并修改就绪队列尾部指针:如果原来就绪队列为空,则将就绪队列的头指针、尾指针均指向该进程控制块,进程创建完成。多道程序设计的系统中,处于就绪态的进程

14、往往是多个,它们都要占用处理机,但是,单处理机系统的处理机只有一个,进程调度就是解决这个处理机竞争问题的。进程调度的任务就是按照某种算法从就绪进程队列中选择一个进程,让它占有处理机。因此进程调度程序就应该包括两部分,一部分是在进程就绪队列中选择一个进程,并将其进程控制块从进程就绪队列中摘下来,另一部分工作就是分配处理机给选中的进程,也就是将指向正在运行进程的进程控制块指针指向该进程的进程控制块,并将该进程的进程控制块信息写入处理机的各个寄存器中。在每次运行调度程序之前,为每个进程任意确定它的“优先数”和“需要运行的时间数”,五个进程按给定的优先数从大到小连成队列,调度总是选队首进程运行。每个进程可有三种状态:R运行状态;W就绪状态和F完成状态。并假定初始状态为就绪状态。PCB结构包括以下信息:进程名、进程优先数,进程所占用的CPU时间,进程的状态,当前队列指针等。根据调度算法的不同,PCB结构的内容可以作适当的增删。PCB结构:NAME进程标识符;PRIO进程优先数;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号