操作系统设计探讨.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档