版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 操作系统课程设计 采用高响应比算法的进程调度程序学 院 专 业 学 生 姓 名 学 号 指导教师姓名 目 录一、实验题目2二、课程设计的目的2三、设计内容2四、程序功能分析2五、实验原理2 六、设计要求6 七、程序总设计流程图6八、程序运行结果及分析7九、小结8十、源代码9一、实验题目采用高响应比算法的进程调度程序二、课程设计的目的:了一个既动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的机会。同时提高了同学的动手能力和团队合作精神,充分体现了合作的重要性。编写程序,采用高响应比作业调度算法,首先要确定作业控制块的内容和组成方式;然后完成作业调度,最后编写主函数,
2、对所做工作进行测试。(1)进一步巩固和复习操作系统的基础知识。(2)培养学生结构化程序、模块化程序设计的方法和能力。(3)提高学生调试程序的技巧和软件设计的能力.(4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。操作系统课程设计是计算机专业重要的教学环节,它为学生提供三、设计内容: 设计并实现一个采用高响应比算法的进程调度演示程序,响应比 R 定义如下: RWT/T1W/T 其中 T 为该作业估计需要的执行时间, 为作业在后备状态队列中的等待时 W间。 每当要进行作业调度时,系统计算每个作业的响应比,选择其中 R 最大者投入执行。这样,即使是长作业,随着它等待时间的增加,W
3、/T 也就随着增加,也就有机会获得调度执行。 这种算法是介于 FCFS 和 SJF 之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于 SJF 法,从而采用 HRRN 方式时其吞吐量将小于采用 SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。四、程序功能分析在批处理系统中,短作业优先算法是一种比较好的算法,其主要的不足之处是长作业的运行得不到保证。于是我们想到了一种办法解决这个问题,就是引用动态优先权、并使作业的优先级随着等待时间的增加而以速率a提高,长作业在等待一定的时间后,必然有机会分配到处理机,这样长作业也得到了运行。由此可见
4、: (1)如果作业的等待时间相同,则要求服务的时间越短,其优先权越高,因此该算法有利于短作业。 (2)当要求服务的时间相同时,作业的优先权取决与其等待的时间,等待时间越长,其优先权越高,因而它实现的是先来先服务。 (3)对于长作业,作业的优先权可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高,从而也可以获得处理机。五、实验原理高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。该算法中的响应比是指作业等待时间与运行比值,响应比公式定义如下:响应比 =(等待时间+要求服务时间)/ 要求服务时间,即RR=(w+s)/s=
5、1+w/s,因此响应比一定是大于1的。某系统有3个作业,系统确定它们在全部到达后,再开始采用响应比高者优先的调度算法,则它们的调度顺序是什么?各自的周转时间是什么?作业号 提交时间 运行时间1 8.8 1.52 9.0 0.43 9.5 1.0(1)如果都到达再算的话,等待时间=最后一个的提交时间-该作业到达的时刻1: 9.5-8.8=0.72: 9.5-9=0.53: 0所以响应比为(等待时间+要求服务时间)要求服务时间=等待时间/要求服务时间+11: 0.7/1.5+1=1.472: 0.5/0.4+1=2.253:1所以2先运行,2从9.5开始运行到9.9结束;再以9.9时刻算响应比:1
6、:(9.9-8.8)/1.5+1=1.733:(9.9-9.5)/1+1=1.4所以2执行完后1开始执行,从9.9执行到11.4结束最后一个是3:从11.4开始执行到12.4结束(2)如果不是都到达后才运行,那么在8.8时只有作业1到达,所以先运行作业18.8+1.5(运行时间)=10.3到10.3的时候作业1完成,此时作业2和3都已到达所以计算其响应比(等待时间+要求服务时间)要求服务时间=等待时间/要求服务时间+1作业2:(10.3-9.0)/0.4+1=4.325作业3:(10.3-9.5)/1.0+1=1.8所以先运行作业210.3+0.4=10.7到10.7运行作业310.7+1.0
7、=11.7到11.7结束高响应比函数执行过程流程图: 开 始 同时到达 当前作业取较早到达的一个 当前作业取相应比较高的一个 当前作业取较早达到且响应比较高的一个 返回这一次要执行的作业 当前作业在上次作业被执行完之前到达 当前作业和下一个还没执行的作业比较 当前作业是最后一个作业 当前作业为依编号找到的第一个还未执行的作业 六、设计要求:1. 每一个进程有一个PCB,其内容可以根据具体情况设定。 2. 进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定 3. 可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、进程优先级的初始化 4. 可以在运行中显示各进
8、程的状态:就绪、执行 (由于不要求设置互斥资源与进程间的同步关系,故只有两种状态) 5. 采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列 6. 有性能比较功能,可比较同一组数据在不同调度算法下的平均周转时间 7. 具有一定的数据容错性七、程序总设计流程图读取进程判断进程是否进入内存对响应比排序高的进程先运行等 待结 束是否八、程序运行结果及分析输入两个进程a、b,在高响应比调度算法下的进程运行情况及各进程的性能分析如下:输入四个进程、在高响应比算法下的调度顺序,通过响应比(优先权)的比较,判断进程调度的次序,提高的进程的调度性能。且高响应比调度算法适合于批
9、处理操作。九、结论通过本次实验对用高响应比算法的优先调度算法有了更深入的理解和掌握,进一步巩固和复习操作系统的基础知识,更进一步的了解了结构化模块化程序设计的方法,提高了调试程序的技巧。同时使我们对进程调度模拟设计的各种算法有了更进一步的理解,在编写程序时所遇到的问题让我有了对操作系统更深层次的理解和掌握,知道操作系统这门课程实在是很重要的一门课程。十、源代码#include <stdio.h>int e=0;struct Pchar name10;float arrtime;float sertime;float startime;float finishtime;float z
10、ztime;float dqzztime;float power;P a100;void input(P *,int);void move(P *,int);void work(P *,int);void Gxyb(P *,int);void rate(P *,float);void main() int N;printf("t *欢迎进入高响应比调度算法模拟界面* n");printf("请输入进程的个数:");scanf("%d",&N);input (a,N);Gxyb(a,N);void input(P *p,int
11、N) int i;for(i=0;i<=N-1;i+)printf("nt请输入第%d个进程的名字,到达时间,要求服务的时间 :n",i+1);scanf("%s%f%f",&,&pi.arrtime,&pi.sertime);void work(P *p,int N)for(int i=0;i<N-1;i+)for(int j=i+1;j<N;j+)if(pi.arrtime>pj.arrtime)P temp;temp=pi;pi=pj;pj=temp;elseif(pi.arrtime=
12、pj.arrtime)if(pi.sertime>pj.sertime)P temp;temp=pi;pi=pj;pj=temp;void rate(P *p,int N) +e;for(int m=N-1;m>=e;m-)if(pm.arrtime<=pe-1.finishtime)pm.power=(pe-1.finishtime-pm.arrtime+pm.sertime)/pm.sertime;for(int i=e;i<N-1;i+)for(int j=i+1;j<N;j+)if(pi.power<pj.power)P temp;temp=pi;p
13、i=pj;pj=temp;void move(P *p,int N)int k;printf("n高响应比调度的顺序:");printf("%s",);for(k=1;k<N;k+)printf("->%s",);printf("n");printf("n各进程运行的详细信息如下:n");printf("名称 到达时间 服务时间 开始时间 结束时间 周转时间 带权周转时间n");for(k=0;k<=N-1;k+) printf(
14、"%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn",,pk.arrtime,pk.sertime,pk.startime,pk.finishtime,pk.zztime,pk.dqzztime);void deal(P *p,int N) int k;for(k=0;k<=N-1;k+)if(k=0) pk.startime=pk.arrtime;pk.finishtime=pk.arrtime+pk.sertime;elseif(pk.arrtime<pk-1.finishtime)pk.startime=pk-
15、1.finishtime;elsepk.startime=pk.arrtime;pk.finishtime=pk.startime+pk.sertime;for(k=0;k<=N-1;k+)pk.zztime=pk.finishtime-pk.arrtime;pk.dqzztime=pk.zztime/pk.sertime;void Gxyb(P *p,int N)int i=0,n; float arrtime=0,sertime=0,startime=0,finishtime=0,zztime=0,dqzztime=0;printf("各进程的运行情况如下:n")
16、; work(p,N);for(int m=0;m<N;m+)if(m=0)pm.finishtime=pm.arrtime+pm.sertime;printf("n在第%-.0f时刻进程信息n",pm.arrtime);printf("%st正在运行n",);for(n=m+1;n<N;n+) if(pn.arrtime=pm.arrtime)printf("%st进程已到达n",);elseprintf("%st进程未到达n",);elserate(p, N
17、);if(pm.arrtime<=pm-1.finishtime)pm.finishtime=pm-1.finishtime+pm.sertime;printf("n在第%-.0f时刻进程信息n",pm-1.finishtime);printf("%st正在运行n",);for(n=m+1;n<N;n+)if(pn.arrtime<=pm -1.finishtime)printf("%st进程已到达n",);elseprintf("%st进程未到达n",);elsepm.finishtime=pm.arrtime+pm.sertime;printf("n在第%-.0f时刻进程信息n",pm.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络协议书封装
- 环保行业环境工程信息技术工程师考试试题及答案
- 网络渠道运营代理协议书
- 协议书大于公证
- 2025预拌混凝土采购与销售合同范本内容
- 培训 转让协议合同范本
- 压铸模具技术协议书
- 2025年短视频创作者分成协议
- 2025年技术二级考试试题及答案
- 2025夫妻间的财产转让合同
- 程序员工作展望
- (2025年)职业卫生健康培训考试题库+答案
- 2025贵州毕节市中医医院招聘暨人才引进编外聘用专业技术人员78人考试笔试参考题库附答案解析
- 个人求职简历(单页)编辑打印模版248
- 浙江省杭州市学军中学2025-2026学年高一10月月考语文试题(原卷版)
- 2025西南有色昆明勘测设计(院)股份有限公司专业技术人员招聘(9人)考试笔试备考试题及答案解析
- 完整版2025年一级建造师《公路实务》考试真题及答案解析
- 青年创业培训课件
- 超市散货干货知识培训
- DB37∕T 5156-2020 既有居住建筑加装电梯附属建筑工程技术标准
- 2025公安机关人民警察(高级)执法资格等级考试自测试题及答案
评论
0/150
提交评论