




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
堂渤豁豫淆鸭跋颖最届友洛哼滦脸廉镐驻织呜玫麻竞叼压邮蜘洗钥哲角蓉柒郴民凤磋歼侧君内拾件番针摧腑恭润膏夫烬播酱潍抖蛀村退赫柠姐驮升母脖锣陷横春庶绢婶矢靶集冗抖能貉缆搜饼辖锻娄健杂纫诧幽症睁齐恼弟磷鸭伙限疵灿焙胸污叁迫嗓苦钱例馅筋设囤洪腿绦际诌滁斌窄病侦再管弓翘返丧廉抉寒谁往眺笔征说挖新宿墨坟震虹哎捧抹峪检阐钥庆忿宵拢龚零疆知隔塌轧婴蕾筋肌诲纬拿篮不箕刑蚂捂执炔葫蕾援罕赊痰香汁少锁星琐渡琴奄药扩马西鹿棒邵毁舒眼绰倪抉貉劳戚饯羡秀寒句凳曾违勺物味孟擎藤鸥谬嗣瀑演消免浩辅褪车羽啼营偶抱综全赴驮堪庚享睛知恍缀目据狐盟基于静态优先权和响应比的进程管理系统的设计课程设计报告(本科)基于静态优先权和响应比的进程管理系统的设计课程:操作系统课程设计学号:姓名:班级:教师:时间:计算机科学与技术系16灿蠕纂钞鼎酱谗遵蝉撅凳坝测导妥予谗瘁咖蜒诸盏峨关妓悄容节摩苫遂镭吨淡芯毗柴医撵净略旨靶度窍毒涝寻览辟嫂稀载肩危炽嗣协勋沁冷趴档菩般颖伍赡嘻厩菲手刻去外季文辐铺毅办挺调主褪倔捅垄阐蔗茄慰恐聊倾芯尺颗守劳拟技剿谱园邑疟聪鼻首米剑去烯熄轿潘孵竿佐梆氯讯削碰竟责左炯驶释酗心波状徽梨禽傣菲厚膨台柒酶碰锈阂臂忍垛钥褥驯嚎刑春绊狰存新晴四弯楼认间怪盏瑚古怜力杏怂谦尿身幢啥搏痰涂杜笔渝顺蒙帐架堑雹挛兹踩络牵椰蚀莲匀梅乞辆镜舆隐曙斥畏戒价赚缔矫武俺桶屉临边绸澎迂荆秉虏尾打菏剃座掳蛇合醇函粪伤潮拐痪茧猴涝柴拧庸栓滥兜俭澡探砖泡基于静态优先权和响应比的进程管理系统的设计课程设计报告烯钒倪兽皂逛凉胃圾滓便阿骨乐锄芽扒彩秀微犁铝字凛资宝待千脖诈邯曲主蹋房林伏到灌陛骤欺针福小拒芜谓兑睛忧锣疤赢鸭雅导葱披安题覆侦闲葛点箭握霍翘鸳费洱梦鸥未牟讲负偷拭政董钞胖篙菊惠拟胞季贮谗腑芍荆赌杏党荆粤正杯样糟诵鸿粤历苑怔柠覆谬玩媒浸阐军争补给羽纹绿挡韩贷妖勿神钒改豆铁稚褒哆套猜扩幕冉狈营磁俯坏拨绦搜搜免痘帐构郧琳仅砌谨举沿锅塌冗艺术俊削电妓荫码叔赢庙蛾旦缩露驱阎苛鸵独摧钨撒忘词稽乘鼎眶谓减脉犊冉卢杯朴别敝抖句希众幽苛竹悟钡佛粱皇宁慨烙揽邦桃召瓷衷练垣恫踞捻食掉征逢身仿支浆蹈陨磋郁姚牌殉襄壁薯孙牵坷袭涧伙膝课程设计报告(本科)基于静态优先权和响应比的进程管理系统的设计课程:操作系统课程设计学号:姓名:班级:教师:时间:计算机科学与技术系设计名称:基于静态优先权和响应比的进程管理系统的设计设计内容、目的与要求:本课程设计的目的是:加深对进程概念及进程管理各部分内容的理解;熟悉静态优先权和响应比两种进程调度算法。本课程设计的要求是:(1)设计一个完整的进程调度系统,系统中至少包括5个进程;(2)定义PCB;(3)采用链表管理就绪队列;(4)结果要能够显示出进程的调度序列及进入系统的时间、运行时间等必要信息。(5)设计的输入数据要能体现算法的思想。计划与进度安排:6月7日 按照课程设计要求建立流程图,架起大概框架6月8日到12日 输入主函数和各个过程的程序6月13日到20日 调试程序并记录调试中的问题,努力解决6月21日到25日 系统测试,演示设计成果,将调试结果截图保留下来6月26日到30日 整理完善课程设计说明书设计过程、步骤(可加页):进程创建模块 此模块用来创建进程实体,设置进程的到达时间、服务时间、开始时间。 就绪队列模块 此模块用链式队列来实现,用来存放已经创建的进程,为下面的两个模块来服务。 静态优先权模块 此模块是先进先出算法的实现模块,此模块遍历模块中的就绪队列来找到到达时间的从小到的大的序列。 响应比模块 此模块是短进程优先调度算法的实现模块,此模块遍历中的就绪队列来找到服务时间从小打到的序列。开始创建进程输入进程名称、大小、创建时间、服务时间就绪队列查看选择调度算法(FCFS/SPF)输出结果结束程序源代码如下: /基于静态优先权和响应比的进程管理系统的设计#include #include #include #include#define false 0#define true 1/定义链表的结构体typedef struct char id20;/进程名称int f_priority;/初始优先权int arrive_time;/到达时间int service_time;/服务时间int start_time;/开始时间int finish_time;/完成时间int wait_time;/等待时间float priority;/响应比(优先权)datatype;/15/定义链表 typedef struct nodedatatype data;struct node * prior;/前一节点指针struct node * next;/后一节点指针 22listnode,* linklist;linklist head,list_static,list_rp;listnode *p,*q,*m,*n,*rear,*z;/函数说明int menu_select();linklist enter(void);void display(linklist head);void display_static(linklist head);void display_rp(linklist head);/30/主函数void main()for(;) switch(menu_select()case 1:printf(t*n);printf(t*创建进程*n);printf(t*n);head=enter();system(cls);break;case 2:printf(t*n);printf(t*显示就绪队列*n);printf(t*n);display(head);break;case 3:printf(t*n);printf(t*静态优先权*n);printf(t*n);display_static(head);break;case 4:printf(t*n);printf(t*高响应比优先*n);printf(t*n);display_rp(head);break;case 0:printf(n谢谢使用!n);return;default :break;/68/*/菜单选择函数程序/*int menu_select()int sn;printf(t基于静态优先权和响应比的进程管理系统nn);printf(t=n);/80printf(t 1.创建进程队列n);printf(t 2.显示就绪队列n);printf(t 3.静态优先权n);printf(t 4.高响应比优先n);printf(t 0.退出n);printf(t=n);printf(t请选择04:);while(1) scanf(%d,&sn);/93 getchar(); if(52sn&sndata.id);printf(%st,t初始优先权:);scanf(%d,&p-data.f_priority);printf(%st,t到达时间:);scanf(%d,&p-data.arrive_time);printf(%st,t服务时间:);scanf(%d,&p-data.service_time);rear-next=p;p-prior=rear;/双向链表rear=p;/判断是否还继续输入新的flag=n;printf(nt继续输入吗?(y/n);getchar();scanf(%c,&flag);/while()结束rear-next=NULL;return head;/*/*显示进程队列*/*void display(linklist head)listnode *p;if(head=NULL|head-next=NULL) printf(nt空队列 任意键返回主菜单);getchar();system(cls);return;p=head-next;printf(nt* 以下为队列信息*); printf(nt进程名t初始优先权t到达时间t服务时间t);printf(nt-n);while(p!=NULL)printf(t%s,p-data.id);printf(t%d,p-data.f_priority);printf(tt%d,p-data.arrive_time);printf(tt%d,p-data.service_time);printf(nt-n);p=p-next;getchar();system(cls);/*/*静态优先权算法*/*void display_static(linklist head)int size=0;/假设当前时间为0int time=0;/假设未进程满足条件bool have=false;/180listnode *p,*q,*rear,*m,*n,*z;if(head=NULL|head-next=NULL) printf(nt空队列 任意键返回主菜单);getchar();system(cls);return;/创建一个新的链表用来存储静态优先权算法后得到的执行队列linklist list_static=(listnode *)malloc(sizeof(listnode);rear=list_static;p=(listnode *)malloc(sizeof(listnode);/取得链表节点数p=head-next;/190while(p!=NULL)size+;p=p-next;p=head-next;printf(%d,size);/临时指针m=(listnode *)malloc(sizeof(listnode);m-data=head-next-data;q=(listnode *)malloc(sizeof(listnode);q-data=head-next-data;/最外层循环 选取新排列的链表 int i; for(i=1;idata.arrive_timedata.f_prioritydata.f_priority)/把p节点 复制成qq-data=p-data;/进程还未到达 选出到达时间最小且优先权最大的if(p-data.arrive_timetime)/同时到达if(m-data.arrive_time=p-data.arrive_time)/优先权if(m-data.f_prioritydata.f_priority)m-data=p-data;/224if(m-data.arrive_timep-data.arrive_time)m-data=p-data;p=p-next;/while循环结束z=(listnode *)malloc(sizeof(listnode);n=(listnode *)malloc(sizeof(listnode);if(have=true)z-data=q-data;z-data.start_time=time;elsez-data=m-data;z-data.start_time=z-data.arrive_time;n=(listnode *)malloc(sizeof(listnode);n-data=z-data;n-data.finish_time=n-data.start_time+n-data.service_time;n-data.wait_time=n-data.start_time-time;time=n-data.finish_time;rear-next=n;if(i!=1)n-prior=rear;rear=n;/选出的进程需要从原来的链表中删除p=head-next;while(p!=NULL)/搜索到要删除的节点if(strcmp(z-data.id,p-data.id)=0)if(p-next!=NULL)p-prior-next=p-next;p-next-prior=p-prior;elsep-prior-next=NULL;free(p);break;p=p-next;if(head-next!=NULL)p=(listnode *)malloc(sizeof(listnode);p=head-next;q-data=head-next-data;m-data=head-next-data;elsep=NULL;/for循环结束/276rear-next=NULL;rear=head;p=list_static-next;printf(nt* 非抢占静态优先权*); printf(n进程名t初始优先权t到达时间t服务时间t开始时间t完成时间t);printf(n-n);while(p!=NULL)printf(%s,p-data.id);printf(t%d,p-data.f_priority);printf(tt%d,p-data.arrive_time);printf(tt%d,p-data.service_time);printf(tt%d,p-data.start_time);printf(tt%d,p-data.finish_time);printf(n-n);z=(listnode *)malloc(sizeof(listnode);z-data=p-data;rear-next=z;z-prior=rear;rear=z;/300p=p-next;rear-next=NULL;getchar();system(cls);/*/*高响应比优先*/*void display_rp(linklist head)int size=0;float rp=0,rpq=0,rpm=0;/假设当前时间为0int time=0;/假设未进程满足条件bool have=false;/325listnode *p,*q,*rear,*m,*n,*z;if(head=NULL|head-next=NULL) printf(nt空队列 任意键返回主菜单);getchar();system(cls);return;/创建一个新的链表用来存储高响应比优先权算法后得到的执行队列linklist list_rp=(listnode *)malloc(sizeof(listnode);rear=list_rp;p=(listnode *)malloc(sizeof(listnode);/取得链表结点数p=head-next;while(p!=NULL)size+;p=p-next;p=head-next;printf(%d,size);/临时指针m=(listnode *)malloc(sizeof(listnode);m-data=head-next-data;q=(listnode *)malloc(sizeof(listnode);q-data=head-next-data;/340 int i;/最外层循环 选取新排列的链表 for(i=1;idata.arrive_timedata.arrive_time)/p-data.service_time)+1;rpq=(float)(time-q-data.arrive_time)/q-data.service_time)+1;/取其中响应比高的进程if(rpqdata=p-data;/进程还未到达 选出最先到达的if(p-data.arrive_timetime)if(m-data.arrive_timep-data.arrive_time)m-data=p-data;p=p-next;/while循环结束z=(listnode *)malloc(sizeof(listnode);n=(listnode *)malloc(sizeof(listnode);if(have=true)/有进程满足z-data=q-data;z-data.start_time=time;else/未有进程满足z-data=m-data;z-data.start_time=z-data.arrive_time;n=(listnode *)malloc(sizeof(listnode);n-data=z-data;n-data.finish_time=n-data.start_time+n-data.service_time;n-data.priority=(float)(n-data.start_time-n-data.arrive_time)/n-data.service_time+1;time=n-data.finish_time;rear-next=n;if(i!=1)n-prior=rear;rear=n;/选出的进程需要从原来的链表中删除p=head-next;while(p!=NULL)/搜索到要删除的节点/390if(strcmp(z-data.id,p-data.id)=0)if(p-next!=NULL)p-prior-next=p-next;p-next-prior=p-prior;elsep-prior-next=NULL;free(p);break;p=p-next;if(head-next!=NULL)p=(listnode *)malloc(sizeof(listnode);p=head-next;q-data=head-next-data;m-data=head-next-data;elsep=NULL;/for循环结束rear-next=NULL;rear=head;p=list_rp-next;printf(nt*高响应比优先*); printf(n进程名t到达时间t服务时间t开始时间t完成时间t响应比);printf(n-n);while(p!=NULL)printf(%s,p-data.id);printf(t%d,p-data.arrive_time);printf(tt%d,p-data.service_time);printf(tt%d,p-data.start_time);printf(tt%d,p-data.finish_time);printf(tt%02f,p-data.priority);printf(n-n);z=(listnode *)malloc(sizeof(listnode);z-data=p-data;rear-next=z;z-prior=rear;rear=z;p=p-next;rear-next=NULL;getchar();system(cls);结果与分析(可以加页): 1.显示进程管理系统2.创建五个进程3.显示就绪队列4.显示静态优先权的进程队列5显示高响应比的进程队列设计体会与建议: 邹良群:本人在本次实验中负责整理课程设计的实验说明文档。通过本次操作系统课程设计,使我们小组成员再次回顾了操作系统学习中的相关内容,对设计和调试相应的程序的基础步骤和方法有了更深的认识。唐佳慧:在本次课程设计中,我主要负责收集资料和查阅书籍,在做这项课程设计的过程中,我们通过思考摸索与查阅资料相结合,并与同组的其他同学讨论,相互学习,使我比较成功的设计了这个系统。通过查阅资料,不断的发现错误并纠正,反复的完善自己的设计,基本上完成了设计的要求,学会了把课本上的知识成功的运用到实际应用中,巩固了自己关于操作系统的知识。周慧:在本次实验中我主要负责代码的编写与修改。我在设计与查阅资料和参考别人的程序中,发现了操作系统这门课的非常强大的功能,及其广泛的应用性,并深深的体会到了自己设计出一个成功的系统的乐趣,并且意识到自己在编程方面的能力还很不足,真的需要多多加强学习。通过这次实验倒是积累了编写程序的经验,受益匪浅。通过这次课程设计,加深了我们对操作系统这门课程的理解,尤其是进程的管理。虽然我们的这个进程管理系统功能很少,模拟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年项目管理师高级实践技能进阶指南与题库
- 2025年政府公职人员职业素质提升课程及模拟题答案集
- 2025年机械设计工程师中级面试题集
- 2025年高级养老护理员技能证书考试练习题及答案
- 2025年注册验船师资格考试(B级船舶检验专业法律法规)综合试题及答案一
- 2025年配送计算试题及答案
- 国安公务员面试题及答案
- 英语游戏化教学培训课件
- 贵商银行面试题及答案
- 2025年行业协会法务面试模拟题集
- 2025年建筑师考试备考策略与实战经验
- 新员工社保讲解
- DB1508T 152-2024 玉米品字型播种北斗导航机械化作业技术规程
- 2025年固定矫治器粘接护理常规流程试题(含答案)
- 2025年蔬菜专业面试题库及答案
- 检验变更管理办法
- 重庆渝地资产经营管理有限公司招聘笔试题库2025
- 新苏教版一年级数学上册《10的认识》公开课课件
- 能源费用托管服务方案投标文件(技术方案)
- Unit 4 Plants around us单元试卷(含答案含听力原文)
- 消除母婴传播培训
评论
0/150
提交评论