处理机调度与常见算法10.15-10.17

一.处理机调度:多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行。
*提高处理机的利用率、改善系统性能,很大程度上取决于处理机调度的性能。
1,(1)*高级调度又称作业调度或长程调度,接纳调度, 主要在早期批处理阶段,处理在外存上的作业

2、低级调度也称为进程调度、微观调度或短程调度。决定内存就绪队列中的哪个进程获得处理机,进行分配工作。是最基本的一种调度,在三种基本OS中都有。
3、中级调度又称交换调度或中程调度。引入目的:提高内存利用率和系统吞吐量。根据条件将一些进程调出或再调入内存。
二、 调度算法
调度的实质就是一种资源分配。不同的系统和系统目标,通常采用不同的调度算法——适合自己的才是最好的。
如批处理系统为照顾为数众多的短作业,应采用短作业优先的调度算法;
如分时系统为保证系统具有合理的响应时间,应采用轮转法进行调度。
目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但有些算法作业调度和进程调度都可以采用。
1、先来先服务调度算法FCFS
一种最简单的调度算法,按先后顺序进行调度。既可用于作业调度,也可用于进程调度。
2. 短作业(进程)优先调度算法SJF/SPF
SJF/SPF调度算法能有效的降低作业的平均等待时间,提高系统吞吐量。
3. 高优先权优先调度算法
照顾紧迫性作业,使其获得优先处理而引入调度算法。常用于批处理系统中的作业调度算法,以及多种操作系统中的进程调度算法。
HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高:
优先权 =(等待时间+要求服务时间)/要求服务时间
= 响应时间 / 要求服务时间

4. 基于时间片的轮转调度算法RR
5.多级反馈队列算法FB
特点:多个就绪队列,循环反馈,动态优先级、时间片轮转
1)设置多个就绪队列,各队列有不同的优先级,优先级从第一个队列依次降低。
2) 赋予各队列进程执行时间片大小不同, 优先权越高,时间片越短

注:仅当优先权高的队列(如第一队列)空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。
处理机调度与常见算法10.15-10.17
2.优先级倒置
由于信号量机制的存在pv操作,导致原来优先级高的要在优先级低的完成之后才可以用.

小结:
处理机调度与常见算法10.15-10.17
三.实时调度
实时系统指系统能够在限定的响应时间内提供所需水平的服务。
实时任务:具有明确时间约束的计算任务,有软/硬,随机/周期性之分。
硬实时任务:必须满足任务对截止时间的要求

软实时任务:联系着一个截止时间,但不严格,可偶尔错过,不会对系统造成大的影响。
实时系统的任务往往带有某种程度的紧迫性,因而实时系统的调度有某些特殊要求。

  1. 实现实时调度的基本条件
    1)提供必要的信息
    就绪时间,开始截止时间、完成截止时间;处理时间;资源要求;优先级。
    2)系统处理能力足够强
    3)采用抢占式调度机制 硬实时一般都采用抢占式
    4)具有快速切换机制、
  2. 实时调度算法的分类
    1}根据实时任务的性质
    硬实时调度算法
    软实时调度算法
    2)根据调度时间不同
    静态调度算法
    动态调度算法
    3)按调度方式
    非抢占调度算法
    抢占调度算法
    4)多处理机环境下
    集中式调度
    分布式调度
  3. 常用的几种实时调度算法
    1)最早截止时间优先EDF
    根据任务的开始截止时间来确定任务的优先级。截止时间越早,其优先级越高。
    系统保持一个实时任务就绪队列
    队列按各任务截止时间的早晚排序
    调度程序总是选择就绪队列中的第一个任务,分配处理机使之投入运行。
    新任务产生时,是否等当前程序执行完:
    抢占式/非抢占式
    可能会使作业错过,但可适用于软实时系统
    2)最低松弛度优先LLF
    根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度越高(松弛度值越小),优先级就越高。
    松弛度= 截止完成时间 – 还需执行时间 - 当前时间
    可理解为当前时刻到开始截止时刻间的差距,随着时间的推进,这个差值逐渐变小,任务越来越紧迫
    处理机调度与常见算法10.15-10.17进程切换发生的时机
    进程执行完
    进程I/O阻塞
    新进程出现时可能的抢占
    某进程松弛度为0时发生抢占
    有的时刻,其他并发的实时任务下一周期未到来,会出现只有一个任务的情况。