ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:94.88KB ,
资源ID:3655860      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3655860.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(word完整版时间片轮转最高响应比优先调度算法剖析.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

word完整版时间片轮转最高响应比优先调度算法剖析.docx

1、word完整版时间片轮转最高响应比优先调度算法剖析学 号: 课 程 设 计题 目时间片轮转、最高响应比优先调度算法学 院计算机科学与技术专 业班 级姓 名指导教师吴利军2013年1月14日课程设计任务书学生姓名: 指导教师: 吴利军 工作单位: 计算机科学与技术学院 题 目: 进程调度模拟设计时间片轮转、最高响应比优先调度算法 初始条件:1预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟进程调度,能够处理以下的情形: 能够选

2、择不同的调度算法(要求中给出的调度算法); 能够输入进程的基本信息,如进程名、到达时间和运行时间等; 根据选择的调度算法显示进程调度队列; 根据选择的调度算法计算平均周转时间和平均带权周转时间。2设计报告内容应说明: 需求分析; 功能设计(数据结构及模块说明); 开发平台及源程序的主要部分; 测试用例,运行结果与运行情况分析;我评价自与总结:)你认为你完成的设计哪些地方做得比较好或比较出色;)什么地方做得不太好,以后如何改正;)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);)完成本题是否有其他方法(如果有,简要说明该方法);)对实验题的评价和改进意见,请你推荐设计题目。时间安排:

3、设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日1. 需求分析1.1模拟进程调度,能够处理以下的情形: 能够选择不同的调度算法(要求中给出的调度算法); 能够输入进程的基本信息,如进程名、到达时间和运行时间等; 根据选择的调度算法显示进程调度队列; 根据选择的调度算法计算平均周转时间和平均带权周转时间。1.2这个实验主要是进程调度模拟设计,进程调度有很多方法,这个课程设计要求我要使用时间片轮转和最高响应比两中算法,来实现

4、对进程的模拟。 首先他要求能够用两种方法实现进程调度,我们需要首先输出一个选择程序,来选择一个调度算法,入数据来进行运算,这是我们首先要解决的问题。其次,我们要接近输入数据的存放问题,毕竟我还需要数据来进行操作和调度。我们要用结构体来存放一个进程的相关信息,例如:进程名字,进程到达时间,进程的运行时间。但是我们在出来进程的时候,还必须要按照一定的顺序来处理,所以我们必须要对结构体里存放的进程相关信息来进行排序。只有经过处理过后,才能更容易的实现进程的调度,同时当不只一个进程的 时候,我们还必须设置用多个地址单元来实验对输入的数据进行存储,多个输入就相当于的链表的插入处理,因此我们又必须要对链表

5、之间的指针进行处理,这涉及到指针的跳转,我们 必须要运用我们所学的知识进行。 我们还必须要对程序的输出进行处理,因为按照实验要求,我们必须显示进程调度队列;根据选择的调度算法计算平均周转时间和平均带权周转时间。这要求我们要设计算法,将进程的调度顺序给输出,从输出就可以检查自己的设计是否是正确的,而响应比其实进程的等待时间加上执行时间,在除以执行时间,得到的结果就是响应比。而最高响应比就是没当一个进程执行完成后,在这个时间比较各个时间各个进程的响应比,响应比最大的就会执行,而其他的进程则继续等待,一直循环做这个操作,这就是所谓的是最高响应比调度算法。时间片轮转法就是将CPU的执行时间分成一个个大

6、小相等的时间片,将这些时间片分别执行就绪队列中的进程,时间片用完的进程就会回答就绪队列的队尾,等待CPU的再次执行。 而周转时间则是完成时间减去提交时间,平均周转时间就是几个进程的周转时间的平均值。而带权周转时间就是周转时间除以执行时间。 2. 功能设计2.1最高响应比的功能设计2.1.1最高响应比的结构体struct zgxybchar name10;float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float dqzztime;2.2.1时间片的结构体typedef struct

7、 node datatype Num,runtime; char Name10;/定义成字符串 struct node *next;linknode;3. 开发平台及源程序的主要部分3.1实验的开发平台 Visual C+ 6.03.2实验的主要代码void input(zgxyb *p,int N) int i;printf(intput the processs name & arrivetime & servicetime:nfor exmple: a 0 100n);for(i=0;i=N-1;i+)printf(input the %dth processs information:

8、n,i+1);scanf(%s%f%f,&pi.name,&pi.arrivetime,&pi.servicetime);void Print(zgxyb *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)int k; printf(run order:); printf(%s,p0.name);for(k=1;k%s,pk.name); printf(nthe processs information:n); printf(nname

9、tarrivetservicetstarttfinishtzztdqzzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn,pk.name,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.zztime,pk.dqzztime); /按到达时间排序void sort(zgxyb *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime)

10、 zgxyb temp; temp=pi; pi=pj; pj=temp; /yun xing jieduanvoid deal(zgxyb *p,float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.servicetime; else pk.starttim

11、e=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.zztime=pk.finishtime-pk.arrivetime; pk.dqzztime=pk.zztime/pk.servicetime; void ZGXYB(zgxyb *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; sort(p,N); for(int m=0;mN-1;m+) if

12、(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetime; int i=0,n; for(n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishtime) i+; float max=(pm.finishtime-pm+1.arrivetime)/pm+1.servicetime;/第m+1个的响应比 int follow=m+1; for(int k=m+1;km+i;k+) if(maxNum=x; s-runtime=

13、y; /strcpy(s-Name,ch);/直接字符串复制 for(int i=0;iNamei=chi; r-next=s; r=s; scanf(%d %s %d,&x,&ch,&y); r-next=NULL; return head;/*输出带头结点的单链表*/void print(linklist head) linklist p; p=head-next; printf(List is:n); printf(Num Name runtimen); while(p) printf(%d%5s%6dn,p-Num,p-Name,p-runtime); p=p-next; printf

14、(n);void main()int G;scanf(%d,&G);if(G=1) linklist head,pre,p,r; int t,i; head=creatlinklist(); print(head); printf(请输入runtime:); scanf(%d,&t); pre=head; p=head-next; while(p) if (p-runtimet)/*如果运行时间大于时间片*/ r=p-next; p-runtime=p-runtime-t;/*将第一个进程的运行时间减去一个时间片的时间*/ while(r-next)/*将r指向链表的最后一个结点以便用尾插法将

15、P结点插入到链表的最后*/ r=r-next; pre-next=p-next; p-next=NULL; r-next=p; p=head-next; i=1; while(p)/*将进程的序号重新从开始设置一遍*/ p-Num=i+; p=p-next; else pre-next=p-next;/*如果进程运行时间小于时间片,就将第一个进程删除*/ free(p); p=head-next; i=1; while(p)/*因为删了一个进程就需要重新从开始设置一遍进程的排列序号*/ p-Num=i+; p=p-next; print(head);/*打印进程列表*/ pre=head; p

16、=head-next; elseint N; printf(-高响应比调度算法-n); printf(input the processs number:n); scanf(%d,&N); input(a,N); zgxyb *c=a; ZGXYB(c,N);4. 运行结果与运行情况分析程序的第一步选择最高响应比调度算法,输入进程输入3个,进程名字提交时间运行时间a23b32c33程序的验证:第一个进程在2点提交,3个小时的执行时间,在2点没有别的进程,所以a先执行,5点执行完后,而在5点执行前,b,c都提交了,所以就要判断响应比,响应比是等待时间加上执行时间,除以执行时间,所以b的响应比是2

17、,c的响应比是5/3,所以b的响应比高,b先执行,最后是c执行,周转时间是完成时间减去提交时间,而带权周转时间是周转时间除以执行时间。经检验,平均周转时间4.67,平均带权周转时间是1.67.,经检验,结果是正确的。如果是时间片轮转则运行结果为:5. 我评价自与总结5.1程序好的方面 本次实验的输入与输出基本满足实验所要求的,最高响应比的调度算法的输出结果采用表格的形式的输出,比较清晰,容易看懂,通过输出结果能够清晰的看出结果的正确与否。输入与输出比较明确,不会出现多种意思。结构比较清晰,不会到处跳转,容易理解。指令之间的跳转不会让人难以理解。最高响应比中进程分为两个状态,等待状态和完成状态,

18、当程序完成时候状态变成完成状态,每次执行只会执行等待状态的进程,不会执行完成状态的进程。结果中还有调度顺序,5.2从本设计得到的收获从本次实验中,我学到了较多东西,首先是结构体的定义和调用,这次实验首先遇到的问题结构体的定义和调用,之后还涉及到指针的跳转,链表的插入与删除,因此指针的跳转是必须要飞行清楚明白的,否则就会出现各种错误,最终将需要修改,而且还必须学会子函数的使用,必须实验各种子函数来实现不同的功能,综合起来才能实现实验所要求的功能。同时函数的头文件也必须要包含多个东西,来适应我们的要求,同时我们还必须根据要求使用多个全局变量,来实现我们的各种要求。5.4其他方法 对与最高响应比的想

19、法:前提设定:参数进程队列按顺序排好。设置一个系统时间变量,记录当前系统时间调度算法思路: 1.系统时间取得第一个进程的提交时间,并执行第一个进程; 2.当某进程执行完成时,系统时间加上该完成进程的运行时间,并删除该节点,若第一个节点的提交时间就比当前系统时间大或等于,此情况下,需要修改系统时间,且此时第一个进程就是下一个该调度的进程,否侧,在从头结点开始扫描进程队列,直到某进程提交时间大于等于当前系统时间,先假设第一个的响应比最高,标志指针指向第一个节点,扫描过程中,记录当前扫描到的进程的响应比,若比记录值大,则修改记录值和标志指针。扫描完成后,执行标志指针指向的进程,反复执行2,直至没有进

20、程了对于输入,输出的界面也有必要改进一下,是他跟具有整齐性,不会出现凌乱的情况,在具体细节上要更加注意,要用更少的代码实现更多的功能,占用更少的空间,总之要精益求精。5.5是题目的评价和建议 这次的实验,让我对调度算法有了更加深刻的了解,对应编程序也有了更加深刻的理解,编程序不是一件容易的事情,需要很多的时间来实现和修改,而且实践对于计算机的学习是很重要的,本次的题目跟我们所学有关联性较大,对我们学习很有用,题目基本上将我们平时所学习的东西都用到了,虽然每个人侧重点不一样,但是都是对能力的考验,是需要很多努力才能实现的,难度都是有的,关键靠个人的努力,努力才是最关键的,我认为本次的实验题目不错

21、,不会出现难度相差较大的情况,主要靠的是努力和认真程度,而不是考的是题目,不会出现遇到题目很简单的,而不会考验到能力问题,这对每个人都是公平的,认真做就会得到较好的成绩。 我认为实验的题目是比较合理的,没必要进行大的改动,可以从细节上进行改进,希望不会出现超出学生能里太多的情况,课程设计主要是要学生动手做,做的好不好是能力问题,主要注重态度问题,认真做了就行了。本科生课程设计成绩评定表序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2013年月日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1