操作系统( 第三章 :处理机调度与死锁)知识点总结

 3.1 处理机调度概述

  处理机是计算机系统的中的重要资源。

  处理机调度算法对整个计算机系统的综合性能指标有重要影响

  处理机调度的三个层次:高级调度(作业)、中级调度、低级调度(进程)

  进程调度要解决的问题

  WHAT:按什么原则分配CPU——调度算法

  WHEN:何时分配CPU——调度的时机 (一个进程运行完毕或因某种错误终止运行、一个进程从运行态变为等待态(等待I/O)、分时系统中的时间片到、有一个优先级更高的进程就绪(抢占式)、执行中的进程执行了某种原语操作(阻塞原语))

  HOW:如何分配CPU——CPU调度过程(进程的上下文切换)

   进程切换步骤:1.保存当前进程CPU的上下文(PC,寄存器)以及相关信息到运行中的PCB中去

                 2.把该进程移至合适的队列——就绪、阻塞

                 3.从被选中的PCB中重装入CPU上下文

  选择调度方式和调度算法的准则

   面向系统:系统吞吐量高、处理机利用率好、各类资源的平衡利用、公平

  面向用户:周转时间短、响应时间快、截止时间的保证、优先权准则

 

周转时间:结束-进入  带权周转:周转/运行

  进程优先级:静态优先级、动态优先级  (与进程类型、进程对资源要求、用户要求有关)

  抢占/非抢占:可抢占式(有比正在运行进程优先级更高进程就绪时,系统可强行剥夺正在运行的CPU),不可抢占式

 

3.2 调度算法

   指根据系统资源分配所规定的资源分配算法

先来先服务:按进程就绪的先后顺序来调度进程,分配处理机。

    有利于长作业(进程),不利于短作业。

短作业优先:能有效降低作业的平均等待时间,提高系统的吞吐量

    对长作业不利、未考虑作业的紧张程度,作业的估计运行时间不准确

高优先权调度算法:非抢占式优先权算法(批处理系统、对实时性要求不高)、抢占式优先权算法(要求严格实时系统,性能要求较高的分时、批处理系统)。

  高响应比优先调度算法

  响应比:作业周转时间/作业处理时间

  优点:若作业等待时间相同,则处理时间越短,响应比越高,有利于短作业

        对于长作业,随等待时间增加,响应比增高,同样可获得处理机

        若处理时间相同,等待时间越长,响应比越高,为先来先服务

 多级反馈队列调度算法

  等待进程被唤醒时,进入原来的就绪队列(可能被抢占)

  当进程第一次就绪时,进入第一级队列

  多级反馈队列算法的性能:能较好满足各种类型用户的需要 (终端型用户、短批处理作业用户、长批处理作业用户)

  

3.3 实时调度  实现实时调度的基本条件

  1.提供必要的信息  2.系统处理能力强  3.采用抢占式调度机制  4.具有快速切换的机制 (要求快速硬件中断机构、允许中断的时间短)

  实时调度算法的分类

     按任务性质:硬实时和软实时

     按调度方式:非抢占和抢占

     按调度时间:静态和动态

  非抢占式调度算法

     1.非抢占式轮转调度算法 (响应时间在几秒到数十秒之间,用于不太严格的实时控制系统,比如工业生产群控系统)

     2.非抢占式优先调度算法 (实时任务到达,放在就绪队列队首,等待当前任务的自我终止或运行完成,响应时间数百毫秒,用于较为严格的实时系统)

     3.基于时钟中断的抢占式优先权调度算法 (优先级高于当前任务的实时任务到达,则等到下一个时钟中断,抢占当前时钟处理机。响应时间:几到几十ms,应用于较严格的实时系统)

     4.立即抢占的优先权调度算法 (一旦出现请求中断的紧急任务,只要当前任务未在临界区,立即抢占它的CPU。响应时间100微秒到几毫秒,系统必须具有快速响应外部中断能力)

  常用的两种实时调用算法

   最早截止时间优先算法EDF (以开始截止时间确定优先级,可用于抢占式/非抢占式调度)

    最低松弛度优先算法LLF (以任务紧急程度确定优先级,松弛度:必须完成时间-还需运行时间-当前时间,用于可抢占式)

  

3.4 死锁的概念

  定义:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到该资源

  产生原因:1.竞争资源引起进程死锁(资源分配策略)   

            2.进程推进顺序不当引起死锁

  结论:1.参与死锁的进程最少是两个

        2.参与死锁是进程至少有2个已经占有资源

        3.参与死锁的所有进程都在等待资源

        4.参与死锁的进程是当前系统中所有进程的子集

       (死锁发生,会浪费大量系统资源,甚至导致系统崩溃!)

 

  产生死锁的必要条件

    互斥条件      (涉及的资源是非共享的)

    不剥夺条件    (不能剥夺进程拥有资源)

    请求保持条件  (进程在等待一新资源时继续占有已分配的资源)

    环路条件      (存在一种循环链,链中每一个进程已获得的资源同时被链中的下一个进程所请求)

     

   处理死锁的基本方法

    A.预防死锁  (设置某些限制条件,破坏死锁四个必要条件中的一个或多个)(较易实现,可能导致系统资源利用率和系统资源吞吐量降低)

    B.避免死锁  (在资源动态分配过程中,用某种方法去防止系统进入不安全状态(实现较难)

    C.检测死锁   (事先不采取任何限制,不检查系统是否进入不安全区,允许死锁发生,可及时检测出死锁发生,精确确定发生死锁的进程和资 源,采取适当措施,将系统中发生的死锁清除掉)

    D.解除死锁    (将进程从死锁状态解脱出来)(撤销或挂起一些进程,回收一些资源,再将它们分配给处于阻塞状态的进程,使之转为就绪状态,实现难度大)

 

     破坏请求保持条件:一次性申请整个运行过程中所需全部资源,若系统有足够资源则完全分配(执行时不提出资源请求,在等待时未占有任何资源)

    优点:简单、易于实现且安全

    缺点:一个用户在运行之前可能提不出它的作业将要使用的全部设备;延迟运行,用户作业必须等待,直到所有资源满足运行;资源浪费

    破坏不剥夺条件实现复杂、要付出很大的代价(以前工作的失效,执行的推迟)

    破坏环路条件:将所有资源按类型进行线性排序赋予不同的序号,所有进程对资源的请求必须严格按照资源序号的次序提出

      优点:资源利用率和系统吞吐量有明显改善

      缺点:资源浪费、限制新设备增加

 

   安全状态:如果系统能按某种顺序为每个进程分配其所需的资源,直至所有进程都能运行完成,称系统处于安全状态,否则处于不安全状态

  处于不安全状态不一定会发生死锁,处于安全状态一定不会发生死锁!

  保证死锁不发生:r>=(m-1)*p+1

 

  利用银行家算法避免死锁

   Available  可利用资源向量   MAX 最大需求矩阵   分配矩阵 ALLocation  需求矩阵 Need

     

 

 

 在资源分配图中,死锁状态的充分条件是:当且仅当资源分配图是不可完全简化的

posted @ 2021-05-18 15:02  D5181  阅读(648)  评论(0编辑  收藏  举报