- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 59
课题一:进程调度模拟
1、设计目的
通过对进程调度算法的设计,深入理解进程调度的原理,同时掌握进程调度算法的实现方法和技巧。
2、任务及要求
1.用语言来实现对n个进程采用不同调度算法的进程调度。
2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
(1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。
(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,优先数越大,优先级越高。
(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。
(4)进程总共需要运行时间Alltime,利用随机函数产生。
(5)进程状态,0:就绪态;1:运行态;2:阻塞态。
(6)队列指针next,用来将多个进程控制块PCB链接为队列。
3.优先数改变的原则
(1)进程在就绪队列中每呆一个时间片,优先数增加1。
(2)进程每运行一个时间片,优先数减3。
4.在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,所有的进程控制块PCB链接成就绪队列。
3、 算法及数据结构
3.1 算法的总体思想
先到先服务算法,给每个进程定一个进程号,然后按照进程号顺序进行即可。最短作业优先算法要判断作业的alltime时间,alltime最小的最先执行,依次按照时间从小到大执行进程。优先度调度算法,要先判断优先度的大小,优先度最大的先执行,进程运行完毕以后,按照优先数的改变的原则进行改变,然后继续判断所有的优先数的大小,依旧是优先数最大的先执行,直到执行完毕。RR时间片轮转调度算法,要依次执行时间片用完即阻塞,转交给下一个进程执行,直到所有进程运行完。
3.2数据结构模块
3.2.1功能
进程的结构体声明与函数的声明
3.2.2数据结构
struct Process
{
int Pro_Id; //进程编号ID
int Priority; //进程优先级,随机产生
int CPUtime; //进程占用的CPU时间CPUtime
int Alltime; //进程共需运行时间 ,随机产生
int State; //进程状态
struct Process * Next;
};
/****************函数声明*******************/
int random_num(); //随机数??产生
struct Process * INITIAL(int *n); //进程的初始化
int printall(struct Process * P1 ); //打印所有进程的具体信息
int get_maxpri(struct Process * P1); //获取优先度最高的进程号
int get_mintime(struct Process * P1); //获作业时间最短的进程号
void alert_status(struct Process * P1,int m);//修改进程的状态
void alert_pri(struct Process * P1,int m); //修改进程的优先度
void FCFS(struct Process * Head); //先来先服务算法
void Priority(struct Process *Head,int n); //优先级调度算法
struct Process * alert_sjf(struct Process *P2,int m);//修改sjf算法状态
void SJF(struct Process *Head,int n) ; //SJF调度算法
void RR(struct Process *Head,int n); //RR时间片调度算法
3.3随机数字产生方法模块
3.3.1功能
随机产生数字,用于进程初始化时的优先度与alltime赋值
3.3.2数据结构
int random_num()
3.3.3算法
int random_num()
{
int m;
m=rand()%100;
if (m==0)
m=1;
return m;
}//随机数函数结束
3.4先到先服务(FCFS)模块
3.4.1功能
模拟进程的先到先服务调度算法,按照进程编号依次运行。
3.4.2数据结构
void FCFS(struct Process * Head); //先来先服务算法
printall(struct Process * He
您可能关注的文档
最近下载
- Korn-Ferry-方案-构建成功者画像.pdf VIP
- 铭记抗战历史,弘扬爱国精神——纪念抗日战争胜利八十周年主题班会.pptx VIP
- 扣押决定书文书范本.doc VIP
- 人民大2024现代大学美育 教学课件认识美——万物皆美(第一章 美是什么)(1).pptx VIP
- 人民大2024现代大学美育 教学课件认识美——万物皆美(第二章 何为美育)(1).pptx VIP
- 项目策划培训课件.ppt VIP
- 人民大2024现代大学美育 教学课件艺术美——美美与共(第十一章造型艺术美)(陈琳、刘晓晓).pptx VIP
- 大学美育课件:中国艺术美-音乐美.pptx VIP
- 文化旅游项目策划报告.pptx VIP
- 大学美育课件:中国艺术美-绘画美.pptx VIP
文档评论(0)