操作系统原理第4章 CPU调度与死锁

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
23
• 资源类:用方框表示资源的不同类型。 • 资源实例:用方框中的黑圆点表示每个资源的数量。 • 进程:用圆圈中加进程名表示。 • 申请边:进程指向资源类的一条有向边,即PiRk。 • 分配边:资源实例指向进程的一条有向边,即RkPj。
24
4.3.3 产生死锁的原因
• ⒈资源不足,引起资源竞争 • ⒉进程推进顺序不合理
4.3.4 死锁产生的必要条件
• ⑴互斥条件。进程要求对所分配的资源进行排他性使用,即在一段时间 内某资源仅为一个进程所占用。
• ⑵不剥夺条件。进程所获得的资源在未使用完毕之前,不能被其他进程 强行夺走,即只能由获得该资源的进程自己来释放。
• ⑶请求和保持条件。进程每次申请所需要的一部分资源,在等待新资源 的同时,进程继续占有已分配到的资源。
22
4.3.2资源分配图
• 所谓资源分配图(Resource Allocation Graph)就是 用有向图描述进程和资源的关系。 • 系统由若干类资源构成,一类资源称为一个资源 类,每个资源类中包含若干个同种资源,称为资 源实例。 • 二元组G=(V,E) • V表示结点集,分为P,R两部分: • P={P1,P2,...Pn} • R={R1,R2,…,Rm} • E表示边的集合,其元素为有序二元组:(Pi,Rj)或 (Rj,Pi)
• 该方法实现复杂,被剥夺资源的进程前期工作失效,重复申请和释放资源 给系统增加了开销,系统要付出很大的代价。
4.4.3摒弃环路等待条件
• 为了破坏环路等待条件,采用有序资源分配策略。 • 对申请资源的进程规定:同类资源需一次申请,在获得 资源后,只能申请较高级号的资源,无权申请低级号资 源和同类资源。对于低级号资源和同类资源申请,必须 先释放所有高级号的资源,然后再申请,否则不予分配。 • 优点:同前两法相比,其资源利用率和系统吞吐量有较 明显的改善。 • 缺点:进程实际需要资源的顺序不一定与资源的编号一 致,因此仍会造成资源浪费,系统增加新设备较困难。
21
• 死锁的定义如下: • 在多个进程并发执行中,某进程申请的资源被其他 等待进程占有,如果该等待进程永远无法改变其等 待状态,这种情况称之为死锁。 • 如果该等待进程长期无法改变其等待状态,这种情况 称之为饥饿。 • 关于死锁的一些结论如下: • ①参与死锁的进程最少是两个(两个以上进程才会出 现死锁)。 • ②参与死锁的进程至少有两个已经占有资源。 • ③参与死锁的所有进程都在等待事件。 • ④参与死锁的进程是当前系统中所有进程的子集。
4.1.1 CPU调度的类型
2
4.1.2宏观调度和中程调度
• 1.宏观调度 • 宏观调度也称为高级调度或长程调度,作业调度就是 一种宏观调度,在多道批处理系统中,用户的后备作 业存放在外存中,由作业调度按照系统所规定的调度 算法从这些后备作业中选出一个子集投入到系统中执 行。 • ⒉中程调度 • 中程调度也叫交换调度,涉及进程在内存和外存之间 的交换,指令和数据必须在内存里才能被CPU直接访 问。虚拟存储器就是一种中程调度。
⒍多级队列算法
• 多级队列算法(MLQ)是先来先服务算法、时间片轮转算法和优先权算法的综 合。其基本思想是将就绪队列分成多个独立队列,相同优先权的进程按FIFO 原则排成一个队列,按时间片轮转算法分派CPU。不同队列可有不同的优先 权、不同的时间片长度。在多级队列算法中,优先调度优先权高的队列, 当优先权高的队列为空时,才可以调度下一级队列,依次类推,同一队列 按时间片轮转算法分派CPU。
• 静态优先权和动态优先权都是基于合理分配CPU时间和紧迫的进程优先的原 则。优先权调度可以是可抢占的或者非抢占的。当一个进程到达就绪队列 时,其优先权与当前运行进程的优先权相比较。如果新到达进程的优先权 高于当前运行进程的优先权,那么抢占优先权调度算法会抢占CPU。非抢占 优先权调度算法只是将新进程加到就绪队列的头部。
7
⒉调度性能评价指标
• 有许多评价指标比较CPU调度算法:
• ①CPU的利用率。
• ②吞吐量:吞吐量是指单位时间内所完成任务的数量。
• ③周转时间:即从任务提交到任务完成的时间间隔称为周转 时间。
• 周转时间Ti:Ti=Tci-Tpi (Tpi-进程提交时间,Tci-进程完成时间)。

Ti=Twi+Tsi (Twi-进程等待时间,Tsi-进程执行时间)。
间片最短,随着队列级别的降低,时间片加长。 • ③各个队列按照先进先出调度算法。 • ④一个新进程就绪后进入第一级队列。
• ⑤进程因等待事件而放弃CPU后,进入等待 队列,一旦等待的事件发生,则回到原来的 就绪队列。
• ⑥当有一个优先权更高的进程就绪时,可以 抢占CPU,被抢占进程回到原来一级就绪队 列末尾。
第4章 CPU调度与死锁
• 4.1 CPU调度概述 • 处理机是计算机系统中的重要资源,处理机调度就是按照一定的规则
分派处理机,合理地分配和使用处理机。 • 如何在进程间或线程间分配和回收处理机,处理机调度算法对整个计
算机系统的综合性能指标有重要影响,不仅影响处理机的利用率和用 户进程的执行,还与内存等其他资源的使用密切相关。
9
4.2.2调度算法
• ⒈先来先服务调度算法 • 先来先服务调度算法(First Come First Server,FCFS),总是把处理机分配
给最先进入就绪队列的进程或线程。由于它的处理机调度采用非抢占 方式,一个进程或线程一旦分得处理机,便执行下去,直到该进程或 线程完成或阻塞时,才释放处理机。 • 该算法适合于进程调度、线程调度、任务调度、作业调度和其他资源 调度等。
3
4.1.3微观调度
• 微观调度也称低级调度,微观调度才是真正的CPU调度,在实际系统 中对应的进程调度或线程调度就是微观调度。
4
• 1.微观调度要解决的问题 • WHAT:按什么原则分配CPU,即调度算法。 • WHEN:何时分配CPU,即调度的时机。 • HOW:如何分配CPU,即调度过程,进程或线程的上下文切
• 响应比R=(等待时间+要求运行时间)/要求运行时间。 • 它是FCFS和SJF的一种折中。采用响应比高者优先调度 算法例子如表3-3所示。
⒋优先权算法
•静态优先权法:是指在创建进程时确定进程 优先权,并一直保持到进程结束,即“终生” 不变。
•动态优先权法:是指在创建进程时赋予进程 的优先权,在进程的生命期内优先权可以动 态变化,在进程运行过程中可以自动改变优 先权,以便获得更好的调度性能。。
才会用到。 • ④一个进程运行期间,对某些设备的使用时间很短,甚至不会用到。 • ⑤系统资源利用率低,甚至非常浪费。
4.4.2摒弃不剥夺条件
• 为了破坏不可剥夺条件,我们采用这样的策略,一个已拥有资源的进程, 若它再提出新资源要求而不能立即得到满足时,它必须释放已经拥有的所 有资源,以后需要时再重新申请。拥有资源的进程在运行过程中其资源可 能被剥夺,从而破坏了不可剥夺条件。
• ⑷循环等待条件。存在进程资源的循环等待链,链中的每一个进程已获 得资源,同时被链中的下一个进程所请求。
4.4 预防死锁
• 解决死锁问题的基本方法有:预防死锁、避免死锁、检测死锁和解 除死锁。除此之外还有鸵鸟算法和综合措施。
• 预防死锁是指通过某种策略来限制并发进程对资源的请求,使系统 在任何时刻都不满足死锁的必要条件。
• 优先权调度算法需要考虑饥饿问题,就是某些就绪进程无穷等待CPU。据说, 在1973年关闭MIT的IBM 7094时,发现有一个低优先权进程是于1967年提交 但是一直未运行。
• 适合于进程调度、线程调度、任务调度、作业调度和资源调度等。
⒌时间片轮转法
• 轮转法调度算法是专门为分时系统而设计的,时间片轮 转算法主要用于微观调度。在时间片轮转算法中,系统 中所有的就绪进程按照FCFS原则,排成一个队列,新增 加进程到就绪队列的尾部。每次调度时将处理机分派给 队首进程,让其执行一个时间片。时间片的长度从几个 毫秒到几百毫秒。在一个时间片结束时,发生时钟中断, 进程调度器暂停当前进程的执行,将其送到就绪队列的 末尾,并通过上下文切换执行当前的队首进程。进程可 以因阻塞在未使用完一个时间片时就出让处理机。 • 轮转法的性能很大程度上依赖于时间片的大小。在极端 情况下,如果时间片非常长,长到大多数进程可在一个 时间片内执行完,该算法将退化为FCFS算法。此时进程 的响应时间长,不能达到提高响应特性的目标。如果时 间片过短,用户的一次交互过程需要多个时间片才能处 理完,此时上下文切换次数增加,将造成CPU的利用率越 低。
换。
• 2. 调度方式 • 非剥夺方式: • 剥夺方式:
• 3.微观调度的功能
• ①动态查找就绪队列中的进程(线程)优先级和内存资源情 况,以便确定分配对象。
• ②根据确定的算法和进程(线程)的状态及占有内存情况选 择一个进程(线程),使其从就绪状态转为运行状态。
• ③执行分配CPU操作
5
• 4.引起进程(线程)调度的事件 • ①作业调度。 • ②用户登录。 • ③正在运行的进程运行完毕。 • ④运行中的进程(线程)提出I/O请求。 • ⑤执行某种原语操作,如wait、signal、block、wakeup等。 • ⑥可抢占调度方式中,一个比正在运行进程(线程)优先级更高的进
程(线程)进入就绪队列。 • ⑦时间片到。
6
4.2调度算法
• 4.2.1调度算法的评价 • ⒈衡量操作系统及计算机系统的重要指标如下: • ①周转时间短。 • ②响应时间快。 • ③截止时间的保证。 • ④优先级准则。 • ⑤系统吞吐量高 • ⑥CPU利用率好 • ⑦各类资源的平衡利用 • ①--④是面向用户的指标,⑤--⑦是面向系统的指标。
10
先来先服务调度算法例子
⒉最短作业优先调度算法
• 在最短作业优先调度算法中,作业的长短是以要求 运行时间来衡量的,这种算法优先调度要求运行时 间最短的作业作为处理机的服务对象。最短作业优 先调度算法的例子如表3-2所示。
⒊最高响应比优先算法
• 响应比高者优先算法就是在每调度一个作业投入运行 时,计算后备作业表中每个作业的响应比,挑选响应 比最高者作为处理机的服务对象。
• ④平均周转时间T
• 设:系统中有n个任务,则平均周转时间T为:

时间W:Wi=Ti/Tsi=(Twi+Tsi)
/Tsi
•⑥平均带权周转时间:

(i =1,2…,n)
•⑦响应时间:另一时间度量是从提交请 求到产生第一响应需要的时间,称之为 响应时间。
•⑧截止时间:截止时间可分为开始截止 时间和完成截止时间。
• 此算法的性能好,适合于线程调度、进程调度或任务调度。且比较容易实 现,实用性好,被目前流行的操作系统采用,如NT、UNIX等。
⒎多级反馈队列法
• 多级反馈队列也是系统中设置多个就绪队列,对每个队列赋予各不 相同的优先权。
• ①首先系统中设置多个就绪队列。 • ②每个就绪队列分配给不同时间片,优先权高的为第一级队列,时
4.4.4摒弃互斥条件
• 为了破坏互斥条件,采用虚拟设备技术,将部分独占设备改造成 共享设备,不仅提高了资源效率,而且破坏了互斥条件,预防了 该设备的死锁。
• ⑦当高级队列都为空时,就去调度下一级队 列。
• ⑧当时间片到后,进程放弃CPU,进入下一 级就绪队列。
20
4.3死锁的概念
• 4.3.1什么是死锁 • 可重用资源(reusable resource),各个进程可以轮流使用,如处理机、
内存、I/0外设、文件等都是可重用资源,在使用可重用资源时可能出 现的死锁(Deadlock)。 • 可消耗资源(consumableresource)是指可以动态生成和动态消耗的资源, 一般不限制数量,如中断、信号量、消息、缓冲区等都是可消耗资源。
• 就是在设计操作系统时,通过设置某些限制条件,去破坏死锁四个 必要条件中的一个或多个,来防止死锁,使系统能预先排除死锁的 可能性。
4.4.1摒弃请求和保持条件
• 采用静态资源分配方法。该方法的优点和缺点如下: • ①简单、安全、易于实现。 • ②程序在运行之前很难提出将要使用的全部设备。 • ③直到所有资源满足才能运行,实际上某些资源可能要到运行后期
相关文档
最新文档