操作系统程序调度课程设计报告.doc

上传人:土8路 文档编号:10438945 上传时间:2021-05-16 格式:DOC 页数:17 大小:602.50KB
返回 下载 相关 举报
操作系统程序调度课程设计报告.doc_第1页
第1页 / 共17页
操作系统程序调度课程设计报告.doc_第2页
第2页 / 共17页
操作系统程序调度课程设计报告.doc_第3页
第3页 / 共17页
操作系统程序调度课程设计报告.doc_第4页
第4页 / 共17页
操作系统程序调度课程设计报告.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《操作系统程序调度课程设计报告.doc》由会员分享,可在线阅读,更多相关《操作系统程序调度课程设计报告.doc(17页珍藏版)》请在三一文库上搜索。

1、课 程 设 计 报 告 课程名称课程名称 操作系统操作系统 课题名称课题名称 作业调度模拟作业调度模拟 专专 业业 通信工程通信工程 班班 级级 通信工程通信工程 学学 号号 姓姓 名名 指导教师指导教师 罗雅博罗雅博 黄哲黄哲 胡倩胡倩 2012 年年 6 月月 29 日日 湖南工程学院 课 程 设 计 任 务 书 课程名称 操作系统 课 题 作业调度模拟 专业班级 学生姓名 学 号 指导老师 罗雅博 黄哲 胡倩 审 批 任务书下达日期 2012 年 6 月 24 日 任务完成日期 2012 年 6 月 29 日 20092009 级通信工程专业级通信工程专业 操作系统操作系统课程设计任务书

2、课程设计任务书 一、课程设计的性质与目的一、课程设计的性质与目的 操作系统课程设计是集中实践性环节之一,是学习完操作系统课程后进行的 一次全面的综合练习。要求学生达到熟练掌握操作系统的基本理论知识;掌握不同的 调度算法;能够利用所学的基本编程知识,实现课程章节中涉及到的一些基本算法, 从而加深理论知识的理解。 二、二、 设计要求设计要求 1 要求利用高级程序设计语言编程完成相关算法; 2 程序具有清晰易懂的界面,有图形界面更佳; 3 程序具备要求的基本功能模块; 4 最终结果是能够运行的完整程序; 5 最后给出课程设计报告 三、课程设计报告要求三、课程设计报告要求 1 统一封面(本任务书附带)

3、 、设计题目、设计要求以及系统功能需求分析; 2 总体设计:包括系统总体设计框架和系统功能模块图; 3 详细设计。包括主要功能模块的算法设计思路以及对应的工作流程图; 4 主要源程序代码,并附有注释; 5 总结。包括课程设计过程中的学习体会与收获、对操作系统和本次课程设计的 认 识等内容。 6 附录(完整源程序清单):可以是手写或打印稿(注意:不能和其他同学一样) 7 报告最后附上评分表(见任务书末页) 四、检查要求:四、检查要求: 1 每个人至少选作一题,学号末尾 2 位对 5 取余,余数对应的题号就是每个人必 做题。必须有可运行的程序,每个人要通过答辩; 2 每个人必须交操作系统课程设计报

4、告 (打印稿) 五、评分五、评分 1 根据平时上机考勤,且每个人必须自己动手编写程序,不得抄袭; 2 根据程序运行结果; 3 学生能熟练地解释清楚指导老师对自己程序的提问; 4 课程设计报告完成的质量和规范; 六、时间、地点安排六、时间、地点安排 日期日期 6.256.256.276.276.286.28 时间时间 8:00-12:008:00-12:008:00-12:008:00-12:008:00-12:008:00-12:00 地点地点 E511E511 E511E511 七、课程设计题目七、课程设计题目 0.0. 进程调度算法的设计进程调度算法的设计 设计要求:设计要求: A.设计进

5、程控制块 PCB 表结构,分别适用于优先数调度算法和循环轮转调度算法。 B.建立进程就绪队列。对两种不同算法编制入链子程序。 C.编制两种进程调度算法:1)优先数调度;2)循环轮转调度 1. 银行家算法设计银行家算法设计 设计要求:设计要求:编制银行家算法通用程序,并检测所给状态的系统安全性。 2 2题目:题目:页面置换算法模拟设计 设计要求:设计要求:计算并输出下述各种算法在不同内存容量下的命中率。 A.FIFO 先进先出的算法 B.LRR 最近最少使用算法 C.OPT 最佳淘汰算法(先淘汰最不常用的页地址) D.LFR 最少访问页面算法 E.NUR 最近最不经常使用算法 3 3题目:可变内

6、存管理模拟题目:可变内存管理模拟 设计要求:设计要求: A.功能:内存初始化;分配作业内存;回收内存;显示作业列表;显示空闲内存。 B.编制两种内存分配算法:1)最佳适应算法;2)最坏适应算法。 4题目:作业调度模拟题目:作业调度模拟 设计要求:设计要求: A.加深对作业概念地理解。 B.掌握短作业优先调度算法。 C.深入了解批处理系统如何组织作业、管理作业和调度作业。 D.了解作业控制块的作用,以及作业控制块的内容和组织方式。 目 录 一、系统功能需求分析.1 二、总体设计.1 三、详细设计.3 1、数据结构.3 2、输入模块.3 3、随机产生作业到达时间和服务时间模块.4 4、计算模块.4

7、 5、输出模块.5 四、运行结果.5 1、欢迎界面.5 2、输入作业数,各作业名.5 3、运行结果.5 五、总结.6 六、源程序代码.6 一、系统功能需求分析一、系统功能需求分析 调度算法是指根据系统的分配策略所规定的资源分配算法,在批处理系统中, 为看照顾为数众多的短作业,应采用短作业优先的调度算法。作业可被看做是用 户向计算机提交任务的任务实体。一个作业被提交后必须经过处理机调度后,方 能获得处理机执行。对于批量型作业而言,通常需要经历作业调度和进程调度两 个过程后方能获得处理机。 短作业优先的调度算法是从后备队列中选择一个或者若干个估计运行时间 最短的作业,将它们调入内存运行。本次设计就

8、是模拟作业调度和短作业优先的 设计。批处理多道操作系统的作业管理有两个任务:作业调度和作业控制。采用 多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系 统效率。 二、总体设计二、总体设计 系统主要模块有:输入模块,随机产生作业到达时间和服务时间模块,计算模块,比 较模块,输出模块。 其功能模块图为: 输入模块 随机产生作业到达时 间和服务时间模块 计算模块 比较模块 输出模块 图一 系统设计流程图: 提示输入作业数目 开始 所输数目大于最大数 是 由随机函数随机产生各作业 到达时间和作业服务时间 提示输入各作业名 否 计算各个作业的作业开始执行时间,作业 完成时间,作业周

9、转时间,作业平均周转 时间 后备队列是否为空 作业比较 否 作业 i 完成时间作业 i+1 完成时 间 是 否 是 输出作业调度顺序及各作业信息 结束 图二 三、详细设计三、详细设计 1 1、数据结构、数据结构 作业控制块的数据结构为: struct jcb /作业控制块 JCB,定义为结构体 char name10; /作业名 float arrivetime; /作业到达时间 float servicetime;/作业服务时间 float starttime; /作业开始执行时间 float finishtime; /作业完成时间 float cyctime; /作业周转时间 float

10、avecyctime; /作业平均周转时间 ; 2 2、输入模块、输入模块 定义一定范围内可变输入数,用户只需在输入可变范围内的数据即可。然后按 照提示再输入各作业的作业名。 提示输入作业数 输入 N 输入各作业名 图三 3 3、随机产生作业到达时间和服务时间模块、随机产生作业到达时间和服务时间模块 利用随机函数 srand()和 rand(),以时间作为种子,随机产生作业到达时间和 作业服务时间,这样便充分符合了短作业优先调度算法的特点。 4 4、计算模块、计算模块 此模块完成的计算有计算各个作业的作业开始执行时间,作业完成时间,作业 周转时间,作业平均周转时间。其中作业执行时间为上个作业的

11、完成时间,作 业完成时间为作业执行时间加上作业服务时间,作业周转时间为作业被提交给 系统开始,到作业完成为止的这段时间间隔,作业平均周转时间为作业周转时 间除以服务时间。 计算模块的流程图为: 作业执行时间= 上个作业的完成 时间 作业完成时间=作业执行时间 +作业服务时间 作业周转时间 = 作业完成时间 作业到达时间 作业平均周转时间 = 作业周转时间 / 作业服务时间 图四 5 5、输出模块、输出模块 按照调度顺序依次输出各作业的作业达到时间,作业服务时间,作业开始执行时 间,作业完成时间,作业周转时间,作业平均周转时间。 四、运行结果四、运行结果 1 1、欢迎界面、欢迎界面 图五 2 2

12、、输入作业数,各作业名、输入作业数,各作业名 图六 3 3、运行结果、运行结果 图七 五、总结五、总结 这次的课程设计是用到以前学的 C 语言和数据结构两门课程知识来完成的。 我的课题是作业调度模拟,写一个程序来模拟短作业优先调度算法.短作业优先调度 算法的原理是从后备队列中选择一个或者若干估计运行时间最短的作业,将它们调入 内存运行。了解了短作业优先调度的算法写起程序来就有点头绪了,但是由于这么久 没再写过 C 程序我已经对这个很生疏了,只有上网搜点资料来辅助下。老师说短作业 优先调度算法中作业的到达时间和服务时间需要随机产生,这样才能突出特点,按照 要求,我们把程序调整好了。 通过这次课程

13、设计,对于短作业优先调度算法我有了深刻的理解,同时也对作业 调度中的几个概念,作业执行时间,作业完成时间,作业周转时间,平均周转时间等 更加熟悉掌握了。 六、源程序代码六、源程序代码 #include #include #include #include #include #define MAX 100 /最多能管理的作业数目 struct jcb /作业控制块 JCB,定义为结构体 char name10; /作业名 float arrivetime; /作业到达时间 float servicetime;/作业服务时间 float starttime; /作业开始执行时间 float fin

14、ishtime; /作业完成时间 float cyctime; /作业周转时间 float avecyctime; /作业平均周转时间 ; jcb aMAX; void input(jcb *p,int N) int i; printf(请分别输入:t 作业名(如:JOB1 )nn); for(i=0;i=N-1;i+) printf(请输入第%d 个作业信息:,i+1); scanf(%s, srand(unsigned)time(NULL); pi.arrivetime = rand()%99+1; srand(unsigned)time(NULL); pi.servicetime= ra

15、nd()%99+1; printf(n); void Print(jcb *p,float arrivetime,float servicetime,float starttime,float finishtime,float cyctime,float avecyctime,int N) int k; printf(调度顺序:); printf(%s,p0.name); for(k=1;k%s,pk.name); printf(nn); printf(ttt 则作业信息如下:n); printf(nnametarrivetservicetstarttfinishtcyctavecycn);

16、for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%- .2ftn,pk.name,pk.arrivetime,pk.servicetime,pk.starttime,pk.f inishtime,pk.cyctime,pk.avecyctime); void sort(jcb *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) jcb temp; temp=pi; pi=pj; pj=temp; void deal

17、(jcb *p, float arrivetime,float servicetime,float starttime,float finishtime,float for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.servicetime; else pk.starttime=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.cyctime=pk.finish

18、time-pk.arrivetime; pk.avecyctime=pk.cyctime/pk.servicetime; void jcbf(jcb *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,cyctime=0,avecyctim e=0; sort(p,N); for(int m=0;mN-1;m+) if(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetim

19、e; int i=0; for(int n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishtime) i+; float min=pm+1.servicetime; int next=m+1;/m+1=n for(int k=m+1;km+i;k+) if(pk+1.servicetimeMAX) printf(t!输入的作业数目太大,请输入不大于%d 的整数n,MAX); printf(按 Q 或者 q 退出程序,按其他任意键继续测试.); ch = getch(); if(ch=Q|ch=q) break; else continue; input(a,N); jcb *b=a; jcbf(b,N); printf(按 Q 或者 q 退出程序,按其他任意键继续测试.); ch = getch(); if(ch=Q|ch=q) break; return 0; 计算机与通信学院课程设计评分表计算机与通信学院课程设计评分表 设计内容: 操作系统 项项 目目评评 价价 课程设计期间表现情况 课程设计内容完成情况 课程设计答辩成绩 课程设计报告完成质量 综 合 成 绩 日 期: 2012 年 7 月 2 日

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

当前位置:首页 > 社会民生


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