进程调度模拟设计——时间片轮转、优先级法_第1页
进程调度模拟设计——时间片轮转、优先级法_第2页
进程调度模拟设计——时间片轮转、优先级法_第3页
进程调度模拟设计——时间片轮转、优先级法_第4页
进程调度模拟设计——时间片轮转、优先级法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学系统软件开发实训A课程设计说明书学 号: 课 程 设 计课程名字系统软件开发实训A题 目进程调度模拟设计时间片轮转、优先级法学 院专 业班 级姓 名指导教师2014年01月17日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 进程调度模拟设计时间片轮转、优先级法 初始条件:1预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟进程调度,能够处理以下的情形: 能够选择不同的调度算法(要求中给出的

2、调度算法); 能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等; 根据选择的调度算法显示进程调度队列; 根据选择的调度算法计算平均周转时间和平均带权周转时间。2设计报告内容应说明: 课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图); 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结。时间安排:设计安排3周:查阅、分析资料 1天系统软件的分析与建模 4天系统软件的设计 5天系统软件的实现 3天撰写文档 1天课程设计验收答辩 1天设计验收安排:设计周的第三周的指定时间到实验室进行上机验收。设计报告书收取时间:课程设计验收答辩完结时。(注意事项:严

3、禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名: 2013 年 12 月 10日系主任(或责任教师)签名: 2013 年 12 月 10日进程调度模拟设计时间片轮转、优先级法1设计目的1.1 阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解,能够使用其中的方法来进行进程调度模拟设计。1.2 练掌握并运用时间片轮转和优先级法,掌握一种计算机高级语言的使用。2 设计要求2.1 能够选择不同的调度算法(要求中给出的调度算法);2.2 能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;2.3 根据选择的调度算法显示进程调度队列;2.4 根据选择的调度

4、算法计算平均周转时间和平均带权周转时间。3 需求分析无论是在批处理系统、分时系统还是实时系统,用户进程数一般都多于处理机数,这将导致用户进程互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按照一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。进程调度的主要任务是按照某种策略和方法选取一个处于就绪状态的进程占用处理机。这次课程设计所要求使用的方法是时间片轮转和优先级法,并且能够选择不同的算法。而时间片轮转法的基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成比例。时间片轮转法的基本概念是将CPU的处理时间分成固定大小的时间片。如果一个进程选

5、中之后用完了系统规定的时间片,但未完成要求的任务,则它自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程或作业。优先级法是系统或用户按某种原则为作业或进程指定一个优先级来表示该作业或进程所享有的调度优先权。优先级高的作业或进程优先调度。4 程序流程图开始选择调度方法优先级法时间片轮转输入进程信息显示进程调度队列列计算平均周转时间和平均带权周转时间并显示出来5 功能设计 5.1数据结构typedef struct innodeint num;/进程提交顺序string pname;/进程名double ctime;/到达时间dou

6、ble rtime;/运行时间double yx;/优先级int bj;/标记项innode *next;*inlist;typedef struct rnodestring pname;/进程名double ctime;/到达时间double rtime;/执行时间double stime;/开始时间double etime;/结束时间double ztime;/周转时间double dztime;/带权周转时间double xu;/执行次序rnode *next;*rlist;typedef struct dnodestring pname;/进程名double ctime;/到达时间do

7、uble rtime;/执行时间double rrtime;double stime;/开始时间double etime;/结束时间double ztime;/周转时间double dztime;/带权周转时间int bj;int bb;int xu;dnode *next;*dlist;5.2主要函数int main()void INPUT(int n) /用来输入进程的基本信息void RR(inlist &head,int len) /使用时间片轮转法来进行进程调度void SRR(inlist &head,int len) /使用优先级法来进行进程调6 源程序各部分代码

8、及分析 本次程序主要由三个部分组成:main函数部分,时间片轮转算法RR函数,和优先级算法SRR函数。6.1 main函数部分int main()int choice;cout << "请选择方法,1.时间片轮转。2.优先级法" << endl;cin >> choice;if(choice = 1)INPUT(1);else if(choice = 2)INPUT(2);elsecout << "Error" << endl;return 0;6.2 时间片轮转法函数代码void RR(inl

9、ist &head,int len)dlist dhead,dp,dq;cout << "时间片法" << endl;double time;cout << "请输入时间片长度" << endl;cin >> time;inlist p = head;dp = new dnode;dp->pname = p->pname;dp->ctime = p->ctime;dp->rtime = p->rtime;dp->rrtime = dp->r

10、time;dp->bj = 0;dp->xu = 1;dp->next = NULL;dhead = dp;p = head->next;int rnum = 2; while(p)dq = new dnode;dq->pname = p->pname;dq->ctime = p->ctime;dq->rtime = p->rtime;dq->rrtime = dq->rtime;dq->bj = 0;dq->next = NULL;dq->xu = rnum;dp->next = dq;dp =

11、dq;rnum+;p = p->next;double letime = dhead->ctime;rlist rhead,rp,rq;rp = new rnode;rp->next = NULL;rp->xu = -1;rhead = rp;while(1)dp = dhead;int rn = 0;while(dp)if(dp->ctime <= letime && dp->bj != 1)if(dp->bb != 1)dp->stime = letime;dp->bb = 1;if(dp->rrtime &

12、gt; time)dp->etime = letime + time;dp->rrtime = dp->rrtime - time;letime += time; else if(dp->rrtime = time)letime += time;dp->bj = 1;rq = new rnode;rq->next = NULL;rq->pname = dp->pname;rq->ctime = dp->ctime;rq->rtime = dp->rtime;rq->stime = dp->stime;rq-&g

13、t;etime = letime;rq->ztime = rq->etime - rq->ctime;rq->dztime = rq->ztime / rq->rtime;rq->xu = dp->xu;if(rp->xu = -1)rp->next = rq;rp = rq;elserlist r1,r2;r1 = rhead;r2 = r1->next;int n = 0;while(r2)if(rq->xu < r2->xu)r1->next = rq;rq->next = r2;n = 1;

14、break;r1 = r2;r2 = r2->next;if(n = 0)r1->next = rq;elseletime += dp->rrtime;dp->bj = 1;rq = new rnode;rq->next = NULL;rq->pname = dp->pname;rq->ctime = dp->ctime;rq->rtime = dp->rtime;rq->stime = dp->stime;rq->etime = letime;rq->ztime = rq->etime - rq-

15、>ctime;rq->dztime = rq->ztime / rq->rtime;rq->xu = dp->xu;if(rp->xu = -1)rp->next = rq;rp = rq;elserlist r1,r2;r1 = rhead;r2 = r1->next;int n = 0;while(r2)if(rq->xu < r2->xu)r1->next = rq;rq->next = r2;n = 1;break;r1 = r2;r2 = r2->next;if(n = 0)r1->nex

16、t = rq;if(dp->bj != 1)rn+;if(rn = 0)dlist df = dp->next;if(df)if(df->ctime > letime)letime = df->ctime;dp = dp->next;if(rn = 0)break;cout << "进程名 提交时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 执行顺序" << endl;rp = rhead->next;while(rp)cout << rp->pname << &qu

17、ot; " << rp->ctime << " " << rp->rtime << " " << rp->stime << " " << rp->etime << " " << rp->ztime << " " << rp->dztime << " " << rp->xu

18、 << endl;rp = rp->next;6.3 优先级法函数代码void SRR(inlist &head,int len)inlist inhead = head;double letime;cout << "优先级法" << endl;rlist rhead,rp,rq;rp = new rnode;rp->next = NULL;rp->pname = inhead->pname;rp->ctime = inhead->ctime;rp->rtime = inhead->

19、rtime;rp->stime = inhead->ctime;rp->etime = rp->stime + inhead->rtime;letime = rp->etime;rp->ztime = rp->etime - rp->ctime;rp->dztime = rp->ztime / rp->rtime;rp->xu = 1;rhead = rp;inhead->bj = 1;int num;for(int i = 0; i < len - 2 ;i+)inhead = head->nex

20、t;int bb = 0;double nn = 0;while(inhead)if(inhead->yx > nn && inhead->bj != 1 && inhead->ctime <= letime)nn = inhead->yx;num = inhead->num;bb = 1;inhead = inhead->next;if(bb = 1)inhead = head->next;while(inhead)if(inhead->num = num)rq = new rnode;rq->

21、next = NULL;rq->pname = inhead->pname;rq->ctime = inhead->ctime;rq->rtime = inhead->rtime;rq->stime = letime;rq->etime = rq->stime + rq->rtime;letime = rq->etime;rq->ztime = rq->etime - rq->ctime;rq->dztime = rq->ztime / rq->rtime;rq->xu = i + 2;

22、rp->next = rq;rp = rq;inhead->bj = 1;break;inhead = inhead->next;elseinhead = head->next;while(inhead)if(inhead->bj != 1)rq = new rnode;rq->next = NULL;rq->pname = inhead->pname;rq->ctime = inhead->ctime;rq->rtime = inhead->rtime;rq->stime = inhead->ctime;rq

23、->etime = rq->stime + inhead->rtime;letime = rq->etime;rq->ztime = rq->etime - rq->ctime;rq->dztime = rq->ztime / rq->rtime;rq->xu = i + 2;rp->next = rq;rp = rq;inhead->bj = 1;break;inhead = inhead->next;rp = rhead; cout << "进程名 提交时间 运行时间 开始时间 结束时

24、间 周转时间 带权周转时间 执行顺序" << endl;while(rp)cout << rp->pname << " " << rp->ctime << " " << rp->rtime << " " << rp->stime << " " << rp->etime << " " << rp->ztime << " " << rp->dztime << " " << rp->xu

温馨提示

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

评论

0/150

提交评论