深入理解操作系统[6]:处理器调度

版权声明:xueliangwang https://blog.csdn.net/ShyLoneGirl/article/details/84111856

1. 处理器的三级调度


高级调度
还叫作业调度,长程调度,接纳调度。通常是在批处理系统。从外存的后备队列选一个或多个调入内存,并为他们创建进程,分配资源,排在就绪队列上准备执行。


低级调度
还叫进程调度,短程调度。所有操作系统必须要配置这级调度。从内存的就绪队列中选择进程占领处理器。
功能
  1. 保存处理机的现场信息
  2. 按某种算法选取进程
  3. 把处理器分配给进程
基本机制
  1. 排队器
  2. 分派器(分派程序)
  3. 上下文切换机制
方式
  1. 非抢占方式
  一旦把处理器分配给某进程,就让该进程一直执行,直到该进程完成或阻塞,才把处理器让出。用于批处理系统和实时性不高的实时系统。
  引起调度因素
    1. 执行完;
    2. I/O请求导致阻塞;
    3. 进程通信或同步过程中执行可某些操作原语,如P操作,BLOCK,WAKEUP原语。
  2. 抢占方式
  允许暂停某个正在执行的进程,将处理机分配给另一进程。主要用作要求严格的实时系统。
  抢占原则:
    1. 优先权原则
    2. 端作业原则
    3. 时间片原则

中级调度
又叫中程调度,为提高内存利用率和系统吞吐量。将暂时不能运行的进程从内存调到外存,进入就绪驻外存状态或挂起状态;把外存上具备运行条件的就绪进程重新调入内存并修改为就绪状态。


2. 调度队列模型


只有进程调度的调度队列模型
  就绪队列组织成FIFO队列,按时间片轮转方式运行。其三种执行情况:
    1. 任务在时间片内完成,进程释放处理机后进入完成状态;
    2. 任务在时间片内没完成,被放在就绪队列的末尾;
    3. 因某事件而阻塞,被放进阻塞队列。


有高级和低级调度的调度队列模型
  在批处理系统中才有,和前一个模型的差别:
    1. 常用优先权队列,也可采用无序链表;
    2. 设置多个阻塞队列。

在这里插入图片描述


有三级调度的调度队列模型

在这里插入图片描述


3. 调度准则


1. 周转时间短
  周转时间是从作业被提交给系统到作业完成的时间间隔(完成时间-作业到达时间),分为4部分:
    --1. 在外存后被队列上等待调度的时间;
    --2. 进程在就绪队列上等待调度的时间;
    --3. 进程在CPU上执行的时间;
    --4. 进程等待IO操作完成的时间。

平均周转时间
  T = (T1+T2+…+Tn) / n
带权的周转时间
  W = T / Ts
    T作业的周期时间
    Ts系统为它提供服务的时间(真正运行时间)
平均带权周期时间
  W = (T 1/ Ts1 + T2/Ts2 + … + Tn/Tsn) /n


2. 响应时间快

主要在分时系统,实时系统中。从用户通过键盘提交一个请求到系统首次产生响应的时间,是分时系统的重要原则,包括三部分:
  1. 从键盘输入信息传到处理机的时间
  2. 处理及对请求进行处理的时间
  3. 将相应信息回送到终端显示器的时间


3. 截止时间保证
截止时间指某个任务必须开始执行的最迟时间。对于实时系统很重要。


4. 优先权准则
指定进程的优先级,严格按照优先级调度。


5. 面向系统的准则
  1. 系统吞吐量:系统吞吐量指单位时间内系统所完成的作业数,评价批处理系统性能的重要指标,与作业的平均长度有关。
  2. 处理器利用率好;
  3. 资源平衡利用。


4. 调度算法


1. 先来先服务(FCFS)
  1. 使用于高级,低级调度;
  2. 有利于长作业/进程,不利于短作业/进程;
  3. 有利于CPU繁忙型(带权周转时间接近于1)作业,不利于IO繁忙型(带权周转时间越大,IO越繁忙)。


2. 短作业/进程优先法(SJF/SPF)
  SJF从后备队列中选择一个或多个估计运行时间最短的作业调入内存;
  SPF从就绪队列中选出一个估计运行时间最短的进程分配处理机立即执行直到完成(或阻塞)。
  缺点
    1. 对长作业不利;
    2. 完全没考虑作业的紧迫程度;
    3. 用户提供的估计执行时间而定未必能真正做到短作业优先调度。


3. 高优先权优先调度算法

静态优先权在创建进程时确定,在进程的整个运行期间保持不变。
  确定依据
    1. 进程类型:系统进程高于用户进程;
    2. 进程对资源的要求:要求少的进程有较高优先权;
    3. 用户自定要求。
  特点
    1. 简单,系统开销小;
    2. 不精确。

动态优先权随着进程推进或等待时间的增加而改变。


4. 高响应比优先调度算法

响应时间 = 等待时间 + 要求服务时间
优先权 = 响应时间 / 要求服务时间

优点
  1. 兼顾长短作业;
  2. 作业等待时间相同时有利于短作业;
  3. 要求服务时间相同时,实现了FCFS。
缺点:做计算时增加了系统开销。


5. 时间片轮转法
  多用于分时系统把就绪队列组织成FIFO,把CPU分配给队首进程,规定它执行一个时间片;时间片完时排在就绪队列末尾,重新执行队首进程;就绪队列中所有进程在一定时间内均可获得一个时间片的CPU时间。


6. 多级反馈队列调度算法
  UNIX操作系统所使用,为多个就绪队列赋不同的优先级,第一个队列优先级最高,其余逐个降低。优先权越高的对立分配的时间片越小。
过程
  1. 新进程进入内存以后,首先放进第一队列的末尾,按照FCFS原则排队等待调度;
  2. 执行时若一个时间片内完成则撤离系统,否则转入第二队列的末尾,同样FCFS原则等待执行……
  3. 直到进入第n个队列采用时间片论转法进行。
  4. 只有当高优先级队列空时,下一级优先队列会调入该优先队列;
  5. 高优先级的新进程会抢占处理机,被抢占的进程放在队尾,不降级。
性能
  能满足1终端型作业用户(带交互)2短批处理作业3长批处理作业用户的需求。


5. 多处理器的调度

粒度

根据粒度的不同,多处理器系统的并行性可以分为如下几种:
1. 无约束并行性
  每个进程都代表独立的应用或作业,典型的应用是分时系统。每个用户都执行一个特定应用,多个处理器和多道程序单处理器提供相同的服务。
2. 粗粒度并行性
  在网络节点上进行分布式处理,形成一个计算环境。进程之间存在同步。
3. 粗粒度并行性
  多道程序环境中并发进程的多处理。进程间存在同步。
4. 中粒度并行性
  应用程序按进程中的一组线程来有效实现,需要程序员显式指定应用程序潜在的并行性。应用程序的线程之间需要更高程度的合作与交互。
5. 细粒度并行性
  细粒度并行性表示与线程中的并行相比,更为复杂的使用情况。


调度设计

1. 把进程分配到处理器

主从结构:操作系统的核心功能总在特定的处理器上,其他处理器只能用于执行用户程序。缺点是主处理器失败会导致整个系统失败,主处理器可能成为性能瓶颈。
对等结构:操作系统能在任何一个处理器上执行,每个处理器可以从可用进程池中进行自调度。

对于多处理器,进程的调度算法相对单处理器而言不那么重要,使用简单的FCFS原则或者静态优先级方案中FCFS就可以。

2. 在单处理器上使用多道程序设计
  对中粒度的应用程序,多处理器可用时,更关注的是为应用提供更好的平均性能,而非要求每个处理器都尽可能的忙。

3. 进程的分派


线程的调度

多处理器的环境下线程可以开发应用程序中真正的并行性,一个应用程序的各个线程同时在各个独立的处理器中执行,性能会显著提高。有一下几种方法:
  
负载分配(load sharing,not load balancing)
  进程不分配到某特定处理器,系统有一个全局队列,每个处理器一旦空闲就从中选一个进程。
  优点
  1. 负载均匀分布在各个处理器上,当有工作可做时,无处理器空闲;
  2. 不需要几种调度程序;
  3. 可以选用任意一种调度策略组织和访问全局队列,比如FCFS,最少线程数优先,可抢占的最小线程数优先(最高优先级给具有最少未被调度线程数的作业)等。

  缺点
  1. 中心队列占据必须互斥访问的存储器区域,当处理器很多时,查找会变慢;
  2. 被抢占的线程可能在其他处理器上恢复,高速缓存的效率降低;
  3. 如果所有线程被视作公共线程池时,一个应用程序的所有线程不可能同时能访问处理器,当他们需要告诉合作时严重影响性能。

调度组
  一组相关的线程基于一对一的原则同时调度到一组处理器中执行。对于中粒度到细粒度的并行程序很必要。

专用处理器分配
  把线程指定到处理器来定义隐式的调度。在应用程序被调度时,他的每个线程都被分配给一个处理器,相应的处理器专门处理对应线程,直到应用程序运行结束。
动态调度
  在程序执行期间动态的改变进程的线程数量



5. 实时系统中的调度算法


实时操作系统的特点

1. 可确定性
  在一定程度上按照固定的,预先确定的时间或者时间间隔执行。其关注的是操作系统得知一个中断之前的延迟。
2. 可响应性
  操作系统在知道中断后,为中断提供服务的时间。包括以下方面:
    1. 最初处理中断并开始执行中断服务例程所需要的时间总量;
    2. 执行中断服务例程所需的时间总量;
    3. 中断嵌套的影响。
3. 用户控制
  允许用户细粒度地控制任务优先级。用户应能够区分硬实时任务和软实时任务,并在每类中确定优先级。
4. 可靠性
5. 弱故障化操作
  系统在故障时尽可能地多保存其性能和数据能力。


Tips
硬实时任务:必须满足最后期限的任务,否则会出致命错误;
软实时任务:也有一个与之关联的最后期限,且希望满足,但不强制。



实时调度算法

基本条件
  1. 提供必要的信息 就绪时间,开始截止时间和完成截至时间,处理时间,资源要求,优先级等;
  2. 系统处理能力强
  假定系统中有 m 个周期性的硬实时任务,它们的处理时间可表示为 Ci,周期时间表示为 Pi,系统中的处理机数为 N。满足上面公式 系统才是可调度的。
在这里插入图片描述
  3. 抢占式调度机制
  4. 具有快速切换机制
    1. 对外部中断的快速响应能力;使禁止中断时间间隔尽量短,以免耽误时机;
    2. 快速的任务分派能力。


分类
按任务性质
  1. 硬实时调度算法
  2. 软实时调度算法
按调度时间
  1. 静态调度算法
  2. 动态调度算法
按调度方式
  1. 非抢占式调度算法
    非抢占式轮转调度算法
    非抢占式优先调度算法
  2. 抢占式调度算法
    基于时钟中断的抢占式优先权调度算法
    立即抢占(Immediate Preemption)的优先权调度算法


典型算法

最早截止时间优先 (Earliest Deadline First)
  该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。最早截止时间优先算法既可用于抢占式调度,也可用于非抢占式调度方式中。非抢占式调度方式用于非周期实时任务,抢占式调度方式用于周期实时任务。
最低松弛度优先 (Least Laxity First)
  该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,以使之优先执行。

.
.
.
.
.
.


桃花仙人种桃树,又摘桃花换酒钱_

猜你喜欢

转载自blog.csdn.net/ShyLoneGirl/article/details/84111856