- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态优先权进程调度算法模拟实验报告.doc
华北电力大学
实 验 报 告
实验名称 动态优先权进程调度算法模拟
课程名称 计算机操作系统
专业班级: 学生姓名:
学 号: 成 绩:
指导教师: 实验日期:
一﹑实验目的:
通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。
二﹑实验内容:
(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。
(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:
进程标识数ID。
进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。
进程已占用CPU时间CPUTIME。
进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。
进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。
进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。
进程状态STATE。
队列指针NEXT,用来将PCB排成队列。
(3)优先数改变的原则:
进程在就绪队列中呆一个时间片,优先数增加1。
进程每运行一个时间片,优先数减3。
(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。
(5)分析程序运行的结果,谈一下自己的认识。
三、设计思路和方法
通过VC++程序模拟动态优先权程序调度算法,主要思路和方法就是,通过结构体模拟计算机的控制模组,构造一个PCB结构体即进程控制块结构体,用来记录当前进程的的相关状态信息,包括进程标识符、处理机状态、进程调度信息、进程控制信息。并通过C++语言模拟计算机的相关调度算法,对构建的PCB进程进行模拟调度和运行,从而实现用计算机对进程的调度过程进行过程仿真。
四、数据结构和算法
数据结构:
包含PCB信息的结构体
包含进程信息的顺序表结构
算法:
优先权=(等待时间+要求服务时间)/要求服务时间
Rp=(等待时间+要求服务时间)/要求服务时间=相应时间/要求服务时间
系统将所有就绪队列按优先级高低排成一个队列,每次调度时,将CPU分配给优先级最高的进程,并令其执行一个时间片,而后中断,寻找并运行下一个优先级最高的进程。而所有进程的优先权在随进程的推进或随其等待时间的增加而增加,而被调度之后的程序则降低一定的优先级,从而使所有进程都有运行的机会,从而保证系统能在给定的时间内响应所有用户的请求。
五﹑程序代码和输出
1 程序代码如下
#include iostream.h
#include windows.h
//#define N 3
typedef struct{
int ID;
int PRIORITY;
int CPUTIME;
int ALLTIME;
int 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,server[10],sum=0;
PROCESS pro[10];
textcolor(13);
cout注意:本程序中状态代表如下endl0-运行 1-阻塞 2-就绪 3-结束 4-未到达endlendl;
textcolor(15);
cout请输入进程数:;
cinN;
cout请设置时间片长度:;
cintime;
cout请输入各进程初始状态:endl;
coutID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIMEendl;
for(i=0;iN;i++){
pro[i].CPUTIME=0;
pro[i].TIME=0;
cinpro[i].IDpro[i].PRIORITYpro[i].REACH;
cinpro[i].ALLTIMEpro[i].STARTBLOCKpro[i].BLOCKTIME;
server[i]
您可能关注的文档
最近下载
- 成本会计学第9版张敏.pdf VIP
- 公路养护日常小修保养施工组织设计 附公路隧道施工技术规范.doc VIP
- 国家开放大学电大《组织行为学》机考终结性2套题库及答案.doc VIP
- 2024秋国开一网一 微积分大作业word版答案.docx VIP
- 湛江市麻章区数学小升初数学试卷.doc VIP
- 《好利来食品盈利能力研究》文献综述3000字.docx VIP
- 学校安保服务投标方案(技术方案).doc
- 广东省湛江市麻章区2023年小升初数学试卷(含答案).pdf VIP
- 四川大学《微机原理与接口技术》2022-2023学年第一学期期末试卷.pdf VIP
- 海浦蒙特COOL100炫系列别墅电梯控制柜用户手册-中-V1.2.pdf VIP
文档评论(0)