3.1处理机调度的层次和调度算法
先行知识
- 处理机调度的主要目标
- 充分有效地利用处理机(CPU)资源
- 处理机调度的对象
- 作业、进程
- 作业与进程的关系
- 作业是任务实体,如:一次计算,一个控制过程
- 进程是执行实体,是系统分配资源的基本单位
- 一个作业由一个以上进程组成
1、处理机调度的层次
⑴高级调度(单向)
- 又称长程调度或作业调度。
- 高级调度主要用于多道批处理系统中。
⑵低级调度
- 又称为进程调度或短程调度。
- 进程调度是基本调度,所有系统都必须配备。
⑶中级调度(双向)
- 又称为内存调度。
- 主要目的是提高内存利用率和系统吞吐量。
- 中级调度实际上就是存储器管理中的对换功能。
- 可任选。
2、处理机调度算法的目标
总体目标
- ①资源利用率:为提高系统的资源利用率,应使系统中的处理机和其他所有资源都尽可能地保持忙碌状态。
- ②公平性:指应使诸进程都获得合理的CPU 时间,不会发生进程饥饿现象。
- ③平衡性:使系统中的CPU和各种外部设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性。
- ④策略强制执行:系统中的某些策略比如安全策略在必要的时候必须执行,即使会造成某些工作的延迟也要执行。
三种基本操作系统的目标
周转时间
- 平均周转时间:
- 带权周转时间:W=T/Ts
- 平均带权周期时间:
3.2作业与作业调度
3.2.1批处理系统中的作业及调度
1、作业和作业步
- (1)作业:作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。
- (2)作业步:作业中相对独立又相互关联的加工步骤。
2、作业控制块JCB
在作业运行期间,系统就按照JCB中的信息和作业说明书对作业进行控制。
3、作业运行的三个阶段和三种状态
- ⑴收容阶段→后备状态
- ⑵运行阶段→运行状态
- ⑶完成阶段→完成状态
4、作业调度的主要任务
按照一定的调度算法,从外存的后备队列中,选取某些作业调入内存,并为它们创建进程、分配必要的资源。
- 在每次执行作业调度时,须做出以下两个决定:
- 接纳多少个作业
取决于多道程序度,即允许多少个作业同时在内存中运行。 - 接纳哪些作业
取决于所采用的调度算法。
- 接纳多少个作业
3.2.2先来先服务和短作业优先调度算法
1.先来先服务FCFS(first-come first-served):
- 该算法按照作业到达的先后次序进行调度。
- 优点:实现简单。
- 缺点:
- 没考虑作业(进程)的优先级。
- 效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短;不利于短作业。
FCFS算法示例
下表列出了A、B、C、D四个作业分别到达系统的时间、要求服务的时间、开始执行的时间及各自的完成时间,计算出各自的周转时间和带权周转时间。
FCFS的特点
-
比较有利于长作业,而不利于短作业。
-
有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
- CPU繁忙型作业:该类作业需要大量的CPU时间进行计算而很少请求I/O。如通常的科学计算。
- I/O繁忙型作业:指CPU进行处理时,需频繁的请求I/O。目前大多数事务处理都属于I/O繁忙型作业。
-
貌似“公平”!短作业等待时间长。
-
属于非抢占式!
2.短作业优先SJF(short job first):
- 该算法从队列中选出一个最短的作业进行调度。
- 优点:平均周转时间最短。
- 缺点:①对长作业不利;②必须预知作业的运行时间
SJF算法示例
注意,调度过程中,从就绪队列中选出作业的顺序是:
A ->D->B->E->C(对于最先到达的作业A先执行)
最短剩余时间优先算法SRTF(Shortest Remaining Time First)(抢占式)
如采用最短剩余时间优先算法SRTF(Shortest Remaining Time First),情况将如何变化。
SJF算法优缺点
- 算法容易实现;
- 能有效降低作业的平均等待时间;
- 忽视了作业等待时间,对长作业不利,有可能导致长作业(进程)长期不被调度(出现饥饿现象);
- 要精确知道一个作业的运行时间比较困难的。
3.23优先级调度算法和高响应比优先调度算法
1.优先级调度算法(priority-scheduling algorithm,PSA)
基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。这样就可以保证紧迫性作业优先运行。
优先级算法示例
假定在单CPU条件下有下列要执行的作业按顺序先后到达:
① 用执行时间图描述非抢占优先级调度算法执行这些作业的情况(数值越大优先级越高)。
② 算出各作业的周转时间和带权周转时间
2.高响应比优先调度算法(Highest Response Ratio Next,HRRN)
高响应比优先调度算法既考虑了作业的等待时间,又考虑作业运行时间,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。
- 高响应比优先算法的实现:
由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先级又相当于响应比RP。据此,又可表示为:
高响应比优先算法示例
- 有两个作业A和B,
- 分别在7:00和8:30到达系统,
- 它们估计的计算时间分别为0.8小时和0.1小时,
- 系统在9:00开始以高响应比优先调度算法进行调度,
- 请问在单道执行时这两道作业被选中的次序以及选中时的响应比。
- 在9:00开始调度时,两个作业的响应比如下:
- A作业的响应比=1+120/48=3.5
- B作业的响应比=1+30/6=6
- 因此,先选中作业B!
- 当作业A执行时,其响应比=1+(120+6)/48=3.625
公式深入理解
- 算法基本思想: HRRN算法在当前作业执行完时,计算剩余作业的响应比,选取响应比最高的作业投入运行。
- 举例:以下四个作业先后到达系统,按HRRN进行调度,请给出调度顺序:
- 开始只有作业1,被选中,执行时间20ms;
- 作业1执行完毕,响应比依次为1+15/15、1+10/5、1+5/10,作业3被 选中,执行时间5ms;
- 作业3执行完毕,响应比依次为1+20/15、1+10/10,作业2被选中,执行时间15ms;
- 作业2执行完毕,作业4被选中,执行时间10ms;
- 平均作业周转时间T = (20+15+35+35)/4 = 26.25
- 平均带权作业周转时间W = (20/20+15/5+35/15+35/10)/4 = 2.46
- 举例:以下四个作业先后到达系统,按HRRN进行调度,请给出调度顺序:
HRRN算法优缺点
- 既考虑作业等待时间,又考虑作业的运行时间 ;
- 既照顾短作业又不使长作业的等待时间过长 ;
- 计算响应比需要耗费时间。