计算机操作系统进程调度算法的实现_第1页
计算机操作系统进程调度算法的实现_第2页
计算机操作系统进程调度算法的实现_第3页
计算机操作系统进程调度算法的实现_第4页
计算机操作系统进程调度算法的实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目2进程调度算法的实现2.1题目的主要研究内容及预期达到的目标(1)设计进程控制块;(2)设计多个进程队列;(3)设计多个进程(m20);(4)动态生成时间片、执行时间和优先级,将这些信息输出至文件屮;(5)设计基于时间片的多优先级调度算法;(6)动态调度,并把所冇调度信息输出至文件中。(7)理解进程调度相关理论;(8)掌握时间片调度原理;(9)掌握高优先级调度原理。2.2题目研究的工作基础或实验条件(1)硕件环境:装有linux操作系统(虚拟机)的计算机一台。(2)软件环境:vim编辑器、visual c卄。2.3设计思想(1)优先级优先级体现了进程的重要程度或紧迫程度,在大多数现代操作系

2、统屮,都 采用了优先级调度策略。优先级从小到大(如0-127), 0优先级最高,127最 低。在本实验中,要求优先级为0-8。(2)基于吋间片调度将所有的就绪进程按照先来先服务的原则,排成一个队列,每次调度时, 将cpu分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计时 器发出时钟中断请求,调度程序把此进程终止,把该进程放到队尾。(3)高优先级调度优先级高的进程优先得到cpu,等该进程执行完毕后,另外的进程才能执 行。(4)基于时间片的高优先级调度时间片和优先级调度的结合,在系统中,每个优先级对应一个就绪队列,在每个就绪队列内,采用时间片调度。当高优先级进程队列调度完成后,才能转

3、 入更低优先级的就绪队列调度。(5)算法设计将所有的就绪进程按照先来先服务的原则,排成一个队列,每次调度吋, 将cpu分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计时 器发出时钟屮断请求,调度程序把此进程终止,把该进程放到队尾。优先级高的 进程优先得到cpu,等该进程执行完毕后,另外的进程才能执行。时间片和优先 级调度的结合,在系统中,每个优先级对应一个就绪队列,在每个就绪队列内, 采用吋间片调度。当高优先级进程队列调度完成后,才能转入更低优先级的就绪 队列调度。2.4流程图2.5主要程序代码# include<iostream># include<stdli

4、b.h>/#includc<malloc.h>using namespace std;/#define null 0typcdcfstruct 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请输入进程名/到达时

5、间/要求运行时间/优先数n«endl;for(int i=0;ivn;i+)cin»ai->name»ai->arrive_time»ai->need_time»ai->pnumber;/a,-iw体匹配ai->condition='d'表示还未加入就绪队列的标志ai->worked_time=oy/worked_time 的初始值为 0 int judge(linklist *a,int n)判断所有进程是否都结束 int flag_l=l;for(int i=0;i<n;i+)if(

6、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 的卜 一个节点为 nullint flag_l =();/标识while(flag_l !=1)for(int i=0;i<n;i+)int flag=0;if (timc>=ai->a

7、rrivc_time&&(ai->condition='d'llai->condition='x')/ 判断 进程是否到达,是否是刚执行过或未加入的,两者都是执行目的是排出等待序列p=(linklist)malloc(sizeof(pcb);p=ai;p->next=null; if(l->ncxt=null)ext=p;p->condition='w,;elser=l;while(r->next)if(r->next->pnumber)>p->pnumber) 判断优先级交换p

8、->next=r->next;ext=p;flag二 i;ail->condition= w1;break;elser=r->next;if(flag=0) r->next=p;aij->condition=w,;r=l->next;/lcout«n就绪队列是:”;whiled) 输出就绪队列cout«r->namc«"r=r->next;cout«endl;cout«h正在运行的是r=l->ncxt;cout«r->name«endl;r->

9、pnumber=r->pnumber+8;/防止出现多个同一时间点的程序只有两个程序交替进 行r->workcd_timc+;/已运行的程序工作时间+1timc+;r>condition='x'标识,用于判断if(r->worked_tinie=r->need_time)r->condition='f;表示已经运彳亍完的标志cout«r->name«"已经运彳亍完成! "«endl;l->next=r->next;/f进程移到卜一个 1flag_l=judge(a,n

10、);判断进程是否都完成iint main()int n;coutvv“请输入进程个数n: “;cin»n;linklist *a=new linklistnj;/申请新的链表 aijfor(int i=0;i<n;i+)ai=(linklist)malloc(sizeof(pcb);/对 sizeof(pcb)进行强制转换(结构体的类型)creatpcb(a,n);/输 入函数creat_process(a,n);/ii* 算并输 ih 调度结果2.6运行结果及分析tang)ubuntu: -/os/jinchengdiaodutangubuntu:$ cd os/jinche

11、ngdiaodu/ tangubuntu:/os/jincrengdiaodu$ is atangubuntu:-/os/jinchengdiaodu$ ./a 请输入进程个数n : 20a.cpp a.out h.cpp h.cpp- 无标题文档 请输入进程名/到达时间要求运行时间/优先数abcd0000112223634926520 411 565358klmn0pqrst34777889945552332126863553410 4 5就绪队列是:b a d c 正在运行的是:b就绪队列是:e a d f c g 正在运行的是:e就绪队列是:h i a d f j 正在运行的是:h就绪队

12、列是:k i a d f j 正在运行的是:k就绪队列是:i a d f j c 正在运行的是:i就绪队列是:a d f j c l 正在运行的是:a正在运行的是:a就绪队列是:dfjclgbhkeia正在运行的是:d就绪队列是:ofjclngmbhkeiad正在运行的是:o就绪队列是:fjpqclngmbhkeoiad 正在运行的是:f就绪队列是:rsjpqclngmbhkeoiadf 正在运行的是:r就绪队列是:sjpqtclngmbhkeoriadf正在运行的是:ss已经运行完成!就绪队列是:jpqtclngmbhkeoriadf 正在运行的是:j就绪队列是:pqtclngmbhkeor

13、iadfj 正在运行的是:p就绪队列是:qtclngmbhkeoriadfjp 正在运行的是:q就绪队列是:tclngmbhke0r1adfjpq 正在运行的是:t就绪队列是:clngmbhkeoriadfjpqt正在运行的是:c就绪队列是:lngmbhkeoriadfjpqtc 正在运行的是:l就绪队列是:ngmbhkeoriadfjpqtcl 正在运行的是:n就绪队列是:gmbhkeoriadfjpqtcln 正在运行的是:g就绪队列是:mbhke0r1adfjpqtclng 正在运行的是:m就绪队列是:bhkeoriadfjpqtclngm 正在运行的是:b就绪队列是:hkeoriadf

14、jpqtclngmb 正在运行的是:h就绪队列是:keoriadfjpqtclngmbh 正在运行的是:k就绪队列是:eoriadfjpqtclngmbhk 正在运行的是:e就绪队列是:oriadfjpqtclngmbhke 正在运行的是:oo已经运行完成!就绪队列是:riadfjpqtclngmbhke 正在运行的是:rr已经运行完成!就绪队列是:iadfjpqtclngmbhke正在运行的是:i就绪队列是:adfjpqtclngmbhkei正在运行的是:a就绪队列是:dfjpqtclngmbhkeia正在运行的是:d就绪队列是:fjpqtclngmbhkeiad正在运行的是:ff已经运行完

15、成!就绪队列是:jpqtclngmbhkeiad正在运行的是:j就绪队列是:pqtclngmbhkeiadj正在运行的是:p就绪队列是:qtclngmbhke1adjp正在运行的是:q就绪队列是:tclngmbhkeiadjpq正在运行的是:t就绪队列是:clngmbhkeiadjpqt正在运行的是:c就绪队列是:lngmbhkeiadjpqtc正在运行的是:l就绪队列是:ngmbhkeiadjpqtcl正在运行的是:n就绪队列是:gmbhkeiadjpqtcln正在运行的是:g就绪队列是:mbhkeiadjpqtclng 正在运行的是:m就绪队列是:bhkeiadjpqtclngm正在运行的

16、是:b就绪队列是:hkeiadjpqtclngmb正在运行的是:h就绪队列是:keiadjpqtclngmbh正在运行的是:k就绪队列是:eiadjpqtclngmbhk 正在运行的是:e就绪队列是:iadjpqtclngmbhke正在运行的是:i就绪队列是:adjpqtclngmbhkei正在运行的是:aa已经运行完成!就绪队列是:djpqtclngmbhkei正在运行的是:d就绪队列是:jpqtclngmbhkeid正在运行的是:j就绪队列是:pqtclngmbhke1dj正在运行的是:pp已经运行完成!就绪队列是:qtclngmbhkeid j正在运行的是:qq己经运行完成!就绪队列是:

17、tclngmbhkeidj正在运行的是:t就绪队列是:clngmbhkeidjt 正在运行的是:cc已经运行完成!就绪队列是:lngmbhkeidjt 正在运行的是:l就绪队列是:ngmbhkeidjtl 正在运行的是:n就绪队列是:gmbhkeid jtln 正在运行的是:g就绪队列是:mbhkeidjtlng 正在运行的是:m就绪队列是:bhkeidjtlngm 正在运行的是:b就绪队列是:hkeidjtlngmb 正在运行的是:h就绪队列是:keid jtlngmb h 正在运行的是:kki2经运行完成!就绪队列是:eid jtlngmbh正在运行的是:e就绪队列是:1djtlngmbh

18、e正在运行的是:i就绪队列是:djtlngmbhei正在运行的是:dd己经运行完成!就绪队列是:jtlngmbhei 正在运行的是:j就绪队列是:tlngmbheij正在运行的是:tt已经运行完成!就绪队列是:lngmb heij正在运行的是:l就绪队列是:ngmbheijl正在运行的是:n就绪队列是:gmbheijln正在运行的是:g就绪队列是:mbheijlng正在运行的是:m就绪队列是:b hei jlngm正在运行的是:b就绪队列是:heijlngmb正在运行的是:hh已经运行完成!就绪队列是:eijlngmb 正在运行的是:e 就绪队列是:ijlngmbe 正在运行的是:i 就绪队列是:jlngmbei 正在运行的是:j 就绪队列是:lngmbeij 正在运行的是:l lu经运行完成! 就绪队列是:ngmbeij 正在运行的是:n n己经运行完成! 就绪队列是:gmbeij 正在运行的是:g 就绪队列是:mbeijg 正在运行的是:m m已经运行完成! 就绪队列是:beijg 正在运行的是:b b已经运行完成! 就绪队列是:e i j g 正在运行的是:e 就绪队列是:i j g e 正在运行的是:i 就绪队列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论