《操作系统原理》课程设计报告.doc_第1页
《操作系统原理》课程设计报告.doc_第2页
《操作系统原理》课程设计报告.doc_第3页
《操作系统原理》课程设计报告.doc_第4页
《操作系统原理》课程设计报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统原理课 程 设 计 报 告 书题 目:进程控制模块的设计与实现专 业: 网络工程 学 号: 131007111 学生姓名: 李亚豪 指导教师: 刘双红 完成日期: 2015-12-05 目录第1章课题概述31.1 设计要求31.2 设计理论依据3第2章设计简介和内容62.1 设计简介62.2 设计内容6第3章详细设计3.1设计流程图73.2主要程序代码9第4章设计结果及分析104.1 运行结果截图104.2 运行结果分析11总结15 13 第1章 课题描述1.1设计要求1. 叙述要详细。2. 要有条理。3. 各个功能分开阐述。4. 自己可以增加题目要求的功能模块。5. 可以增加自己对题目的理解。1.2设计理论依据根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。 短作业优先调度算法,从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。第2章 设计简介和内容2.1设计简介 在多道程序环境下,将系统中的作业组织起来,为每个进入系统的作业建立档案以记录和作业相关的信息,按要求输入作业名、到达时间和服务时间,并为其建立作业控制块(JCB)挂入后备队列。进行作业调度时,在其后计算出各个作业的开始执行时间、完成时间、周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照由小到大的顺序显示出来。2.2 设计内容 1)编写程序完成批处理系统中的作业调度,要求采用短作业优先的作业调度算 法。实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。 2)创建作业控制块JCB,定义为结构体,为进入系统的作业建立档案,其中定 义了作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间。 3)首先按各个作业完成时间由小到大排序。再用输入的到达时间与服务时间按一定算法算出各个作业的开始执行时间、完成时间、周转时间和作业平均周转时间。 第3章 详细设计3.1 设计流程图开始 输出提示,输入处理进程数目,输入各进程名字,到达时间、服务时间。计算各个进程的开始执行时间,完成时间,周转时间,平均周转时间。后备队列是否为空是进入进程比较 否进程:完成时间作业 i+1完成时间 否是按完成时间由小到大输出结果,并由小到大输出作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间结束3.2主要代码/ 789.cpp : Defines the entry point for the console application./#include stdafx.h#include #include #include #define MAX 100 /最多能管理的作业数目 struct jcb /作业控制块JCB,定义为结构体 char name10; /作业名 float arrivetime; /作业到达时间 float servicetime;/作业服务时间 float starttime; /作业开始执行时间 float finishtime; /作业完成时间 float zztime; /作业周转时间 float avezztime; /作业平均周转时间 ; jcb aMAX; void input(jcb *p,int N) int i; printf(请分别输入:nt作业名,到达时间,服务时间(如:JOB1 5 10)nn); for(i=0;i=N-1;i+) printf(请输入第%d个作业信息:,i+1); scanf(%s%f%f,&,&pi.arrivetime,&pi.servicetime); printf(n); void Print(jcb *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float avezztime,int N) int k; printf(调度顺序:); printf(%s,); for(k=1;k%s,); printf(nn); printf(ttt作业信息:n); printf(nnametarrivetservicetstarttfinishtzztavezzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn,,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.zztime,pk.avezztime); 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(jcb *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &avezztime,int N) int k; 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.zztime=pk.finishtime-pk.arrivetime; pk.avezztime=pk.zztime/pk.servicetime; void jcbf(jcb *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,avezztime=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.servicetime; 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; 第4章 设计结果及分析4.1 运行结果截图1)初始化界面 图1-1 初始化 初始化作业输入作业的数目,但不可超过进程设置的最大值。如果输入的作业数超过作业数的最大值,程序就会退出。输入如果在正确范围的话,程序就会执行,并会出现相应的提示信息,执行情况如下图所示。2)输入进程数目图1-2 输入进程数目 承接上面的页面,输入相应的作业数,输入作业数后程序会给出相应的提示,用户可根据相应的提示,进行操作,进行下一步,如下图所示。3)输入进程名、到达时间、服务时间图1-3 输入进程各信息 用户进入这个界面后,根据相应的提示,输入用户所构造的作业信息。如作业名、到达时间、服务时间。根据用户输入相应的值,程序会给出相应的处理,如下图所示。4)运行结果 图1-4 运行结果相应的程序对用户输入的作业信息,做出了相应的处理。如程序的执行顺序,对应的程序的名字、到达时间、服务时间、开始服务时间、完成时间、周转时间、平均周转时间。用户可根据执行情况,了解相应的进程的执行情况。总结1. 列出开发过程中遇到的主要困难,并写出解决方法把完成的模块组合到主程序上。组合简单,但是要让各个部分没有分歧地融为一体,却是很难。往往组合之后会有很多错误的地方,我们要一个一个地去解决。有些错误很容易修正,但有些却是绞尽脑汁都弄不明白的。比如说,有个显示的模块,程序写的是对的,但不知道为什么,总是出错。改了许多次,才发现是头文件没有声明。2. 总结所系统的功能和不足,包括自己没有实现的部分。如果自己有时间和能力,系统应该做成什么样子的。系统只简单地实现了进程调度(短作业优先)的基本功能:输入进程数目、输入进程服务时间、输入进程到达时间、简单的进程短作业优先排序以及计算平均周转时间和平均带权周转时间。但没有实现界面应用,和相应的界面优化。3 在课程设计中自己的收获与感受通过本次课程设计对用短作业的优先调度算法有了更深入的理解和掌 握,进一步巩固和复习操作系统的基础知识,更进一步的了解了结构化模块化程序设计的方法,提高了调试程序的技巧,提高了自己的动手能力。 通过模拟进程的调度问题,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题。更加深了我对于操作系统理论的理解,在自己的动手操作过程中,让自己多多的在实践中可以加深对理论的理解。更让我们懂得程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论