《操作系统课程设计报告材料进程调度》由会员分享,可在线阅读,更多相关《操作系统课程设计报告材料进程调度(37页珍藏版)》请在金锄头文库上搜索。
1、word前言操作系统Operating System,简称OS是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机上的最根本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件与数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配
2、资源,如:划分CPU时间,内存空间的开辟,调用打印机等。操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如系统软件和应用软件等。操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统如此对命令进展解释,驱动硬件设备,实现用户要求。本次课程设计我们将对上学期所学的知识进展系统的应用,而达到巩固知识的作用 / 目录1问题概述22需求分析23
3、概要设计2主要功能23.2 模块功能结构33.3 软硬件环境3数据结构设计34 详细设计4“先来先服务FCFS调度算法44.2“短进程调度算法SPF6“高响应比优先调度算法8“优先级调度非抢占式算法105 系统测试与调试12测试12调试过程中遇到的问题136 心得体会147 参考文献158 附录161问题概述编写一个进程调度程序,允许多个进程并发执行。采取多种进程调度算法先来先服务FCFS调度算法,短进程调度算法SPF,高响应比优先调度算法,优先级调度非抢占式算法。分析比拟各个算法的优缺点。2需求分析进程调度的功能是记录系统中所有进程的执行情况、从就绪态队列中选择一个进程,进展进程上下文的切换
4、。采取不同的算法根据外部环境与条件进展进程的切换。3 概要设计能进程调度的功能是记录系统中所有进程的执行情况、从就绪态队列中选择一个进程,进展进程上下文的切换。采用先来先服务FCFS调度算法,短进程调度算法SPF,高响应比优先调度算法,优先级调度非抢占式算法进展进程的切换。3.2 模块功能结构主界面1进程信息输入2先来先服务算法3短进程调度算法4高响应比优先调度算法5优先级调度算法0退出3.3 软硬件环境本程序所适用的计算机系统软硬件环境要求为:硬件环境: PentiumIII500以上 内存:256M软件环境: Linux Windows 7 应用软件: Dev-C+struct PCB_s
5、tructchar name10; /进程名称int priority; /优先级 int number; /进程编号float e_T; /到达时间float run_begin_T; /开始运行时间float run_end_T; /完毕运行时间float run_T; /运行时间int order; /运行次序 int run_flag; /调度标志 PCBMAX;4 详细设计“先来先服务FCFS调度算法4.1.1具体方法 先来先服务算法是按照进程到达先后次序来进展调度。进入该函数后读取每个进程控制块PCB中的到达时间e_T 从e_T最早的开始运行,依次运行完毕。记录开始运行时间run_
6、begin_T和完毕运行时间run_end_T,并记录运行次序。最后调用调度结果输出函数,输出进程信息和平均周转时间和平均带权周转时间。“先来先服务调度算法运行结果图“先来先服务FCFS调度算法“短进程调度算法SPF4.2.1具体方法 短进程调度算法是指对短进程优先调度的算法,这里进程的长短是以进程要求运行的时间的长短来衡量。 进入该函数后读取每个进程控制块中的到达时间e_T,选取最早的,假设时间一样如此选运行时间最短的进程进展调度,记录开始运行时间run_begin_T和完毕运行时间run_end_T,并记录运行次序。一个进程运行完成后,在查看在此进程运行时间内到达的进程,选取运行时间最短的
7、运行,依次重复,直至所有进程运行完毕,最后调用调度结果输出函数,输出进程信息和平均周转时间和平均带权周转时间。 “短进程调度算法运行结果图图4.2.3短进程调度算法SPF流程图“高响应比优先调度算法4.3.1具体方法 响应比高者进程优先的算法,响应比的定义是指 R=已等待时间+服务要求时间/要求服务时间。实际上,高响应比优先调度算法是先来先服务调度算法和短作业优先调度算法的综合调度算法。 进入该函数后读取每个进程控制块中的到达时间e_T,选取最早的,记录开始运行时间run_begin_T和完毕运行时间run_end_T,并记录运行次序。运行完毕后,在查看在此进程运行时间内到达的进程,选取响应比
8、最高的进程运行,依次重复,直至所有进程运行完毕,最后调用调度结果输出函数,输出进程信息和平均周转时间和平均带权周转时间。 “高响应比优先调度算法运行结果图“高响应比优先调度算法流程图“优先级调度非抢占式算法4.4.1具体方法 优先级调度算法也成优先权调度算法,本次采用非抢占式优先级算法,在进程输入时确定进程的优先级,数字越大优先级别越高。 进入该函数后读取每个进程控制块中的到达时间e_T,选取最早的,假设时间一样如此选优先级别高的的进程进展调度,记录开始运行时间run_begin_T和完毕运行时间run_end_T,并记录运行次序。一个进程运行完成后,在查看在此进程运行时间内到达的进程,选取优
9、先级别高者的进程运行,依次重复,直至所有进程运行完毕,最后调用调度结果输出函数,输出进程信息和平均周转时间和平均带权周转时间。 “优先级调度非抢占式算法运行结果图“优先级调度非抢占式算法流程图5 系统测试与调试5.1.1 实际测试数据预期结果在这组测试数据中,当进程采用短进程调度优先时,平均带全周转时间最短,效率最好。但由于进程的数据不同,我们可以采用不同的调度算法,应视情况而选取最优的调度算法。因为该程要实现进程调度中几种主要的算法的调度演示,并计算周转时间进展比拟,那么就需要在一组进程上调用不同的算法,并可重复使用该数组。但是当从一个算法转换到另一个算法的时候,涉与到一些关键变量的初始化问
10、题。一开始我并没有注意到这个问题,导致运行下一个算法时,因经过一次调度后,所有进程的状态都为执行完毕,所以第二次以与往后都不能得出正确的结论。经过屡次测试后,在每个算法的子函数中参加,状态初始化语句,使得程序能以正常运行,得出正确的数据。5.2.2输出数据时显示不全且乱输出是开始时做的函数,然而就遇到了挺烦的困难,因为每个进程的数据项多且杂,输出后不挨个对着看根本不知道谁是谁,百度了很多个案例后决定每个数据输出时严格控制格式,采用|将其分隔。使其看上去更加严谨,美观。其实很多小细节也要处理好才能更好表现出这个系统的优点。6 心得体会通过这次课程设计,使我更加扎实的掌握了有关操作系统方面的知识,
11、特别是进程以与各种调度算法。进程调度虽然是在系统内部的低级调度,但进程调度的优劣直接影响作业调度的性能。反映作业调度优劣的周转时间和平均周转时间只在某种程度上反映了进程调度的性能,例如,其执行时间局部中实际上包含有进程等待(包括就绪状态时的等待)时间,而进程等待时间的多少是要依靠进程调度策略和等待事件何时发生等来决定的。因此,进程调度性能的商量是操作系统设计的一个重要指标。所以进程调度的重要性也是不可无视的。这次的课程设计从选题到完成程序到最后写出课设报告,中间遇到了很多大大小小的问题,但是经过多方努力都得以解决,虽然它并不是一个完善的系统,还存在着这样那样的问题,但是已经进我的努力去完善它。
12、遇到问题时一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进展解决,只有这样,才能成功的做成想做的事。最后,感谢教师的帮助与悉心的指导,感谢同学们的相互帮助,没有他们我自己也不可能完成此次在项目中的任务,更加让我明白了一个团队的重要性,以与个人力量的单薄。总而言之,还是谢谢大家的互帮互助,而完成这个项目,完成这次课设!7 参考文献1王红.操作系统原理与应用Linux.第二版.:中国水利水电,2005.2王红.操作系统实训Linux习题解答、例题解析、实验指导.第二版.:中国水利水电,2008.3孟静.操作系统原理教程.:清华大学,2000.4周苏、金海溶. 操作
13、系统原理实验.: 科学,2000.8 附录#include#include#includeusing namespace std; /这样命名空间std内定义的所有标识符都有效曝光。就好似它们被声明为全局变量一样。#define MAX 10struct PCB_structchar name10; /进程名称int number; /进程编号int priority; /优先级 float e_T; /到达时间float run_begin_T; /开始运行时间float run_end_T; /开始完毕时间float run_T; /运行时间int order; /运行次序 int run_flag; /调度标志 PCBMAX,pcb; int counter; /实际生成进程个数 void FCFS(); /先来先服务算法 void SPF(); /短进程调度算法void HRRN(); /高响应比优先调度算法 void PRI(); /优先级调度非抢占式算法 void Input(); /进程输入 void Output(); /调度结果输出 int main(void)int option;while(1)printf(nn