版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1、课程设计目的32、课程设计要求33、相关知识34、需求分析45、概要设计56、详细设计67、测试,修改及运行结果138、参考文献159、结束语1510、附件151、 课程设计的目的理解操作系统进程管理中进行进程调度的过程和编程方法,掌握先来先服务调度算法和最高优先数优先的调度算法,创建进程控制块PCB。理解进程的状态及变化,动态显示每个进程的当前状态及进程的调度情况 2、 课程设计要求 编写一个进程调度程序,允许多个进程共行的进程调度程序 1).进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。2).每个进程有一个进程控制块( PCB)表示
2、。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等.3).进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。4)进程的运行时间以时间片为单位进行计算。5).每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。. 6).就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 7).如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就
3、是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。8).每进行一次调度程序都打印一次运行进程、就绪队列、以及 各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止3、 相关知识进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动 进程的状态:运行状态:进程正在处理器上运行 就绪状态:一个进程获得了除处理器外的一切所需资源,一旦得到处理器即可运行 等待状态:一个进程正在等待某一事件发生而暂时停止运行 先进先出调度算法:其基本原则是按照作业到达系统或进程进入就绪对列的先后次序来选择。对于进程调度来说,一旦一个进程占有了处
4、理器,它就一直运行下去,直到该进程完成其工作或者因等待事件而不能继续运行时才释放出处理器。优先级调度算法:按照进程的优先级大小来调度。使高优先级进程或线程得到优先的处理的调度策略称为优先级调度算法。进程的优先级可以由系统自动地按一定原则赋给它,也可由系统外部来进行安排但在许多采用优先级调度的系统中,通常采用动态优先数策略。即一个进程的优先级不是固定的,往往是随许多因素的变化而变化。尤其随作业(进程)的等待时间,已使用的处理器时间或其他系统资源的使用情况而定,以防止低优先级进程或线程长期饥饿现象发生时间片轮转算法:时间片轮转算法主要用于处理器调度。采用此算法的系统,其进程就绪队列往往按进程到达的
5、时间来排序。进程调度程序总是选择就绪队列中的第一个进程,也就是说按照先进先出原则调度,但一旦进程占有处理器仅使用一个时间片,在使用完一个时间片后,进程还没有完成其运行,它也必须释放出(被抢占)处理器给下一个就绪的进程。而被抢占的进程返回到就绪队列的末尾重新排队等候再次运行。4、 需求分析进程调度程序选择一个就绪状态的进程,使之在处理器上运行,每个进程的状态信息用数据结构(进程控制块PCB)表示,进程的调度采用最高优先数优先的调度算法和先来先服务调度算法相结合的算法,并且采用动态优先数策略,选择进程占用处理器后该进程仅能使用一个时间片,运行完后优先数减15、 概要设计进程控制块:描述进程的状态信
6、息,用结构体定义typedef struct process char name10; /进程名int priority; /优先数Time ReachTime; /到达时间Time NeedTime; /需要运行时间Time UsedTime; /已用时间char state; /进程状态PCB; /进程控制块进程调度模拟程序进程调入AddProcess()函数打印进程print()函数进程调度attemper()函数选择操作face()函数进程优先级排序sort()函数图1.进程调度模拟程序模块图算法思想:定义结构体PCB描述进程的进程控制块,定义数组PCB pcbMax存放进程进程调度程
7、序调用face()函数选择所要进行的操作。输入1则增加进程并调度进程,输入2则打印进程,输入0则任务结束增加进程,调用AddProcess()函数,将输入的进程存放在数组pcbMax中打印进程,调用print()函数,在该函数中首先调用sort()函数对进程按优先级和先来先服务排序,然后显示输出排序后的进程进程调度,调用attemper()函数,调度优先级最高的进程分配给CPU使之运行一个时间片进程优先级排序,调用sort()函数,按照先来先服务和优先级排序,使排序完最优先运行的进程存放在pcb0中。6、 详细设计开始 设置时间片 选择 结束进程增加进程 是 打印进程继续增加 结束 否打印进程
8、优先级排序 进程调度 完成 真图2.程序设计流程图开始 i=0j=n-2i=0pcbj+1.prioritypcbj.priorityj=n-2pcbj+1.ReachTime=ij=j-1 Yj=i i=i+1 Y Ni=i+1 N in-1in-1 Y结束 Y N N图3.sort( )函数流程图sort( )函数:函数用冒泡法排序,首先按到达时间排序,使到达时间最早(即pcbn.ReachTime最小)的进程被交换到pcb0中,再按优先级排序,使具有最高优先级(即pcbn.priority最大)的进程被交换到pcb0中。相同优先级的进程只按到达时间排序 主要代码如下:for (i=0;i
9、=i;j-) if (pcbj+1.ReachTimepcbj.ReachTime) temp=pcbj; pcbj=pcbj+1; pcbj+1=temp; for (i=0;i=i;j-) if (pcbj+1.prioritypcbj.priority) temp=pcbj;pcbj=pcbj+1;pcbj+1=temp; 开始 开始 输入pcbn 进程信息sort()排序n=n+1i=0继续增加进程输出pcbi进程信息ch=getchar()i=i+1ch!=Y&ch!=N&ch!=y&ch!=nin Y Y 结束ch=Y|ch=y N N Y N 结束 图4.print( )函数 图
10、5. AddProcess()函数print( )函数: 打印函数,先调用sort()排序函数对进程进行排序,排序完再打印输出进程主要代码如下: sort();printf(n 进程名 优先级 到达时间 需要时间 已用时间 进程状态 n);for (i=0;ipTime Y Npcb0.UsedTime=pcb0.NeedTimepcb0.priority=-1000pcb0.state=Fpcb0.UsedTime+=pTimepcb0.prioritypcb0.state=W print()打印pcb0.state!=F结束 N Y图6.attemper( )函数attemper( )函数
11、:进程调度函数,调度排完序后存放在pcb0中的进程,分配给该进程CPU,使之运行一个时间片,然后比较进程的剩余时间(pcb0.NeedTime-pcb0.UsedTime)是否小于时间片的大小pTime,若是,则该进程调度完成,进程处于完成状态,若非,则已用时间加上一个时间片,进程处于就绪状态继续等待运行,然后调用print( )函数打印输出当前进程的状态并排序,直至所有进程处于完成状态后结束运行主要代码如下: do if (pcb0.NeedTime-pcb0.UsedTime)pTime) pcb0.UsedTime+=pTime;/已用时间加时间片 pcb0.priority-;/优先级
12、减一 pcb0.state=W; else pcb0.UsedTime=pcb0.NeedTime;/已用时间等于需要时间 pcb0.priority=-1000;/优先级置为零 pcb0.state=F;/完成进程,将状态置为完成 print(); while(pcb0.state!=F);开始 增加进程并调度进程,请按1打印进程,请按2任务结束, 请按0请选择:choose=getchar()choose!=1&choose!=2&choose!=0 Yreturn choose N结束图7.face( )函数face( )函数:函数打印所能进行的操作以供选择。输入1则是增加进程后调度进程
13、,输入2则是打印进程,输入0则是任务结束。主要代码如下:char choose; printf(n增加进程并调度进程,请按1); printf(n打印进程,请按2); printf(n任务结束, 请按0); printf(n请选择:); do choose=getchar(); while(choose!=1&choose!=2&choose!=0); return choose;开始 n=0; 设置时间片的大小pTimechoose=face()choose= =1 Y NAddProcess();print();attemper();choose= =2 Y Nreturnprint();
14、真图8.main( )函数main( )函数:首先设置时间片的大小pTime,然后调用face()函数选择要进行的操作,choose=1则增加进程并调度,choose=2则打印进程,choose=0则任务结束。主要代码如下:char choose; n=0; /初始化进程数为0 printf(设置时间片的大小:); scanf(%d,&pTime); choose=face(); do if (choose=1) AddProcess(); print(); attemper(); if (choose=2) print(); if (choose=0) return; choose=face
15、(); while(1);函数间的关系:1)sort( )函数嵌套在print()函数中调用 2)调用AddProcess()函数前必须先调用print()函数对进程进行排序并打印 7、 测试,修改及运行结果 测试过程如上所述,分析得知,进程的调度正确 8、 参考文献操作系统基础(第三版)屠祁 屠立德等编著清华大学出版社2000.9Helen Custer著.Windows NT技术内幕 程渝荣译 北京:清华大学出版社,1993Andrew S.Tanenbaum,Albert S.Woodhull.操作系统设计及实现(第二版) 北京:清华大学出版社,19989、 结束语 通过这次课设加深了我
16、对操作系统的认识,进一步了解了进程调度的过程,在老师的指导下,对进程模拟程序做了进一步的改进,并且学会了怎么分析问题和解决问题10、 附件程序清单#include #define Time int#define Max 100typedef struct process char name10; /进程名 int priority; /优先数 Time ReachTime; /到达时间 Time NeedTime; /需要运行时间 Time UsedTime; /已用时间 char state; /进程状态PCB; /进程控制块int n; /标示进程的总数PCB pcbMax;int pTi
17、me; /时间片大小void AddProcess() char ch; do printf(n请输入进程名); scanf(%s,); printf(请输入进程的优先级); scanf(%d,&pcbn.priority); printf(请输入进程需要的时间); scanf(%d,&pcbn.NeedTime); pcbn.ReachTime=n; pcbn.UsedTime=0; pcbn.state=W; n+; printf(还要继续增加进程吗,是(Y),否(N); do ch=getchar(); while(ch!=Y&ch!=N&ch!=y&ch!=n); w
18、hile (ch=Y|ch=y);/ 排序函数,将最先运行的进程放在最先即pcb0void sort() /用冒泡排序 int i,j; PCB temp; /先按到达时间排序for (i=0;i=i;j-)if (pcbj+1.ReachTimepcbj.ReachTime)temp=pcbj;pcbj=pcbj+1;pcbj+1=temp; /再按优先级进行排序for (i=0;i=i;j-)if (pcbj+1.prioritypcbj.priority)temp=pcbj;pcbj=pcbj+1;pcbj+1=temp;if (pcb0.state!=F)pcb0.state=R; /将优先级最高的状态置为运行void print() /打印 int i; sort(); printf(n 进程名 优先级 到达时间 需要时间 已用时间 进程状态 n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026新疆人才集团总部及二级企业面向内外部公开招聘(12人)笔试备考试题及答案解析
- 2026山东威海市乳山市人民医院招聘急需紧缺专业人才6人考试参考题库及答案解析
- 2026年安徽某国企地铁维保人员招聘50名笔试模拟试题及答案解析
- 中国建筑内部管理制度
- 小学校园内部巡逻制度
- 宝洁内部提拔用人制度
- 县林业局内部管理制度
- 企业内部巡察工作制度
- 律师事务所内部风控制度
- 微小企业内部管理制度
- 第一章 组织工程学-概述
- 211和985工程大学简介PPT
- 【基于7P理论的汉庭酒店服务营销策略14000字(论文)】
- 初中数学:《二次根式》大单元教学设计
- 分清轻重缓急
- 山东大学核心期刊目录(文科)
- 2023年医技类-康复医学治疗技术(中级)代码:381历年考试真题(易错、难点与常考点摘编)有答案
- 噪声及振动环境课件
- GB/T 37140-2018检验检测实验室技术要求验收规范
- 复测分坑作业指导书
- 一二次深度融合成套柱上断路器汇报课件
评论
0/150
提交评论