1引言
1.1问题的提出
随着科技的发展,越来越多的人开始了解计算机,熟悉计算机,使用计算机,计算机已经成为人们工作、学习、生活的必备工具。
用户使用计算机处理各种各样的事情,那么选用怎样的进程调度方式才能使计算机更快更优的为我们服务呢?这就要求我们必须了解操作系统进程调度的算法及其相关原理。
首先硬件机制上如何保证操作系统的内核调度进程可以在一定的时机获得CPU来进行进程调度?
通常我们会在软件层次上找答案,其实,它是通过在CPU的硬件处理机制上实现的。
CPU在执行完每个指令的周期后会扫描CPU的内部的一个中断寄存器,查询是否存在中断发生,若没有,则继续执行指令;若有,则保存当前的CPU工作环境,跳转到中断服务列程,CPU执行中断服务程序,在退出中断后,跳转到内核调度程序(这是个内核程序,但是是对所有的进程共享的,包括用户进程),此时,内核调度程序占据CPU,进行进程的调度,以决定下个将占用CPU 的进程。
其次了解三种常见的进程调度算法:先来先服务调度算法;短作业(短任务、短进程、短线程)优先调度算法;高响应比优先调度算法;
1.2设计目的
进程是操作系统中最重要的概念,也是学习现代操作系统的关键。
通过本次课程设计,要求理解进程的实质和进程管理的机制。
掌握进程调度的工作流程以及进程调度的算法。
1.3设计内容
1.创建进程:手动创建几个进程,或者随即创建几个进程,都在界面上完成;要求包括进程的名称(不能重复)、创建时间、执行时间等。
在此因为某时刻仅一个进程在运行,需要申请的资源都能申请到。
2.完成先来先服务、最短作业优先以及最高响应比优先调度算法。
1.4设计要求
要求在屏幕上输出各进程不同调度算法的演示过程、对周转时间、平均周转时间和平均带权周转时间进行计算,并对比各算法的优劣。
2.系统分析
2.1功能需求
每个进程有一个进程控制块( PCB)表示。
进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
等待I/O的时间以时间片为单位进行计算,可随机产生,也可事先指定。
每个进程的状态可以是就绪 R(Ready)、运行R(Run)、等待(Wait)或完成F(Finish)四种状态之一。
就绪进程获得 CPU后都只能运行一个时间片。
用已占用CPU时间加1来表示。
如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
每进行一次调度程序都打印一次运行进程、就绪队列、等待进程以及各个进程的 PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
2.2程序运行平台
硬件环境:微型计算机一台
软件环境:linux操作系统
3.总体设计
3.1设计思想
1)先来先服务调度算法:按进程进入就绪队列的先后次序选择可以占用处理器的进程。
2)SPF优先调度算法:是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。
3) 最高响应比优先法(HRRN)是对FCFS方式和SJF 方式的一种综合平衡。
HRRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。
3.2设计流程图
1)主函数流程图
2)先来先服务流程图
3)短作业优先流程图
4)最高响应比流程图
4.功能模块的设计与实现
4.1进程控制块
4.2先来先服务算法
4.3短作业优先算法
4.4最高响应比算法
4.5主函数
5.系统测试
5.1设计测试数据
(1)测试数据1
调度算法:先来先服务
进程数:
进程名:
到达时间:
服务时间:
(2)测试数据2
调度算法:短作业优先
进程数:3
进程名:a b c
到达时间:1 3 6
服务时间:3 2 4
(3)测试数据3
调度算法:最高响应比
进程数:3
进程名: a b c
到达时间:2 4 5
服务时间:3 5 2
5.2测试结果运行
(1)输入数据1结果运行如下:
(2)输入数据2结果运行如下:
(3)输入数据3结果运行如下:。