时间片轮转最高响应比优先调度算法.docx
- 文档编号:7046489
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:14
- 大小:61.84KB
时间片轮转最高响应比优先调度算法.docx
《时间片轮转最高响应比优先调度算法.docx》由会员分享,可在线阅读,更多相关《时间片轮转最高响应比优先调度算法.docx(14页珍藏版)》请在冰点文库上搜索。
时间片轮转最高响应比优先调度算法
学号:
课程设计
题目
时间片轮转、最高响应比优先调度算法
学院
计算机科学与技术
专业
班级
姓名
指导教师
吴利军
2013
年
1
月
14
日
课程设计任务书
学生姓名:
指导教师:
吴利军工作单位:
计算机科学与技术学院
题目:
进程调度模拟设计——时间片轮转、最高响应比优先调度算法
初始条件:
1.预备内容:
阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。
2.实践准备:
掌握一种计算机高级语言的使用。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.模拟进程调度,能够处理以下的情形:
⑴能够选择不同的调度算法(要求中给出的调度算法);
⑵能够输入进程的基本信息,如进程名、到达时间和运行时间等;
⑶根据选择的调度算法显示进程调度队列;
⑷根据选择的调度算法计算平均周转时间和平均带权周转时间。
2.设计报告内容应说明:
⑴需求分析;
⑵功能设计(数据结构及模块说明);
⑶开发平台及源程序的主要部分;
⑷测试用例,运行结果与运行情况分析;
⑸我评价自与总结:
)你认为你完成的设计哪些地方做得比较好或比较出色;
)什么地方做得不太好,以后如何改正;
)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
)完成本题是否有其他方法(如果有,简要说明该方法);
)对实验题的评价和改进意见,请你推荐设计题目。
时间安排:
设计安排一周:
周1、周2:
完成程序分析及设计。
周2、周3:
完成程序调试及测试。
周4、周5:
验收、撰写课程设计报告。
(注意事项:
严禁抄袭,一旦发现,一律按0分记)
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
1.需求分析
1.1.模拟进程调度,能够处理以下的情形:
⑴能够选择不同的调度算法(要求中给出的调度算法);
⑵能够输入进程的基本信息,如进程名、到达时间和运行时间等;
⑶根据选择的调度算法显示进程调度队列;
⑷根据选择的调度算法计算平均周转时间和平均带权周转时间。
1.2这个实验主要是进程调度模拟设计,进程调度有很多方法,这个课程设计要求我要使用时间片轮转和最高响应比两中算法,来实现对进程的模拟。
首先他要求能够用两种方法实现进程调度,我们需要首先输出一个选择程序,来选择一个调度算法,入数据来进行运算,这是我们首先要解决的问题。
其次,我们要接近输入数据的存放问题,毕竟我还需要数据来进行操作和调度。
我们要用结构体来存放一个进程的相关信息,例如:
进程名字,进程到达时间,进程的运行时间。
但是我们在出来进程的时候,还必须要按照一定的顺序来处理,所以我们必须要对结构体里存放的进程相关信息来进行排序。
只有经过处理过后,才能更容易的实现进程的调度,同时当不只一个进程的时候,我们还必须设置用多个地址单元来实验对输入的数据进行存储,多个输入就相当于的链表的插入处理,因此我们又必须要对链表之间的指针进行处理,这涉及到指针的跳转,我们必须要运用我们所学的知识进行。
我们还必须要对程序的输出进行处理,因为按照实验要求,我们必须显示进程调度队列;根据选择的调度算法计算平均周转时间和平均带权周转时间。
这要求我们要设计算法,将进程的调度顺序给输出,从输出就可以检查自己的设计是否是正确的,而响应比其实进程的等待时间加上执行时间,在除以执行时间,得到的结果就是响应比。
而最高响应比就是没当一个进程执行完成后,在这个时间比较各个时间各个进程的响应比,响应比最大的就会执行,而其他的进程则继续等待,一直循环做这个操作,这就是所谓的是最高响应比调度算法。
时间片轮转法就是将CPU的执行时间分成一个个大小相等的时间片,将这些时间片分别执行就绪队列中的进程,时间片用完的进程就会回答就绪队列的队尾,等待CPU的再次执行。
而周转时间则是完成时间减去提交时间,平均周转时间就是几个进程的周转时间的平均值。
而带权周转时间就是周转时间除以执行时间。
2.功能设计
2.1最高响应比的功能设计
2.1.1最高响应比的结构体
structzgxyb{
charname[10];
floatarrivetime;
floatservicetime;
floatstarttime;
floatfinishtime;
floatzztime;
floatdqzztime;
};
2.2.1时间片的结构体
typedefstructnode
{
datatypeNum,runtime;
charName[10];//定义成字符串
structnode*next;
}linknode;
3.开发平台及源程序的主要部分
3.1实验的开发平台
VisualC++6.0
3.2实验的主要代码
voidinput(zgxyb*p,intN)
{inti;
printf("intputtheprocess'sname&arrivetime&servicetime:
\nforexmple:
a0100\n");
for(i=0;i<=N-1;i++)
{
printf("inputthe%dthprocess'sinformation:
\n",i+1);
scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);
}
}
voidPrint(zgxyb*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,intN)
{intk;
printf("runorder:
");
printf("%s",p[0].name);
for(k=1;k {printf("-->%s",p[k].name); } printf("\ntheprocess'sinformation: \n"); printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n"); for(k=0;k<=N-1;k++) {printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime); } } //按到达时间排序 voidsort(zgxyb*p,intN) { for(inti=0;i<=N-1;i++) for(intj=0;j<=i;j++) if(p[i].arrivetime { zgxybtemp; temp=p[i]; p[i]=p[j]; p[j]=temp; } } //yunxingjieduan voiddeal(zgxyb*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,float&zztime,float&dqzztime,intN) {intk; for(k=0;k<=N-1;k++) { if(k==0) { p[k].starttime=p[k].arrivetime; p[k].finishtime=p[k].arrivetime+p[k].servicetime;} else { p[k].starttime=p[k-1].finishtime; p[k].finishtime=p[k-1].finishtime+p[k].servicetime;} } for(k=0;k<=N-1;k++) { p[k].zztime=p[k].finishtime-p[k].arrivetime; p[k].dqzztime=p[k].zztime/p[k].servicetime; } } voidZGXYB(zgxyb*p,intN) { floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; sort(p,N); for(intm=0;m { if(m==0) p[m].finishtime=p[m].arrivetime+p[m].servicetime; else p[m].finishtime=p[m-1].finishtime+p[m].servicetime; inti=0,n; for(n=m+1;n<=N-1;n++) { if(p[n].arrivetime<=p[m].finishtime) i++; } floatmax=(p[m].finishtime-p[m+1].arrivetime)/p[m+1].servicetime;//第m+1个的响应比 intfollow=m+1; for(intk=m+1;k { if(max<=(p[m].finishtime-p[k+1].arrivetime)/p[k+1].servicetime) { max=(p[m].finishtime-p[k+1].arrivetime)/p[k+1].servicetime; follow=k+1; } } zgxybtemp; temp=p[m+1]; p[m+1]=p[follow]; p[follow]=temp; } deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); } linklistcreatlinklist() { linklisthead,r,s; intx,y; charch[10];//因为要输的是字符串 head=r=(linklist)malloc(sizeof(linknode)); printf("\n请输入一组编号,作业名,运行时间,以结尾\n"); scanf("%d%s%d",&x,&ch,&y); while(x) { inta=10; s=(linklist)malloc(sizeof(linknode)); s->Num=x; s->runtime=y; //strcpy(s->Name,ch);//直接字符串复制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时间 轮转 最高 响应 优先 调度 算法