计算机操作系统进程调度算法的实现.docVIP

计算机操作系统进程调度算法的实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机操作系统进程调度算法的实现.doc

题目2进程调度算法的实现 2.1题目的主要研究内容及预期达到的目标 (1) 设计进程控制块; (2) 设计多个进程队列; (3) 设计多个进程(M20); (4) 动态生成时间片、执行时间和优先级,将这些信息输出至文件屮; (5) 设计基于时间片的多优先级调度算法; (6) 动态调度,并把所冇调度信息输出至文件中。 (7) 理解进程调度相关理论; (8) 掌握时间片调度原理; (9) 掌握高优先级调度原理。 2.2题目研究的工作基础或实验条件 (1) 硕件环境:装有Linux操作系统(虚拟机)的计算机一台。 (2) 软件环境:vim编辑器、Visual C卄。 2.3设计思想 (1) 优先级 优先级体现了进程的重要程度或紧迫程度,在大多数现代操作系统屮,都 采用了优先级调度策略。优先级从小到大(如0-127), 0优先级最高,127最 低。在本实验中,要求优先级为0-8。 (2) 基于吋间片调度 将所有的就绪进程按照先来先服务的原则,排成一个队列,每次调度时, 将CPU分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计时 器发出时钟中断请求,调度程序把此进程终止,把该进程放到队尾。 (3) 高优先级调度 优先级高的进程优先得到cpu,等该进程执行完毕后,另外的进程才能执 行。 (4) 基于时间片的高优先级调度 时间片和优先级调度的结合,在系统中,每个优先级对应一个就绪队列, 在每个就绪队列内,采用时间片调度。当高优先级进程队列调度完成后,才能转 入更低优先级的就绪队列调度。 (5)算法设计 将所有的就绪进程按照先来先服务的原则,排成一?个队列,每次调度吋, 将CPU分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计时 器发出时钟屮断请求,调度程序把此进程终止,把该进程放到队尾。优先级高的 进程优先得到cpu,等该进程执行完毕后,另外的进程才能执行。时间片和优先 级调度的结合,在系统中,每个优先级对应一个就绪队列,在每个就绪队列内, 采用吋间片调度。当高优先级进程队列调度完成后,才能转入更低优先级的就绪 队列调度。 2.4流程图 2.5主要程序代码 includeiostream includestdlib.h //#includcmalloc.h using namespace std; //#define NULL 0 typcdcfstruct PCB//定义进程结构体 { char name;//进程名 struct PCB *next; double arrive_time;//到达时间 double nccd_timc;//需求运行时间 double worked_time;// 已工作时间 intPnumber;// 优先数 char condition;//队列标识 }PCB,*linkList; voidcreatPCB(linkList *a,int n) { cout?,r请输入进程名/到达时间/要求运行时间/优先数n?endl; for(int i=0;ivn;i++) { cin?a[i]-name?a[i]-arrive_time?a[i]-need_time?a[i]-Pnumber;//^A,-^^iW 体匹配 a[i]-condition=d;〃表示还未加入就绪队列的标志 a[i]-worked_time=Oy/worked_time 的初始值为 0 int judge(linkList *a,int n)〃判断所有进程是否都结束 { int flag_l=l; for(int i=0;in;i++) { if(a [i ] -condition!=f) { 1=0; break; return flag_l; } void creat_Process(linkList *a,int n)〃计算并输出调度结果 { double time=0;//已运行的总时间 linkListl,p,r;// 定义对象 l=(linkList)malloc(sizeof(PCB));// 强制转换 l-next = NULL ;//1 的卜 一?个节点为 null int flag_l =();//标识 while(flag_l !=1) { for(int i=0;in;i++) { int flag=0; if (timc=a[i]-arrivc_time(a[i]-condition==dlla[i]-condition==x))// 判断 进程是否到达,是否是刚执行过或未加入的,两者都是执行 { 〃目的是排出等待序列 p=(linkList)malloc(sizeof(PCB)); P=a[i]; p-next=NULL; if(l-ncxt==NULL) { ext=p; p-

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档