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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

时间片轮转进程调度模拟算法的实现.docx

1、时间片轮转进程调度模拟算法的实现武汉理工大学华夏学院课程设计报告书课程名称: 操作系统原理 题 目:时间片轮转进程调度模拟算法的实现 系 名: 信息工程系 专业班级: 计算机1132班 * * 学 号: * * * 2015年 6 月 26日武汉理工大学华夏学院信息工程系课 程 设 计 任 务 书课程名称: 操作系统原理课程设计 指导教师: 司晓梅 班级名称:计算机1131-2 开课系、教研室: 自动化与计算机 一、课程设计目的与任务操作系统课程设计是操作系统原理课程的后续实践课程,旨在通过一周的实践训练,加深学生对理论课程中操作系统概念,原理和方法的理解,加强学生综合运用操作系统原理、Lin

2、ux系统、C语言程序设计技术进行实际问题处理的能力,进一步提高学生进行分析问题和解决问题的能力,包含系统分析、系统设计、系统实现和系统测试的能力。学生将在指导老师的指导下,完成从需求分析,系统设计,编码到测试的全过程。二、课程设计的内容与基本要求1、课程设计题目 时间片轮转进程调度模拟算法的实现2、课程设计内容用c/c+语言实现时间片轮转的进程调度模拟算法。要求:1 至少要有5个以上进程2 进程被调度占有CPU后,打印出该进程正在运行的相关信息提示:时间片轮转调度算法中,进程调度程序总是选择就绪队列中的第一个进程,也就是说按照先来先服务原则调度,但一旦进程占用处理机则仅使用一个时间片。在使用完

3、一个时间片后,进程还没有完成其运行,它必须释放出处理机给下一个就绪的进程,而被抢占的进程返回到就绪队列的末尾重新排队等待再次运行。1)进程运行时,只打印出相关提示信息,同时将它已经运行的时间片加1就可以了。2)为进程设计出PCB结构。PCB结构所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息等。 3、设计报告撰写格式要求:1设计题目与要求 2 设计思想 3系统结构 4 数据结构的说明和模块的算法流程图 5 使用说明书(即用户手册):内容包含如何登录、退出、读、写等操作说明6 运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)7 自我评价与总结 8 附录:

4、程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;三、课程设计步骤及时间进度和场地安排本课程设计将安排在第17周, 现代教育技术中心。具体安排如下:时间设计内容第一天下发任务书,学生查阅资料第二天系统设计和原型开发第三天-第四天系统功能实现第五天系统调试、测试、打包和验收课程设计集中时间安排:周次星期一星期二星期三星期四星期五第17周第2-3节第2-3节第2-3节第2-3节第3-6节地点现教现教现教现教现教四、课程设计考核及评分标准课程设计考核将综合考虑学生的系统设计方案、运行结果、课程设计报告书的质量、态度、考勤、答辩情况等各因素。具体评分标准如下:(1)设计方案正确,具

5、有可行性、创新性; 30分(2)系统开发效果较好; 20分(3)设计报告规范、课程设计报告质量高、参考文献充分 20分(4)课程设计答辩时,问题回答正确; 20分(5)态度认真、刻苦钻研、遵守纪律; 10分 按上述五项分别记分后求和,总分按五级制记载最后成绩。优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)一、设计题目与要求:进程时间片轮转调度算法。要求:用C+语言编写程序完成单处理机的进程调度,要求采用时间片轮转调度算法。实验具体要求包括:首先确定作业控制块的内容和组成方式;然后完成作业调度;最后编写主函数,并对所做工作进行测试。二、设计思

6、想:在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。对调度的处理又都可采用不同的调度方式和调度算法。调度算法是指:根据系统的资源分配策略所规定的资源分配算法。三、系统结构处理机管理模拟系统由创建进程、运行程序和显示结果三部分组成。而它们又分别包括输入进程信息、创建结点和插入结点三个步骤。系统功能说明:创建进程模块在输入进程页面输入要创建的进程数,输入后逐个将进程信息录入插入到就绪队列中,完成进程的创建过程。运行程序模块:此模块实现时间片轮转调度算法,从就绪队列中取出进程结点,并模拟运行该进程,反复循环,直至进程全部运行结束。每次运行进程后,将运行信息存入到文件中,实

7、现信息的持久化。方便信息的记录,系统功能的分析和出错时便于检查错误。现实结果模块:从文件读入进程运行的结果,在图形界面下操作,提供友好的用户操作方式,方便直观了解进程呢过的调度过程,便于数据的分析和研究。算法描述:1、在创建进程界面将进程信息录入,将进程控制块进行包装,插入到循环队列中;2、当运行程序时,每次从就绪队列队首取出一个进程,判断是P进程是否到达。到达则运行该进程;3、若P进程为首次运行,则记录进程开始运行时间;4、运行完P进程后,输入进程运行信息,并将此进程移动至队尾;5、若循环队列长度大于1,则返回执行B,否则结束程序。四、数据结构的说明和模块的算法流程图 typedef str

8、uct jcb char nameN; int prio; int round; int cputime; int needtime; int count; char state; struct node *next; PCB图1流程图五、使用说明(1)建立一个进程控制块PCB来代表。PCB包括:进程名、链接指针、到达时 间、估计运行时间、剩余时间和进程状态。进程状态分为就绪(W)、运行(R)和完成(F)。(2)为每个进程任意确定一个要求运行时间和到达时间。(3)按照进程到达的先后顺序排成一个循环队列。再设一个对首指针指向第一个到达进程的首址。(4)执行处理机调度时,开始选择对首的第一个进程运

9、行。另外再设一个当前 运行进程的指针,指向当前正运行的进程。(5)执行:a)预计运行时间减1;b)输出当前运行进程的名字。(6)进程执行一次后,若该进程的剩余运行时间为零,则将该进程的状态置为完成态F,并退出循环队列;若不为空,则将其移至队尾。继续在运行队首的进程。(7)若就绪队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。在所设计的调度程序中,要求包含显示或打印语句。以便显示或打印每次选操作系统课程设计中进程的名称及运行一次后队列的变化情况。六、运行结果1、输入数据图2 输入数据2、运行结果示例(1)数据输入完成后的初始状态,进程标识为 x1的进程首先得到调度,运行10个时

10、间单位。图3运行结果1(2)进程标识为x2的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图4运行结果2(3)进程标识为x3的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图5运行结果3(4)进程标识为x4的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图6运行结果4(5)进程标识为x5的进程得到调度,从就绪态“W” 改为运行态 “R”,运行10个时间单位。图7运行结果5(6)进程标识为x1的进程再次得到调度,从就绪态“W”改为运行态“R”,因进程x1只剩下5个单位时间,所以进程 x1只运行5个单位时间。图8运行结果6(7)进程标识为

11、x2的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。进程x1已运行完,从运行态“R”改为运行结束状态“F”。图9运行结果7(8)进程标识为x3的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图10运行结果8(9)进程标识为x4的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图11运行结果9(10)进程标识为x5的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图12运行结果10(11)进程标识为x2的进程得到调度,从就绪态“W”改为运行态“R”,运行5个时间单位。进程x5已运行完,从运行态“R”改为运行结束状态“F”

12、。图13运行结果11(12)进程标识为x3的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。进程x2已运行完,从运行态“R”改为运行结束状态“F”。图14运行结果12(13)进程标识为x4的进程得到调度,从就绪态“W”改为运行态“R”,运行10个时间单位。图15运行结果13 (14)进程标识为x3的进程得到调度,从就绪态“W”改为运行态“R”,运行5个时间单位。进程x4已运行完,从运行态“R”改为运行结束状态“F”。图16运行结果14(15)所有进程都已运行完,状态都为“F”。图17运行结果15七、小结在这次实验中,我能够正确分析实验过程和实验结果,思路清晰,能够比较好的理解

13、进程按时间片轮转算法这一调度过程,加深了我对进程时间片轮转调度过程的理解。但是还有很多不足。我自己的C+基础差,不能够自己编写这一调度算法的程序,只能通过网络和同学、老师的帮忙得到正确的程序编码;另外一开始输入进程运行需要的时间时,由于输入运行时间的数值较大,导致后面进程繁多,但后来及时改正,走了弯路,也增加了理解。因此以后要加强自己在C+方面的学习,能够理解源程序;并且要多上机操作,多调试多尝试,争取能理解好了解透。本次实验题需要详细阅读题目和不断地尝试才能找到简便的过程,能加强学生的上机操作能力。八、参考源程序#include #include #include #include type

14、def struct node char name10; int prio; int round; int cputime; int needtime; int count; char state; struct node *next; PCB;PCB *finish,*ready,*tail,*run; /队列指针int N; /进程数void firstin() run=ready; /就绪队列头指针赋值给运行头指针 run-state=R; /进程状态变为运行态 ready=ready-next; /就绪队列头指针后移到下一进程/输出标题函数void prt1(char a) if(to

15、upper(a)=P) /优先级法 cout endl; cout进程名 占用CPU时间 到完成还要的时间 轮转时间片 状态endl;/进程PCB输出void prt2(char a,PCB *q) if(toupper(a)=P) /优先级法的输出 coutname cputime needtime round statenext; p=finish; /输出完成队列的PCB while(p!=NULL) prt2(algo,p); p=p-next; getchar(); /按住任意键继续/时间片轮转的插入算法void insert(PCB *q) PCB *p1,*s,*r; s=q;

16、/待插入的PCB指针 p1=ready; /就绪队列头指针 r=p1; /*r做pl的前驱指针 while(p1!=NULL) if(p1-roundround) r=p1; p1=p1-next; if(r!=p1) r-next=s; s-next=p1; else s-next=p1; /否则插入在就绪队列的头 ready=s; /优先级创建初void create(char alg) PCB *p; int i,time; char na10; ready=NULL; finish=NULL; run=NULL; cout输入进程名及其需要运行的时间:endl; for(i=1;ina

17、; cintime; strcpy(p-name,na); p-cputime=0; p-needtime=time; p-state=W; p-round=0; if(ready!=NULL) insert(p); else p-next=ready; ready=p; cout输入进程名及其需要运行的时间:next; run-state=R;void timeslicecycle(char alg) while(run!=NULL) run-cputime=run-cputime+10; run-needtime=run-needtime-10; run-round=run-round+10; if(run-needtimenext=finish; finish=run; run-state=F; run=NULL; if(ready!=NULL) firstin(); else run-state=W; insert(run); firstin(); prt(alg); /主函数void main() char algo=P; /算法标记 coutN; /输入进程数 create(algo); /创建进程 timeslicecycle(algo); /优先级法调度 /main()设计过程中质疑(或答辩)记载:指导教师评语:签名: 年 月 日

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

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