ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.67KB ,
资源ID:16214791      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16214791.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(动态优先权进程调度算法模拟实验报告.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

动态优先权进程调度算法模拟实验报告.docx

1、动态优先权进程调度算法模拟实验报告华北电力大学实 验 报 告 实验名称 动态优先权进程调度算法模拟 课程名称 计算机操作系统 专业班级: 学生姓名: 学 号: 成 绩:指导教师: 实验日期: 一实验目的:通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。二实验内容:(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段: 进程标识数ID。 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。 进程已占用CPU时间CPUTIME。 进程还需占用的CPU时间A

2、LLTIME。当进程运行完毕时,ALLTIME变为0。 进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。 进程状态STATE。 队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则: 进程在就绪队列中呆一个时间片,优先数增加1。 进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运

3、行的结果,谈一下自己的认识。三、设计思路和方法通过VC+程序模拟动态优先权程序调度算法,主要思路和方法就是,通过结构体模拟计算机的控制模组,构造一个PCB结构体即进程控制块结构体,用来记录当前进程的的相关状态信息,包括进程标识符、处理机状态、进程调度信息、进程控制信息。并通过C+语言模拟计算机的相关调度算法,对构建的PCB进程进行模拟调度和运行,从而实现用计算机对进程的调度过程进行过程仿真。四、数据结构和算法数据结构:1. 包含PCB信息的结构体2. 包含进程信息的顺序表结构算法: 优先权=(等待时间+要求服务时间)/要求服务时间 Rp=(等待时间+要求服务时间)/要求服务时间=相应时间/要求

4、服务时间系统将所有就绪队列按优先级高低排成一个队列,每次调度时,将CPU分配给优先级最高的进程,并令其执行一个时间片,而后中断,寻找并运行下一个优先级最高的进程。而所有进程的优先权在随进程的推进或随其等待时间的增加而增加,而被调度之后的程序则降低一定的优先级,从而使所有进程都有运行的机会,从而保证系统能在给定的时间内响应所有用户的请求。五程序代码和输出1 程序代码如下#include iostream.h#include windows.h/#define N 3typedef struct int ID; int PRIORITY; int CPUTIME; int ALLTIME; int

5、 STARTBLOCK; int BLOCKTIME; int STATE;/0-运行 1-阻塞 2-就绪 3-结束 4-未到达 int REACH; int TIME;PROCESS;void textcolor (int color) SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color );void main() int i,time,max,l,l1,time1,flag=0,total=0,N,server10,sum=0; PROCESS pro10; textcolor(13); cout注意:本程序中状

6、态代表如下endl0-运行 1-阻塞 2-就绪 3-结束 4-未到达endlendl; textcolor(15); coutN; couttime; cout请输入各进程初始状态:endl; coutID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIMEendl; for(i=0;iproi.IDproi.PRIORITYproi.REACH; cinproi.ALLTIMEproi.STARTBLOCKproi.BLOCKTIME; serveri=proi.ALLTIME; if(proi.REACH=0) proi.STATE=0; else pr

7、oi.STATE=4; do coutendl当前时刻为:total; textcolor(12); coutendl=各进程状态为=endl; textcolor(15); coutID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATEendl; for(i=0;iN;i+) coutproi.ID proi.PRIORITY proi.CPUTIME ; coutproi.ALLTIME proi.STARTBLOCK proi.BLOCKTIME proi.STATE; coutendl; total+=time; for(i=0;i

8、N;i+) if(proi.STATE=4&proi.REACHtotal) proi.STATE=1; for(i=0;iN;i+) time1=proi.ALLTIME; if(proi.STATE=0) if(proi.ALLTIME=time) /proi.CPUTIME+=time1; proi.ALLTIME=0; proi.STATE=3; proi.TIME=total-time+time1; else /proi.CPUTIME+=time; proi.ALLTIME-=time; proi.STARTBLOCK-; if(proi.STARTBLOCK=0) proi.ST

9、ATE=1; proi.BLOCKTIME=time1; proi.STARTBLOCK=time1; proi.PRIORITY-=3; proi.TIME=total; if(proi.STATE=1) proi.BLOCKTIME-; if(proi.BLOCKTIME=0) proi.STATE=2; proi.TIME=total; if(proi.STATE=2) /proi.CPUTIME+=time; proi.PRIORITY+; proi.TIME=total; max=-100; l1=-1; l=-1; for(i=0;imax&(proi.STATE=0|proi.S

10、TATE=2) l=i; max=proi.PRIORITY; if(proi.STATE=0) l1=i; if(l!=-1&l!=l1) prol.STATE=0; if(l1!=-1) prol1.STATE=2; flag=0; for(i=0;iN;i+) if(proi.STATE!=3) flag=1; break; if(flag=0) break; while(1); coutendl当前时刻:total; textcolor(12); coutendl=各进程状态为=endl; textcolor(15); coutID PRIORITY CPUTIME ALLTIME S

11、TARTBLOCK BLOCKTIME STATEendl; for(i=0;iN;i+) coutproi.ID proi.PRIORITY proi.CPUTIME ; coutproi.ALLTIME proi.STARTBLOCK proi.BLOCKTIME proi.STATE; coutendl; coutendl各进程运行结束!endl; cout进程号 到达时间 结束时间 周转时间 带权周转时间endl; textcolor(10); for(i=0;iN;i+) cout proi.ID proi.REACH proi.TIME proi.TIME-proi.REACH (

12、float)(proi.TIME-proi.REACH)/serveriendl; sum+=proi.TIME-proi.REACH; cout平均周转时间为:(float)sum/Nendl; textcolor(15);2输入注意:本程序中状态代表如下0-运行 1-阻塞 2-就绪 3-结束 4-未到达请输入进程数:5请设置时间片长度:4请输入各进程初始状态:ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME1 2 3 0 1 42 6 4 0 3 12 0 3 4 5 22 1 2 4 3 41 5 2 4 5 33输出结果当前时刻为:0=各进程

13、状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 4 42 6 0 0 3 1 42 0 0 4 5 2 42 1 0 4 3 4 41 5 0 4 5 3 4当前时刻为:4=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 3 12 6 0 0 3 1 42 0 0 4 5 1 12 1 0 4 3 3 11 5 0 4 5 2 1当前时刻为:8=各进程状态为=ID PRIORITY CPUTIME ALLTIME

14、STARTBLOCK BLOCKTIME STATE1 2 0 0 1 2 12 7 0 0 3 0 02 1 0 4 5 0 22 1 0 4 3 2 11 5 0 4 5 1 1当前时刻为:12=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 1 12 7 0 0 3 0 32 2 0 4 5 0 22 1 0 4 3 1 11 6 0 4 5 0 0当前时刻为:16=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3

15、0 0 1 0 02 7 0 0 3 0 32 3 0 4 5 0 22 2 0 4 3 0 21 6 0 0 5 0 3当前时刻为:20=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 4 5 0 02 3 0 4 3 0 21 6 0 0 5 0 3当前时刻为:24=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 0

16、5 0 32 4 0 4 3 0 01 6 0 0 5 0 3当前时刻:28=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 0 5 0 32 4 0 0 3 0 31 6 0 0 5 0 3各进程运行结束!进程号 到达时间 结束时间 周转时间 带权周转时间 1 3 16 13 1.#INF 2 4 8 4 1.#INF 2 3 24 21 5.25 2 2 28 26 6.5 1 2 16 14 3.5平均周转时间为:15.6六遇到问题和体会本次试验感觉难

17、度比较大,有很多生疏的指令。但在老师和同学的帮助下都解决了。总体上还是对进程概念和进程调度过程有了一个更深的理解。在这次试验中也暴露出自己不少的缺点,希望以后试验中可以改正!本文利用C 语言对动态优先权的进程调度算法进行了设计和模拟实现。程序可实现动态的进行各个进程相关信息的录入, 如CPUTIME、ALLTIME、STARTBLOCK、BLOCKTIME 等信息。并充分考虑了进程在执行过程中可能发生的多种情况, 更好的体现了进程的就绪态、执行态、阻塞态三者之间的关系以及相互的转换。程序的运行过程清晰的体现了动态优先权的调度算法的执行过程, 有利于加深对算法的理解和掌握。由于抢占式调度算法与硬件密切相关, 由软件实现非常困难, 所以本程序实现的是非抢占式的动态优先权进程调度算法。抢占式的动态优先权进程调度算法的模拟实现有待于进一步研究。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2