《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc

上传人:爱问知识人 文档编号:3259542 上传时间:2019-08-06 格式:DOC 页数:20 大小:243.53KB
返回 下载 相关 举报
《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc_第1页
第1页 / 共20页
《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc_第2页
第2页 / 共20页
《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc_第3页
第3页 / 共20页
《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc_第4页
第4页 / 共20页
《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc》由会员分享,可在线阅读,更多相关《《操作系统》课程设计说明书-进程调度模拟设计——先来先服务、优先级法.doc(20页珍藏版)》请在三一文库上搜索。

1、武汉理工大学操作系统课程设计说明书学 号: 0120810340102课 程 设 计课程名称操作系统程序设计题 目进程调度模拟设计先来先服务、优先级法班 级计算机0801班学 号姓 名指导教师2010年01月17日课程设计任务书学生姓名: 专业班级: 计算机0801 指导教师: 工作单位: 计算机科学与技术学院 题 目: 进程调度模拟设计先来先服务、优先级法 初始条件:1预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟进程调

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

3、;v)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日进程调度模拟设计先来先服务、优先级法1需求分析1.1设计目的1.阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2.掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.2设计要求1.能够选择不同的调度算法(要求中给出的调

4、度算法);2.能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;3.根据选择的调度算法显示进程调度队列;4.根据选择的调度算法计算平均周转时间和平均带权周转时间。2. 功能设计2.1数据结构1.进程的结构定义:struct processchar name10; /进程名int no; /进程序号double arriveTime; /进程到达时间double needTime; /进程运行时间int state; /进程状态int priority; /进程优先级double startTime; /进程开始执行时间double endTime; /进程执行完毕时间proces

5、s *next;2.使用链表储存进程并按照到达时间排列顺序开始链表空?插到链头比较当前结点的到达时间与连续两个结点(p1,p1-next)的到达时间。在两结点之间?插入它们之间p1=p1-next结束void insert(process *current)if(head!=NULL)/如果只有一个节点if(head-next=NULL)/如果比链头到达时间早,则插入链头if(current-arriveTimearriveTime)current-next=head;head=current;else current-next=NULL;head-next=current;/如果至少有两个结

6、点elseprocess *p1=head;if(head-arriveTimecurrent-arriveTime)current-next=head;head=current;else int flag=1;while(p1-next!=NULL)/如果在两个结点之间则插入if(p1-arriveTimearriveTime&p1-next-arriveTimecurrent-arriveTime)current-next=p1-next;p1-next=current;flag=0;break;else p1=p1-next;/如果到达时间最大,则插入到最后if(flag=1)p1-ne

7、xt=current;current-next=NULL;else head=current;2.2先来先服务算法设计2.2.1创建进程 void createFCFS()process *q1=new process;coutcount;coutendl;int number=1;while(numberno=number;cout进程序号numberendl;coutq1-name;coutq1-arriveTime;coutq1-needTime;q1-next=NULL;insert(q1);number+;coutendlnext;p=NULL?前一个结束,后一个是否到达p结点:开始

8、时间=到达时间结束时间=开始时间+执行时间系统时间=结束时间并计算周转时间和带权周转时间p=p-next;p结点:开始时间=系统时间结束时间=开始时间+执行时间系统时间=结束时间并计算周转时间和带权周转时间p=p-next;结束void printFCFS()process *p=new process;double sysTime=0;/记录系统时间double turn=0;/平均周转时间double turnw=0;/平均带权周转时间if(head=NULL) cout没有进程调度startTime=head-arriveTime;head-endTime=head-arriveTime

9、+head-needTime;sysTime=head-endTime;turn=turn+(head-endTime-head-arriveTime);turnw=turnw+(head-endTime-head-arriveTime)/head-needTime;p=head-next;while(p!=NULL)/如果前一个结束后一个还没到达if(p-arriveTimesysTime)p-startTime=p-arriveTime;p-endTime=p-startTime+p-needTime;sysTime=p-endTime;turn=turn+(p-endTime-p-arr

10、iveTime);turnw=turnw+(p-endTime-p-arriveTime)/p-needTime;p=p-next;elsep-startTime=sysTime;p-endTime=p-startTime+p-needTime;sysTime=p-endTime;turn=turn+(p-endTime-p-arriveTime);turnw=turnw+(p-endTime-p-arriveTime)/p-needTime;p=p-next;cout.setf(ios:left);coutsetw(10)进程序号setw(10)进程名setw(10)到达时间setw(10)

11、开始时间setw(10)执行时间setw(10)结束时间endl;process *temp=head;while(temp!=NULL)cout.setf(ios:left);coutsetw(10)nosetw(10)namesetw(10)arriveTimesetw(10)startTimesetw(10)needTimesetw(10)endTimenext;cout平均周转时间turn/countendl平均带权周转时间turnw/countnext!=NULL)process *t=new process;t=head-next;head-next=t-next;delete t

12、;head=NULL;2.3优先级算法设计2.3.1创建进程void createPRIO()process *q1=new process;coutcount;coutendl;int number=1;while(numberno=number;cout进程序号numberendl;coutq1-name;coutq1-arriveTime;coutq1-needTime;q1-next=NULL;insert(q1);number+;coutendl2)process *n0=head;process *n1=n0-next;process *n2=n1-next;for(int i=0

13、;iprioritypriority)n1-next=n2-next;n0-next=n2; n2-next=n1;n1=n0-next;n2=n0-next-next;n0=n1;n1=n2;n2=n2-next;2.3.3输出调度结果开始链表空?head结点:开始时间=到达时间结束时间=开始时间+执行时间系统时间=结束时间并计算周转时间和带权周转时间p=head-next;p=NULL?p结点:开始时间=系统时间结束时间=开始时间+执行时间系统时间=结束时间标记为已执行并计算周转时间和带权周转时间p=p-next;到达&未执行?结束void printPRIO()process *p=ne

14、w process;double sysTime=0;/记录系统时间double turn=0;/平均周转时间double turnw=0;/平均带权周转时间if(head=NULL) cout没有进程调度!startTime=head-arriveTime;head-endTime=head-arriveTime+head-needTime;head-state=1;sysTime=head-endTime;turn=turn+(head-endTime-head-arriveTime);turnw=turnw+(head-endTime-head-arriveTime)/head-need

15、Time;/判断后面的for(int i=0;inext;while(p!=NULL)/如果优先级最大的进程已经到达,则执行if(p-arriveTimestate=0)p-startTime=sysTime;p-endTime=p-startTime+p-needTime;sysTime=p-endTime;p-state=1;turn=turn+(p-endTime-p-arriveTime);turnw=turnw+(p-endTime-p-arriveTime)/p-needTime;p=p-next;else p=p-next;process *temp=head;cout.setf

16、(ios:left);coutsetw(10)进程序号setw(10)进程名setw(10)优先级setw(10)到达时间setw(10)开始时间setw(10)执行时间setw(10)结束时间endl;while(temp!=NULL)coutsetw(10)nosetw(10)namesetw(10)prioritysetw(10)arriveTimesetw(10)startTimesetw(10)needTimesetw(10)endTimenext;cout平均周转时间:turn/countendl平均带权周转时间:turnw/countnext!=NULL)process *t=n

17、ew process;t=head-next;head-next=t-next;delete t;head=NULL;3.开发平台及源程序的主要部分3.1开发平台Windows操作系统 Microsoft visual c+ 6.0环境C+高级语言3.2源程序主要部分int main()int choice;int go=1;while(go)coutendlendl-进程调度模拟设计-endlendl; cout1、先来先服务算法endl2、优先级法endl3、退出endlendl;coutchoice;switch(choice)case 1: FCFS();break; /调用先来先服务

18、算法求解case 2: PRIO();break; /调用优先级法求解case 3: cout退出endl;go=0;break;/返回首页default: cout选择有误,请重新输入选择!endl;break;system(pause);return 0;void FCFS()createFCFS();printFCFS();void PRIO()createPRIO();changePRIO();printPRIO();4程序测试4.1先来先服务测试用例进程序号进程名称到达时间执行时间1a142b133c224d334.2先来先服务运行结果4.3优先级算法测试用例进程序号进程名称优先级到

19、达时间执行时间1a1142b3243c4244d21354.4优先级算法运行结果5.自我评价与总结本次课程设计应用链表结构进行储存并排序,条理清晰,易于理解,程序编写完成以后,实现了预期的结果。界面设计比较清晰明了,易于阅读。本程序中,有些地方有重复,可以通过设计函数来简化程序,例如程序的创建,可以通过函数调用来实现,从而不必在两个算法中分别编写。编写程序时一定要先画程序的流程图,对应流程图的顺序来实现程序,并且应该注意合理的使用函数调用来使程序得到简化,并且易读易懂。本科生课程设计成绩评定表班级:计算机0801班 姓名:张 勇 学号:0120810340102序号评分项目满分实得分1学习态度

20、认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:201 年月日ut2ApOdfXXc02GyBKsKCWw97MrqqWhoj5TL15Zt6jIPYytYCummtARp3v1N5luizi3xh3BhWYreKO8d9g7nmZQoWPJeTLDrw08gVS8DsDQQYGC3cE7moO2tLF0Jf1gK74IUXyBmtIVR97CkrfVqU

21、LT5fn2t6MpJR6rbzVPSortZvIj5NB5ndVvSr4iWr1TwLFKgLSPzuhRjQ3CmZU98eUOuijdLSZqPmvrw9zKupxf8WFUG9l2G9277g2rTipa1YpCZEuqxpKBhtVDCooQOzxUz3vJrZmOcijyM62zchmeooTYes8EBMm932tbz2Yo09RtsZEYS8Zrd2Yktj8l6jEAzVAjnfbtryLvsm6oFbfToXVRFFn7OwIYgJlamkUNXJYbz5Rrb7r4VsuR9zpfZFMfsjhcfCA37lNW2VVLRKN7R8psz1BN6oRic5hU5Z6HCx

22、AYqyNPOG8duYbAwqSl20CSg06Dh2sM8HLtgPkIcSkrgOPDpuHBj1LmPk7lYdvC6NNMwL3fwhZFTFVYAARY7lHSSxJ10V3pH3Y19BxYR77Ib7CpZSu2tijqe3hKqkKAu9KSkCpHKXUIKvvyJZpg2YijRkqfbGgOvyqKuxNWI9oMnJtt6QilZxtyrF7d20FbmabcfiixrQKUsVNXBPPFUXyQ1fJSKFSUbkgs2DUVQC9sz4JkbgN4Qqv66pyoARjurNFJ3TxyfclZiEePtwFJthphEipDFNqnR2HjQKV2DzWtMP

23、DJQkBcXmovdsjqCTJagjMdLsKPgaD2s0H0vmZGAHt36gyUEZ7UmANk1ndREuBeqdgrx0venqGnsyIB2ilq3SIQrNL4m56t7Z8Y8da5K0KUpn5Nzg4JvjdtfFHyt82AoGQkXo4VBLmLEiy2P7HtHBho07rCfttxodYDPPdtQsO7wxD0J6fKKlGm4woDzplhtRr2XgqN13hqy59zU1GegDyQniHNTaVSieueFQcYfUCJwd3vk5I7YKmhunDmIZ ut2ApOdfXXc02GyBKsKCWw97MrqqWhoj5TL15Zt6jIPYytY

24、CummtARp3v1N5luizi3xh3BhWYreKO8d9g7nmZQoWPJeTLDrw08gVS8DsDQQYGC3cE7moO2tLF0Jf1gK74IUXyBmtIVR97CkrfVqULT5fn2t6MpJR6rbzVPSortZvIj5NB5ndVvSr4iWr1TwLFKgLSPzuhRjQ3CmZU98eUOuijdLSZqPmvrw9zKupxf8WFUG9l2G9277g2rTipa1YpCZEuqxpKBhtVDCooQOzxUz3vJrZmOcijyM62zchmeooTYes8EBMm932tbz2Yo09RtsZEYS8Zrd2Yktj8l6jEAzVAjn

25、fbtryLvsm6oFbfToXVRFFn7OwIYgJlamkUNXJYbz5Rrb7r4VsuR9zpfZFMfsjhcfCA37lNW2VVLRKN7R8psz1BN6oRic5hU5Z6HCxAYqyNPOG8duYbAwqSl20CSg06Dh2sM8HLtgPkIcSkrgOPDpuHBj1LmPk7lYdvC6NNMwL3fwhZFTFVYAARY7lHSSxJ10V3pH3Y19BxYR77Ib7CpZSu2tijqe3hKqkKAu9KSkCpHKXUIKvvyJZpg2YijRkqfbGgOvyqKuxNWI9oMnJtt6QilZxtyrF7d20Fbmabcfiixr

26、QKUsVNXBPPFUXyQ1fJSKFSUbkgs2DUVQC9sz4JkbgN4Qqv66pyoARjurNFJ3TxyfclZiEePtwFJthphEipDFNqnR2HjQKV2DzWtMPDJQkBcXmovdsjqCTJagjMdLsKPgaD2s0H0vmZGAHt36gyUEZ7UmANk1ndREuBeqdgrx0venqGnsyIB2ilq3SIQrNL4m56t7Z8Y8da5K0KUpn5Nzg4JvjdtfFHyt82AoGQkXo4VBLmLEiy2P7HtHBho07rCfttxodYDPPdtQsO7wxD0J6fKKlGm4woDzplhtRr2XgqN13hqy59zU1GegDyQniHNTaVSieueFQcYfUCJwd3vk5I7YKmhunDmIZ19

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1