




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机操作系统实验9293b7ba2e08c98aa3a4a0b714162243.pdf_郁博文计算机操作系统实验报告学 院:信息科学与工程学院专业班级: 信息安全1302班 指导老师: 郁博文 学 号: 0906130205 计算机操作系统1.设计目的1、增强学生对计算机操作系统基本原理、基本理论、基本算法的理解;2、提高和培养学生的动手能力。2.设计要求1、每人至少选作1题,多做不限;2、每人单独完成,可以讨论,但每人的设计内容不得完全相同,抄袭或有2人/多人设计完全一样者,不能通过;3、设计完成后,应上交课程设计文档,文档格式应是学校课程设计的标准格式,所有学生的封面大小、格式也必须一样;4、同时上交设计的软盘(或以班刻录光盘)。3.设计题目调度算法的模拟:模拟各种调度算法,并进行调度性能分析。4.设计过程4.1 设计思路 模拟了一个作业调度算法,其中用到了先来先服务算法(FCFS)、短作业优先算法(SJF)、最高响应比优先算法(HRN)三种算法。 如下,分别为三种算法的程序流程图。4.2 实验过程图1 - 开始界面图2 输入作业的信息(名字、提交时间、运行时间)图3 选择算法(FCFS、SJF、HRN)图4、5 选择FCFS算法后输出结果图6、7 选择SJF算法后输出结果图8、9 选择HRN算法后输出结果4.3 调度性能分析1.先来先服务算法(FCFS)优点: 能体现公平性;缺点: 一旦一个较长的作业进入系统后就会长时间的占用系统的资源,这样如果有优先级较高的短作业需要执行的话需要等待很长时间。2.短作业优先算法(SJF)优点: 比前者改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高系统的吞吐量;缺点: 对长作业非常不利,可能长时间得不到执行,未能一句作业的紧迫程度来划分执行的优先级,难以准确估计作业的执行时间,从而影响调度性能。3.最高响应比优先算法(HRN)优点:这种算法是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。缺点:由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。5.总结在实验中,由于对算法细节不够熟悉,以及对c语言的遗忘,我遇到了不少困难。因而,在克服这些困难的过程中,我对FCFS算法有了更加深刻而透彻的理解,c语言的一些基本操作也得到了巩固。今后我亦将多多练习,毕竟理论与实践结合才是最好的学习方法。6.代码附录#include #include #define getpch(type)(type*)malloc(sizeof(type)struct worktimefloat Tb;/作业运行时刻float Tc;/作业完成时刻float Ti;/周转时间float Wi;/带权周转时间;struct jcb /*定义作业控制块JCB*/char name10;/作业名float subtime;/作业提交时间float runtime;/作业所需的运行时间char resource;/所需资源float Rp;/后备作业响应比char state;/作业状态struct worktime wt;struct jcb *link;/链指针*jcb_ready = NULL, *j;typedef struct jcb JCB;float T = 0;void sort()/*建立对作业进行提交时间排列函数*/JCB *first, *second;int insert = 0;if (jcb_ready = NULL) | (j-subtime)subtime)/*作业提交时间最短的,插入队首*/j-link = jcb_ready;jcb_ready = j;T = j-subtime;j-Rp = 1;else/*作业比较提交时间,插入适当的位置中*/first = jcb_ready;second = first-link;while (second != NULL)if (j-subtime)subtime)/*若插入作业比当前作业提交时间短,*/ /*插入到当前作业前面*/j-link = second;first-link = j;second = NULL;insert = 1;else/*插入作业优先数最低,则插入到队尾*/first = first-link;second = second-link;if(insert = 0) first-link = j;void SJFget()/*获取队列中的最短作业*/JCB *front, *mintime, *rear;int ipmove = 0;mintime = jcb_ready;rear = mintime-link;while (rear != NULL)if (rear != NULL) & (T = rear-subtime) & (mintime-runtime)(rear-runtime)front = mintime;mintime = rear;rear = rear-link;ipmove = 1;elserear = rear-link;if(ipmove = 1)front-link = mintime-link;mintime-link = jcb_ready;jcb_ready = mintime;void HRNget()/*获取队列中的最高响应作业*/JCB *front, *mintime, *rear;int ipmove = 0;mintime = jcb_ready;rear = mintime-link;while (rear != NULL)if(rear != NULL) & (T = rear-subtime) & (mintime-Rp)Rp)front = mintime;mintime = rear;rear = rear-link;ipmove = 1;elserear = rear-link;if(ipmove = 1)front-link = mintime-link;mintime-link = jcb_ready;jcb_ready = mintime;void input()/*建立作业控制块函数*/int i,num;printf(nplese input the number of the job:);scanf(%d, &num,2);for(i = 0; iname);printf(nplease input the time when the job was submitted:);scanf(%f, &j-subtime);printf(nplease input the runtime of the job:);scanf(%f, &j-runtime);printf(n);j-state = w;j-link = NULL;sort();/*调用sort函数*/int space()int l = 0;JCB *jr = jcb_ready;while(jr != NULL)l+;jr = jr-link;return(l);void disp(JCB* jr, int select)/*建立作业显示函数,用于显示当前作业*/if(select = 3)printf(nwork service time response ratio runtime complete time turnover time weighted turnover timen);elseprintf(nwork service time runtime complete time turnover time weighted turnover timen);printf(|%st, jr-name);printf(|%.2ft, jr-runtime);if(select = 3)printf(|%.2f, jr-Rp);if(j = jr)printf(|%.2ft, jr-wt.Tb);printf(|%.2f, jr-wt.Tc);printf(|%.2ft, jr-wt.Ti);printf(|%.2f, jr-wt.Wi);printf(n);void check(int select)/* 建立作业查看函数 */ JCB* jr; printf(n * the running job is:%s,j-name);/*显示当前运行作业*/ disp(j,select); jr=jcb_ready; printf(n *the current ready queue is:n);/*显示就绪队列状态*/ while(jr!=NULL) jr-Rp=(T-jr-subtime)/jr-runtime; disp(jr,select); jr=jr-link; destroy();int destroy()/*建立作业撤消函数(作业运行结束,撤消作业)*/ printf(n job %s is completed.n,j-name); free(j);void running(JCB* jr)/* 建立作业就绪函数(作业运行时间到,置就绪状态*/ if (T=jr-subtime) jr-wt.Tb=T; else jr-wt.Tb=jr-subtime; jr-wt.Tc=jr-wt.Tb+jr-runtime; jr-wt.Ti=jr-wt.Tc-jr-subtime; jr-wt.Wi=jr-wt.Ti/jr-runtime; T=jr-wt.Tc;int main()/*主函数*/ int select=0,len,h=0; float sumTi=0,sumWi=0; input(); len=space(); printf(nt1.FCFS 2.SJF 3.HRNnnplease choose a Algorithm:); scanf(%d,&select); while(len!=0)&(jcb_ready!=NULL) h+; printf(n excute %d job n,h); j=jcb_ready; jcb_ready=j-link; j-link=NULL; j-state=R; running(j); sumTi+=j-wt.Ti; sumWi+=j-wt.Wi; check(select); if(select=2&hlen-1) SJFget(); if(select=3&hlen-1) HRNget(); printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤炭工业矿井抗震设计规范2025年
- 防汛相关知识培训
- Unit 1 A New Start Developing ideas 课件 高中英语外研版必修第一册
- 网络科技行业发展报告与前景
- 健康养生产品运营方案
- 最有可信度的房产买卖合同4篇
- 关于2025公路工程施工合同2篇
- 炎症细胞因子网络-洞察及研究
- 四川省德阳市第五中学2025-2026学年高二上学期开学考试物理试卷
- 部队依法治军课件
- 护理陪检课件
- 幼儿园开学卫生消毒培训
- 医院信息化建设中长期规划(十五五规划2025年)
- 2024年全国导游资格考试《全国导游基础知识》真题和解析
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 中式面点课件
- 抖店内衣考试题库及答案
- 黄金回收合同协议书模板
- 招商局集团招聘考试真题2024
- 《提升思维高度:战略思维培养与应用》课件
- 认知障碍老人护理步骤
评论
0/150
提交评论