


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.3.1 优先级倒置 很多实时系统都实现了线程优先级机制, 每个线程被分配一个优先级, 优先级高的线程只要 具备了运行的条件, 或者说进入了就绪态, 就可以立即执行。 除了优先级最高的那个线程外, 其他线程在执行过程中随时都可能停下来, 让给优先级更高的线程先执行。 抢占式调度策略 能保证系统的实时性。 由于多个线程共享资源, 在采用基于优先级调度策略时会出现较低优先级的线程先于高优先 级线程执行的情况,即优先级倒置(priority inversion)问题。优先级倒置可能使实时性 要求高的线程错过临界期限(critical deadline),从而导致系统崩溃。 在采用基于优先级的调度策略, 一旦两个线程共享了资源, 那么其中之一通常具有较高的优 先级。高优先级的线程期望一旦准备就绪就能运行,但当高优先级线程就绪,而低优先级线 程正在使用共享资源时, 高优先级线程必须等待, 直到低优先级线程完成对共享资源的操作。 这时,我们称高优先级线程被挂起。当高优先级线程挂起时,中优先级的线程抢先了正在使 用共享资源的低优先级线程, 此时高优先级线程已准备就绪并等待运行, 但中优先级线程此 刻正在运行,这时就出现了优先级倒置问题。 下图以三个不同优先级的线程为例描述一个优先级倒置的示例。 高优先级线程 H 和低优先级 线程 L 要共享资源 R,为了保证数据的完整性,它们需要通过信号量 S 来保证对临界资源的 互斥访问。线程 M 的优先级介于 H 和 L 之间。 图 6.1 一个优先级倒置的示例 (1)低优先级线程 L 取得信号量 S 的所有权,即做了 P 操作,但还没有做 V 操作。 (2)线程 H 的优先级高于线程 L,操作系统内核通过调度程序,将线程 L 切换出去,将线 程 H 置为运行态。 (3)线程 H 执行到中途需要访问共享资源 R,必须先对信号量 S 做 P 操作。因为此信号量 目前还没有恢复,于是线程 H 阻塞在信号量 S 上。 (4)线程 L 重新被切换到运行态。(5)此时线程 M 进入到就绪态,因为线程 M 的优先级高于任务 L,于是内核进行线程切换, 将线程 M 置为运行态。 (6)线程 M 执行结束后,线程 L 恢复执行。 (7)线程 L 释放共享资源 R,即对信号量做 V 操作。线程 H 获得信号量 S 的所有权才得以 继续执行。 从上面的分析可以看到, 由于高优先级线程 H 要获取被低优先级线程 L 占有的临界资源而被 阻塞,具有中等优先级的线程 M 抢占线程 L 的 CPU,从而导致线程 M 先于线程 H 执行。这时 便产生了优先级倒置的情况。 要避免出现优先级倒置问题, 必须让低优先级线程尽快释放临界资源。目前解决优先级倒置 通常有两种方法,一种是优先级继承(priority inheritance) ,另一种是优先级顶置 (priority ceilings) 。 优先级继承 优先级继承技术强令低优先级的线程继承与之共享资源并被挂起的高优先级线程的优先级。 一旦高优先级线程开始挂起,即可实施优先级继承,直到资源释放。下图是一个优先级继承 的示例。 图 6.2 优先级倒置的产生 (1)低优先级线程 L 取得信号量 S 的所有权,即做了 P 操作,但还没有做 V 操作。 (2)线程 H 的优先级高于线程 L,操作系统内核通过调度程序,将线程 L 切换下去,将线 程 H 置为运行态。 (3)线程 H 执行到中途需要访问共享资源 R,必须先对信号量 S 做 P 操作。因为此信号量 目前还没有恢复,于是线程 H 阻塞在信号量 S 上。 (4)线程 L 重新被切换到运行态,并继承线程 H 的优先级。 (5)此时线程 M 进入到就绪态,因为线程 M 的优先级低于线程 L 此时的优先级,因此线程 L 继续执行。 (6)线程 L 释放共享资源 R,即对信号量做 V 操作。线程 L 恢复其原来的优先级。 (7)线程 H 的优先级最高,于是内核进行任务切换,将线程 H 置为运行态。 (8)线程 H 执行结束后,按优先级高低顺序依次调度线程 M 和线程 L。 在优先级继承方案中, 当高优先级线程在等待低优先级的线程占有的临界资源时, 让低优先 级线程继承高优先级线程的优先级, 即把低优先级线程的优先级提高到高优先级线程的优先 级。 当低优先级线程释放高优先级线程等待的临界资源时, 立即把其优先级降低到原来的优 先级。采用这种方法可以有效地解决优先权倒置的问题。这种方法的缺点是,动态改变线程 的优先级耗费了大量的时间。 优先级顶置 优先级顶置方案为每个临界资源都分配一个优先级。 假设线程 H 在所有要共享某资源的线程 中优先级最高,则将资源的优先级确定为线程 H 的优先级加 1。调度程序将该资源的优先级 赋给任何访问该资源的线程, 这样就能保证该线程能尽快完成对临界资源的访问。 一旦线程 完成对该资源的操作,其优先级恢复正常。下图是一个优先级顶置的示例。 图 6.3 优先级顶置 (1)低优先级线程 L 取得信号量 S 的所有权,即做了 P 操作,但还没有做 V 操作;线程 L 优先级被置为 H+1。 (2)线程 H 进入到就绪态,因为线程 H 的优先级低于线程 L 此时的优先级,因此线程 L 继 续执行。 (3)线程 M 进入到就绪态,因为线程 M 的优先级低于线程 L 此时的优先级,因此线程 L 继 续执行。 (4)线程 L 释放共享资源 R,即对信号量做 V 操作。线程 L 恢复其原来的优先级。 (5)线程 H 的优先级最高,于是内核进行任务切换,将线程 H 置为运行态。 (6)线程 H 执行结束后,按优先级高低顺序依次调度线程 M 和线程 L。 这种方法目的是让低优先级线程尽快释放临界资源。 假如没有线程 H 存在, 但该方法却推迟 了线程 M 的执行。这种情况在优先级继承方法中是不会出现的。 优先级顶置方法总是乐于提高线程的优先级, 而优先级继承方法则比较懒惰, 不到万不得已 不会提升线程的优先级。 对于使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程服务类供应商调查表
- 厦门东海职业技术学院《图形图像处理技术基础》2024-2025学年第一学期期末试卷
- 福建师范大学《学科教学法及课程标准解析》2024-2025学年第一学期期末试卷
- 湖北文理学院《教材设计》2024-2025学年第一学期期末试卷
- 鄂州职业大学《热工过程检测技术》2024-2025学年第一学期期末试卷
- (2025年标准)创作合同协议书
- 重庆轻工职业学院《数字化环境与展示空间设计》2024-2025学年第一学期期末试卷
- 大连枫叶职业技术学院《中国当代史专题》2024-2025学年第一学期期末试卷
- 吉安幼儿师范高等专科学校《环境影响评价实验》2024-2025学年第一学期期末试卷
- 江西师范大学科学技术学院《游戏交互设计》2024-2025学年第一学期期末试卷
- 仓库人员防暑措施方案
- 小学教师嘉奖主要事迹材料简短
- 2024年江西省高考化学试卷(真题+答案)
- 《科技英语翻译方法》课件
- 血液透析诊疗指南
- 2023年河南省对口升学养殖类专业课试卷
- 社区健康服务与管理教案
- 房屋装修合同范本下载
- 2023学年一年级语文下册看拼音写词语字帖(全册 部编版)
- JB T 6527-2006组合冷库用隔热夹芯板
- 沙漠学全套课件
评论
0/150
提交评论