操作系统( 第三章 :处理机调度与死锁)知识点总结
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
在资源分配图中,死锁状态的充分条件是:当且仅当资源分配图是不可完全简化的