操作系统 第三章处理机调度与死锁(自我总结式)

一、三级调度

1.高级调度

1)调度对象:作业

2)主要功能:决定将外存的哪些作业调入内存

3)在每次执行作业调度时,都必须做以下决定:

(1)接纳多少个作业

(2)接纳哪些作业

4)只用于批处理系统

5)作业调度运行频率低,几分钟一次

2.低级调度

1)调度对象:进程

2)主要功能:决定就绪队列中哪个进程获得处理机

3)是最基本的调度

3.中级调度

1)内外存的信息对换

内存->外存(挂起状态)

外存->内存(内存有空间,进程又具备运行条件)

2)目的:

便于内存管理扩充,提高内存利用率和系统吞吐量

  1. 中级调度的运行频率介于高级和低级调度之间
  • 调度队列模型
  1. 仅有进程调度的调度队列模型
  2. 具有高级和低级调度的调度队列
  3. 同时具有三级调度的调度队列模型
  • 处理机调度算法的目标
  1. 处理机调度算法的共同目标
  1. 资源利用率 CPU的利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲等待时间)
  2. 公平性
  3. 平衡型
  4. 策略强制执行
  1. 批处理系统的目标
  1. 平均周转时间短

周转时间是指从作业被提交系统(外存)开始,到作业完成为止的这段时间间隔

周转时间包括四部分:

  1. 等待作业调度时间
  2. 等待进程调度时间
  3. 进程在CPU上执行的时间
  4. 进程等待I/O操作完成时间(有阻塞)

平均周转时间:

带权周转时间:W=T/Ts

平均带权周转时间:

1)系统吞吐量高

吞吐量是指在单位时间内系统所完成的作业数

2)处理机利用率好

  1. 分时系统的目标                                                                                                                                                                    1)响应时间快

响应时间是指偶从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间

计算公式:响应时间=从键盘输入的请求信息传送到处理机的时间+处理机对请求信息进行处理的时间+将所形成的响应信息回送到终端显示器的时间。

          2)均衡性

均衡性是指系统响应时间的快慢与用户所请求服务的复杂性相适应

  1. 实时系统的目标                                                                                                                                                                     1)截止时间的保证

截止时间是指某任务必须开始执行的最迟时间,或必须完成的最迟时间

           2)可预测性

  • 作业调度                                                                                                                                                                                   1.作业概念:

作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。

         2.作业控制块(JCB)

为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块,它是作业在系统中存在的标志(每当作业进入系统时创建),其中保存了系统对作业进行管理和调度所需的全部信息。

  1. 作业运行的三种状态    1)收容阶段      2)运行阶段 3)完成阶段
  2. 作业调度的主要任务

作业调度的主要任务是,根据JCB中的信息,检查系统中的资源能否满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程排在就绪队列上等待调度

  1. 作业调度算法
  1. 先来先服务算法(FCFS)

基本思想:算法既可用于作业调度,也可用于进程调度。
当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列

优缺点:有利于长作业(进程),不利于短作业(进程)

2.短作业(进程)优先调度算法(SJF)

基本思想:SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。SJF算法可以分别用于作业调度和进程调度。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行

缺点:

1)该算法对长作业不利,长作业的周转时间会明显地增长。更严重的是,该算法完全忽视作业的等待时间,可能使作业等待时间过长,出现饥饿现象

2)该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理

3)由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度

3.优先级调度算法(PSA)

基本思想:

(1)由用户自己根据作业的紧急程度输入一个适当的优先级。

     为防止各用户都将自己的作业冠以高优先级,系统应对高优先级用户收取较高的费用。

(2)由系统或操作员根据作业类型指定优先级。

    作业类型一般由用户约定或由操作员指定。例如:可将作业分为:

I/O繁忙的作业,CPU繁忙的作业,I/O与CPU均衡的作业,一般作业

(3)系统根据作业要求资源情况确定优先级。

与其他算法的比较:

FCFS 强调的在系统的等待时间

  SJF   强调运行的时间 

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

基本思想:能为每个作业引入一个动态优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为:由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先级又相当于响应比Rp。据此,又可表示为:

优缺点:

该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。因此,该算法实现了一种较好的折衷。当然,在利用该算法时,每要进行调度之前,都须先做响应比的计算,会增加系统开销。

  • 进程调度
  1. 进程调度的任务
  1. 保存处理机的现场信息。
    2)按某种算法选取进程。
    3)把处理器分配给进程。
  2. 进程调度机制:

为了实现进程调度,在进程调度机制中,应具有如下三个基本部分
(1) 排队器。
(2) 分派器。
(3) 上下文切换器。

  1. 进程调度方式:
  1. 非抢占方式
  2. 抢占方式
  1. 进程调度算法
  1. 先来先服务算法(FCFS)
  2. 短作业优先算法(SJF)
  3. 优先级调度算法(PSA)
  4. 高响应比优先调度算法(HRRN)
  5. 时间片轮转算法(RR)

基本思想:

所有就绪进程按FCFS原则进行调度,每次执行一个时间片。当时间片用完二进程未完,则插入就绪队列末尾。

优缺点:简单易行,平均响应时间短,不利于处理紧急任务

     6.多级反馈队列调度算法(MFQ)

基本思想:

(1)设置多个就绪队列,赋予不同的优先级和不同长度的时间片

(2)每个队列都采用FCFS算法

(3)按队列优先级调度

优点:该算法能较好地满足各类型用户(进程)的需要

  • 实时调度
  1. 基本条件:
  1. 提供详细的调度信息
  2. 系统处理能力强
  3. 具有快速切换机制
  4. 采用抢占式调度机制
  1. 实时调度的分类:
  1. 非抢占式轮转调度算法
  2. 非抢占式优先调度算法
  3. 基于时钟中断抢占式优先级调度算法
  4. 立即抢占的优先级调度算法
  1. 常用的几种实时调度算法
  1. 最早截止时间优先算法(EDF)

(1)思想:根据任务的开始截至时间来确定任务的优先级,即任务的开始截止时间越早,其优先级越高

(2)可采用非抢占式调度方式,也可采用抢占式调度方式

非抢占式调度方式用于非周期实时任务

抢占式调度方式用于周期实时任务

2.最低松弛度优先算法(LLF)

  1. 思想:根据实时任务的松弛度来确定任务的优先级

松弛度=任务必须完成的时间-任务本身的运行时间-当前时间

  1. 实现时按松弛度排序的实时任务就绪队列
  2. 当一任务的最低松弛度为0时,立即抢占CPU
  1. 优先级倒置
  1. 定义:

当前OS广泛采用优先级调度算法和抢占方式,然而在系统中存在着影响进程运行的资源而可能产生“优先级倒置”的现象,即高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞

  1. 解决方法:

一种简单的解决方法是规定:假如进程P3在进入临界区后P3所占用的处理机就不允许被抢占

七、死锁

  1. 概念:是指多个进程在运行时因争夺资源而造成的一种僵局,若无外力作用,它们都将无法再向前推进
  2. 产生原因:
  1. 竞争资源

消耗性资源

不可抢占性资源

  1. 进程推进顺序不当
  1. 必要条件(必须所有条件全部满足才会发生死锁):
  1. 互斥条件
  2. 请求与保持条件
  3. 不剥夺条件
  4. 环路等待条件
  1. 处理死锁的方法:
  1. 预防死锁
  2. 避免死锁
  3. 检测死锁
  4. 解除死锁
  1. 预防死锁的方法及定义

1)定义:

通过设置某些限制条件,破坏导致死锁的四个必要条件之一

“互斥条件”-由资源的性质决定,不可破坏且要保证

2)破坏“请求和保持”条件

目标:防止“保持时请求,请求时保持”

(1)第一种协议

方法:在进程开始运行前,一次性分配给它所需的“全部”资源

优点:简单易实现,安全性高

(2)第二种协议

方法:允许一个进程只获得运行初期所需的资源后,便开始运行。进程运行过程中再逐步释放已分配给自己的,且已用毕的全部资源,然后再请求新的所需资源

优点:资源利用率高,减少了饥饿现象

3)破坏“不可抢占”条件

目标:变不可剥夺为可剥夺

方法:在进程运行中,若新的资源请求得不到满足,必须适当已占有的资源,待以后重新申请

缺点:实现起来比较复杂,代价高

4)破坏“循环等待”条件

目标:避免出现请求环

方法:资源按类型排序,进程按照资源序号递增的次序提出自愿申请。(有序资源分配法)

优点:资源利用率高和系统吞吐量大

缺点:必须按顺序申请,显示新设备的增加和程序员的自主编程

  1. 死锁避免
  1. 定义:

并不需要事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。

  1. 安全状态及安全序列:

所谓安全状态,是指系统能按某种进程顺序(P1,P2,…,Pn)(称〈P1,P2,…,Pn〉序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。

  1. 不安全状态:

不存在安全序列

  1. 安全性检测算法
  1. Work[0...m]=Available[0...m];

Finish[0...n]=false;

  1. 从进程集合中寻找满足下列条件的进程Pi;

Finish[i]=false;

Need[i,j]<=Work[j];

若找到,转(3);否则,转(4)

  1. 进程Pi可获得资源,然后执行完毕,并释放资源;

Work[j]=Work[j]+Allocation[i,j];

Finish[i]=true;

转(2)

  1. 判断:若对所有Pi,Finish[i]=true;

则系统处于安全状态,否则处于不安全状态。

  1. 银行家算法
  1. 算法描述:

(1进行资源预分配

(2实施安全检测

     安全:真正资源分配

     不安全:回到预分配前状态

  1. 数据结构:

(1) 可利用资源向量Available。
(2) 最大需求矩阵Max。
(3) 分配矩阵Allocation。
(4) 需求矩阵Need。

  1. 死锁检测
  1. 死锁定理

在资源分配图中,把分配的资源与进程连好,再看进程请求边,按照分配边分配好以后,剩余的资源就是空闲资源,此时再来分析进程Pi的请求边,如果空闲资源都能够满足Pi的请求,也就意味着Pi可以从这个纠缠的图中得到解脱。删除Pi的所有相关的资源:已分配的+请求的。

  1. 死锁检测算法
  1. 为了能对系统中是否已发生了死锁进行检测,在系统中必须:
    (1保存有关资源的请求和分配信息;
    (2提供一种算法,它利用这些信息来检测系统是否已进入死锁状态。
  2. 具体实现过程:

(1找出一个既不阻塞又非独立的进程结点Pi,Pi可获得所需资源直至运行完毕,再释放其所占有的全部资源,相当于消去Pi所有的请求边和分配边 ,使之成为孤立点

(2重复上述步骤,若能使所有的进程结点都成为孤立结点,则称该图是可完全简化的,否则,则称该图不可完全简化

(3)数据结构:

(1) 可利用资源向量Available,它表示了m类资源中每一类资源的可用数目。

(2) 把不占用资源的进程(向量Allocationi:=0)记入L表中,即Li∪L。

(3) 从进程集合中找到一个Requesti≤Work的进程,做如下处理:

① 将其资源分配图简化,释放出资源,增加工作向量Work:=Work + Allocation i。

② 将它记入L表中。

(4) 若不能把所有进程都记入L表中,便表明系统状态S的资源分配图是不可完全简化的。 因此,该系统状态将发生死锁。

Work:=Available;

L:={Li |Allocation i=0∩Request i=0}

for all Li L  do

begin

for all Request i≤Work do

begin

Work :=Work + Allocation i;

Li∪L;

end

end

deadlock :=┓(L={p1,p2,…,pn});

  1. 死锁解除(实现上难度最大)
  1. 定义:

这是与检测死锁相配套的措施。常用的方法是撤消或挂起一些进程,以便回收一些资源,分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。

  1. 常用方法:
  1. 撤销进程
  2. 按照某个顺序逐个撤销进程

3)剥夺资源

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值