[架构之路-176]-《软考-系统分析师》-17-嵌入式系统分析与设计 -1- 实时性(任务切换时间、中断延迟时间、中断响应时间)、可靠性、功耗、体积、成本

news2024/12/23 6:45:34

目录

前言:

1 7 . 1 嵌 入 式 系 统 概 述

1 . 嵌入式系统的特点

(1) 系统专用性强。

(2) 系统实时性强。

(3) 软硬件依赖性强

(4) 处理器专用。

( 5 ) 多种技术紧密结合。

(6) 系统透明性。

(7) 系统资源受限。

2 . 嵌入式系统的组成

1 7 . 3 嵌入式实时操作系统

17.3.1 嵌人式操作系统槪述

1 . 相关概念

2. E O S 的特点

3. —般结构与组成

4 . 快:实时性能指标 (实时性是实时操作系统最重要的特性)

 17.4 多任务调度算法(实时性保障的关键)

1 . 调度算法的分类

(1) 软时限算法与硬时限算法。

(2) 周期性与非周期性算法。

( 3 ) 可抢占与非抢占算法。

( 4 ) 静态算法与动态算法。

2 . 速率单调调度

3 . 时间轮转调度

 4 . 截止时间优先调度 =》救火式优先级调度

17.5 优先级反转

17.5.1 任务的执行顺序变化

17.5.2. 任务的时序错乱/反常

17.5.3. 优先级反转的解决办法

1. 采用优先级继承协议

2 . 天花板优先级协议

3 . 优先级天花板协议


前言:

近年来,我国嵌入式系统应用产品的市场需求日益增长,嵌入式系统的产值呈现出不断增长的趋势,在家电、电子、汽车、通信、交通、金融、 网络、监控和工业自动化等领域尤其明显。发展嵌入式系统技术和产业是贯彻“信息化带动工业化,工业化促进信息化”的方针,促进我国产品由“中 M 制造”向 “中国创造”迈进的迫切需要,也是建立循环经济、节能减排、保护环境,保证我国国民经济能得到持续、稳步、快速发展的重要技术基础。

随着“后 P C 时代”的来临及3 C 融合加速趋势的彰显,我国以嵌入式软件为核心的嵌入式系统产业的高速增长迎来了千载难逢的契机,嵌入式系统现已成为我国 I T 行业的一个重要新兴产业和增长点。因此,作为1 T 行 业 “排头兵”的系统分析师,必须掌握嵌入式系统的基本原理和开发方法,重点掌握嵌入式系统的分析与设计技术。 

本文重点讨论嵌入式系统的实时性这个重要的话题!!!

1 7 . 1 嵌 入 式 系 统 概 述

嵌入式系统是一种以应用为中心(即解决某种特定的应用),以计算机技术为基础(计算机是解决问题的手段),可以适应不同应用的功能、可靠性、成本、体积和功耗等方面的要求,集可配置、可裁减的软硬件于一体的专用计算机系统。它具有很强的灵活性,主要由嵌入式硬件平台、相关支撑硬件、嵌入式操作系统、支撑软件和应用软件组成。其中,嵌入性、专用性和计算机系统是嵌入式系统的三个核心要素。

1 . 嵌入式系统的特点

归纳起来,典型的嵌入式系统具有以下特点:

(1) 系统专用性强。

嵌入式系统是针对具体应用的专门系统。它的个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。由于嵌入式系统总是用来完成某-•特定任务的,整个系统与具体应用有机地结合在一起,升级换代也以更换整个产品的方式进行,因此,嵌入式产品一旦进入市场,一般具有较长的生命周期。

(2) 系统实时性强。

很多嵌入式系统对外来事件要求在限定的时间内及时做出响应,具有实时性。根据实时性的强弱,通常将嵌入式系统分为实时嵌入式系统和非实时嵌入式系统,其中大部分为实时眹入式系统。

(3) 软硬件依赖性强

嵌入式系统的专用性决定了其软硬件的互相依赖性很强,两者必须协同设计,以达到共同实现预定功能的目的,并满足性能、成本和可靠性等方面的严格要求。

(4) 处理器专用。

嵌入式系统的处理器一般是为某一特定目的和应用而专门设计的。
通常具有功耗低、体积小和集成度高等优点,能够将许多在通用计算机上需要由板卡完
成的任务和功能集成到芯片内部,从而有利于嵌入式系统的小型化和移动能力的增强。

( 5 ) 多种技术紧密结合。

嵌入式系统通常是计算机技术、半导体技术、电力电子技
术、机械技术与各行业的具体应用相结合的产物。通用计算机技术也离不幵这些技术,
但它们相互结合的紧密程度不及嵌入式系统。

(6) 系统透明性。

嵌入式系统在形态上与通用计算机系统差异甚大。它的输入设备
往往不是常见的鼠标和键盘之类的设备,甚至没有输出装置,用户可能根本感觉不到它
所使用的设备中有嵌入式系统的存在,即使知道,也不必关心嵌入式系统的相关情况。

(7) 系统资源受限。

嵌入式系统为了达到结构紧凑、高可靠性和低成本的目的,其存储容量、 I / O 设备的数量和处理器的处理能力都比较有限。

2 . 嵌入式系统的组成

嵌入式系统是一种嵌入到对象体的结构中或带有执行装置的应用环境中的专用计算机系统,一般都由软件和硬件两个部分组成,如下图 所示,其中嵌入式处理器、存储器和外部设备构成整个系统的硬件基础。嵌入式系统的软件部分可以分为三个层次,分别是系统软件应用支撑软件应用软件。其中系统软件和支撑软件是基础,应用软件则是最能体现整个嵌入式系统的特点和功能的部分。

分层的本质是分工!!!

1 7 . 3 嵌入式实时操作系统

简单地说,实时系统可以看成对外部事件能够及时响应的系统。这种系统最重要的特征是时间性,也就是实时性,实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果的时间。在现实世界中,并非所有的嵌入式系统都具有实时特性,所有的实时系统也不一定都是嵌入式的。但这两种系统并不互相排斥,兼有这两种系统特性的系统称为实时嵌入式系统

17.3.1 嵌人式操作系统槪述

嵌入式操作系统 (Embedded Operating System , E O S ) 是指运行在嵌入式系统上,
支持嵌入式应用程序的操作系统,是用于控制和管理嵌入式系统中的硬件和软件资源、
提供系统服务的软件集合。 E O S 是嵌入式软件的一个重要组成部分,它的出现提高了嵌
入式软件幵发的效率和应用软件的可移植性,有力地推动了嵌入式系统的发展。

1 . 相关概念

为了后续内容讨论的方便,此处先介绍与 E O S 相关的一些基本概念。

(1) 功能正确。

功能正确也称为逻辑正确,是指系统对外部事件的处理能够产生正确的结果。

( 2 ) 时间正确。

时间正确是指系统对外部事件的处理必须在预定的周期内完成。

(3) 死 线 ( deadline )。

死线也称为时限或截止时间,是指系统必须对外部事件处理的最迟时间界限,错过此界限可能产生严重的后果。

( 4 ) 实时系统。

实时系统是指同时满足功能正确时间正确的系统。

根据对错失时限的容忍程度或后果的严重性,可以将实时系统分为软实时系统硬实时系统

硬实时系统是指系统必须满足其灵活性接近零时限要求的实时系统。时限必须满足,否则就会产生灾难性后果,并且时限之后得到的处理结果或是零级无用,或是高度贬值;软实时系统是指必须满足时限的要求,但是有一定灵活性的实时系统。时限可以包含可变的容忍等级、平均的截止时限,甚至是带有不同程度的、可接受性的响应时间的统计分布。在软实时系统中,时限错失通常不会导致系统失败或严重的后果。由于错过时限对软实时系统的运行没有决定性的影响,软实时系统不必预测是否可能有悬而未决的时限错失。相反,软实时系统在探知到错失一个时限后,可以启动一个恢复进程。

2. E O S 的特点

与通用操作系统相比, E O S 主要有以下特点:

(1)微型化。

E O S 的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存,因此 , E O S 必须做得小巧 , 以占用尽量少的系统资源。

(2) 代码质量高。

在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽 fl 精简。

(3) 专业化。

嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同的应用领域而专门设计的。因此, E O S 要有很好适应性和移植性,还要支持多种开发平台。

(4) 实时性强。

嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此,实时性成为 E O S 的又一特点。

(5) 可裁减和可配置。

应用的多样性要求 E O S 具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁减,以适应微型化和专业化的要求。

3. —般结构与组成

与通用计算机系统上的操作系统一样, E O S 隔离了用户与计算机系统的硬件,为用户提供了功能强大的虚拟计算机系统,如图17-3所示。为方便用户应用程序的开发和代码的复用,嵌入式系统通常集成了第三方提供的中间件,这些中间件面向特定的应用领域,具有特定业务逻辑,具有与平台无关、方便升级和易于移植等特性。

 

针对不同的硬件平台,操作系统通常建立在一个抽象硬件层上,该抽象层位于底层硬件和内核之间,为内核提供各种方便移植的宏定义接口,在不同的平台间移植时,只需要修改宏定义即可。在硬件抽象层中,封装了与特定硬件有关的各种类型定义、数据结构和各种接口。硬件抽象层提供的接口包括 I / O 接口、中断处理、异常处理 、Cache处理和对称多处理等。根据抽象程度的不同,硬件抽象层的结构可以分为以下三个级别:

(1)系统结构抽象层。

该层抽象了 C P U 核的特征,.包括中断的传递、异常处理、上下文切换和 C P U 的启动等。

 (2) 处理器变种抽象层

该层抽象了 C P U 变种的特征,例如, Cache 、内存管理部件、浮点处理器和片上部件(存储器、中断控制器)等。

(3) 平台抽象层。

该层抽象了不同平台的特征,例如,片外器件定时器和 I / O 寄存器等。每个 E O S 都有一个内核,大多数内核都包含调度器、内核对象和内核服务三个公共构件。其中调度器是 E O S 的心脏,提供一组算法决定何时执行哪个任务;内核对象是特殊的内核构件,帮助创建嵌入式应用;内核服务是内核在对象上执行的操作或通用操作。.

4 . 快:实时性能指标 (实时性是实时操作系统最重要的特性)

嵌入式系统的实时性能是由硬件、实时操作系统( Real-Time Operating System ,R T O S ) 和应用程序共同决定的,其中, R T O S 内核性能起着关键作用。

  • 硬件性能:所有的程序的执行,包括操作系统、应用程序都是依赖硬件电路的执行时序。因此,硬件性能越高,实时性越高,相应越快,执行代码越快。 =》 这不是本文讨论关注的重点,详细关注计算机体系结构!!!
  • 操作系统性能:在现代操作系统中,支持多任务并行执行,操作系统负责对所有的应用程序的执行进行调度,多任务并行执行的代价就是在不同任务之间切换的时间开销和浪费,另外调度程序自身也会占用CPU的资源,以及对不同任务进行调度的调度算法,不同的调度算法,导致不同特性的应用程序的实时性大相径庭。符合调度策略的应用程序优先得到执行,而不符合调度策略的应用程序迟迟得不到CPU的资源。操作系统调度程序在这里的作用是统一资源分配的职责。 =》 这是本文关注的重点!!!,详见本文下一章节的讨论!!!
  • 应用程序的应用:实时性,最终体现在特定应用的实时性上,因此,特定应用程序自身的高性能编程,也是影响特定应用实时性重要的因素。=》 这不是本文关注的重点,详细参见:高性能C++编程。 

实时嵌入式操作系统和通用操作系统之间的功能有很多相似之处,例如,它们都支持多任务,支持软件和硬件的资源管理,以及都能为应用提供基本的操作系统服务。

在评估 R T O S 设计性能时,时间是最重要的一个性能指标,常用的时间性能指标主要有如下几个:

(1) 任务切换时间。

任务切换时间也称为上下文切换时间,是指 C P U 控制权由运行态的任务转移给另外一个就绪任务所需要的时间,包括在进行任务切换时,保存和恢复任务上下文所花费的时间,以及选择下一个待运行任务的调度时间。该指标与微处理器的寄存器数目和系统结构有关。

相同的操作系统在不同的微处理器上运行时,所花费的时间可能不同,如 图 17-4所示。

 ( 2 ) 中断处理相关的时间指标。

中断时序如图17-5所示。

A) 中断延迟时间

是指从中断发生到系统获知中断的时间,主要受系统最大关中断时间的影响,关中断的时间越长,中断延迟也就越长。最大关中断时间包含两个方面,

  • 一是内核最大关屮断时间,即内核在执行临界区代码时关闭中断,
  • 二是应用关中断时间。

关中断最大时间是这两种关中断时间的最大值。

B) 中断响应时间 = 中断调度时间

是指从中断发生开始执行用户中断服务例程的时间;

中断恢复时间是指用户中断服务例程结束回到被中断的代码之间的时间。对于可抢占式调度,中断恢复时间还要加上进行任务切换和恢复新的任务上下文的时间;任务响应时间是指从任务对应的中断产生到该任务真正开始运行的时间。

 ( 3 ) 调度延迟:系统响应时间。

系统任务在发出处理请求到系统做出应答的时间,即调度延迟,这个时间的大小主要由内核任务调度算法所决定。

 17.4 多任务调度算法(实时性保障的关键

当开发多任务嵌入式系统应用时,许多普遍性的设计问题随之产生。因为系统的资源是有限的,多个任务执行时,共亨和竞争相同的资源不可避免,在可抢占的多任务环境中,资源共享是任务优先级的一个函数,任务的优先级越高,则任务越重要

当访问共享资源时,高优先级的任务先于较低优先级任务。

嵌入式系统中多个任务利用并发执行达到效率最人化,任务之间协同工作也是实际应用的普遍要求,因此,任务之间的通信和同步问题也是设计人员必须考虑的。

1 . 调度算法的分类

调度算法根据其时限的性质(软时限还是硬时限)、周期性、可抢占性、静态或动态等准则,可以分为如下几类:

(1) 软时限算法与硬时限算法。

实时系统相当复杂,任务优先级确定与调度并非易事。

实时系统大多综合了软实时硬实时这两种需求,

软实时系统只要求任务尽快执行,并不要求在某一特定时间内完成  =》相对实时。

在硬实时系统屮,要求任务不但要正确无误执行,而且还要准时完成=》 绝对实时。

(2) 周期性与非周期性算法。

  • 周期性算法是指调度周期性的任务算法,即每隔一段时间单元会执行一次的任务。这个时间单元称为任务周期/调度周期
  • 非周期性任务是指任务请求,处理器的时间是不能预期的。

( 3 ) 可抢占与非抢占算法。

  • 可抢占算法是指正在运行的任务可能被其他任务打断 , 从而放弃 C P U , 让其他仟务执行;
  • 非抢占算法是指任务会一直运行到结束或者等待其他资源而被阻塞,否则不会放弃 C P U 。

( 4 ) 静态算法与动态算法。

根据任务优先级确定的时机,调度算法分为静态算法和 动态算法两类。

静态算法是指任务的优先级在设计或任务创建时就确定下来,在任务运行的过程中不会再发生改变。通常,静态调度算法中确定任务优先级的主要依据:

  • 任务执行时间    =》执行时间越短,优先级越高?
  • 任务执行周期    =》 执行周期越短,优先级越高?执行周期越长,优先级越低?
  • 任务的紧迫性; =》紧迫性越高,优先级越高。

动态算法是指任务的优先级在运行的过程中动态确定,并且会不断地发生变化和更新,该类算法能够完全掌握系统中运行的任务和截止时间、运行时间 、 优先级,以及到达时间等时间约束,可以灵活地处理变化的系统情况。

  • 任务已经运行的时间
  • 任务剩余运行的时间
  • 任务初始的优先级

( 5 ) 单处理器调度与多处理器调度算法。

  • 单处理器算法仅处理一个处理器的情况 ,
  • 多处理器算法可以处理系统中有多个处理器的情况。
  • 多处理器算法又分为同质多处理系 统和异质多处理系统两种情况。

( 6 ) 在线与离线调度算法。

离线式调度算法就是运行中使用的调度信息系统运行之前就确定了,运行的过程屮不再变更,离线调度算法具有确定性,但缺少灵活性,适 用于那些能够预先知道运行特性, 不易发生变化的应用类型;

在线调度算法是指系统 运行的调度信息是运行过程中动态收集获取的,例如,优先级驱动的调度等,该类算法 具有最大的灵活性。 当前,大多数内核支持两种普遍的调度算法,即基于优先级的抢占调度和时间轮转调度算法。

( 1 ) 基于优先级的抢占调度 =》 高优先级抢占低优先级任务的CPU时间

优先级可以分为静态优先级和动态优先级。应用程序在执行的过程中诸任务的优先级固定不变,称为静态优先级。在静态优先级系统中,各任务和它们的时间约束在程序编译时是己知的;

应用程序在执行的过程中诸任务的优先 级可以动态改变,称为动态优先级。基于优先级的抢占调度在任何时候运行的任务都是所有就绪任务中具有最高优先级的任务,任务在创建时被赋予了初始优先级,任务的优先级可以由内核的系统调用动态更改,这使得嵌入式应用对于外部事件的响应更加灵活,从 而建立真正的实时响应系统。

( 2 ) 时间轮转调度算法 =》 

为每个任务提供确定份额的 C P U 执行时间。该调度算法在设计时,应该考虑的因素素主要包括

  • C P U 的利用率  =》CPU利用率越低,则表明CPU还有多余的资源,就可以分配给其他任务
  • 系统的 I/O 吞吐量
  • 系统响应时间 、
  • 公平性
  • 截止时限的满足性等。

2 . 速率单调调度

对于一个实时系统,如果每个任务都能满足时限的要求,则称该系统是可调度的或该系统满足可调度性,也称该系统为健壮的系统 (Robust S y s t e m )。

速率单调调度(Rate M onotonic Scheduling, R M S ) 算法是一个静态的固定优先级算 法,任务的优先级与周期表现为单调函数关系,执行最频繁的任务优先级最高(会哭的孩子有奶喝),即任务

 3 . 时间轮转调度

在时间轮转调度方式中,当有两个或两个以上就绪任务具有相同的优先级,且该优先级是就绪任务最高优先级时,调度程序会依次调度每个任务运行一个小的时间片后再调度另一个任务。每个任务运行完一个时间片,不管其是否停止或运行尚未结束 , 都要释放C P U 让下一个任务运行,即相同优先级的任务会得到平等的执行权利,释放C P U 的任务被排到同优先级就绪任务队列的尾部,等待下次调度。

采用时间轮转调度算法时,时间片的大小选择至关重要,会影响到系统的性能和效 率。如果时间片过大,时间轮转的调度就失去了意义•,如果时间片过小,任务切换过于 频繁,处理器的开销大,用于任务运行的有效时间将降低。因此,对时间片的灵活调整有助于系统性能和效率的提高,相同优先级的任务可以具有相同的时间片,不同优先级类别的任务可以具有不同的时间片

通常,纯粹的时间轮转调度无法满足实时系统的要求。取而代之的是基于优先级的抢占式时间轮转调度,对于优先级相同的任务使用时间片获得相等的 C P U 执行时间。

如 图 17-6所示,任 务 1、任务2 和任务3 具有相同的优先级,它们按照各自的时间片运行 , 任务2 被更高优先级的任务4 抢占,当任务4 执行完毕后恢复任务2 的执行。

 4 . 截止时间优先调度 =》救火式优先级调度

 

17.5 优先级反转

17.5.1 任务的执行顺序变化

优先级反转是指由于资源竞争,低优先级的任务在执行,而高优先级的任务在等待 的现象。

当具有不同优先级的任务中存在相互依赖关系时,就可能发生优先级反转。例 如,如 图 17-8所示,当系统内低优先级的任务C占用着高优先级任务 A 要使用的资源 时,任务 A 只好等待任务C (A被阻塞)执行完毕,并释放该资源后才能被调度执行。这时,如果有中优先级任务 B 进入就绪,剥夺了任务 C 的 C P U 使用权,使得系统只有先让 B 运行完毕,且任务 C 重新运行结束并释放资源后,任务 A 才能运行。   //A得不到执行的关键是A需要共享资源,有运行态进入了阻塞态。导致原本高优先级的A得不到执行。

高优先级的任务 A 实际上己经降到了低优先级的水平,从而发生优先级反转现象,在 图 17-8中,中优先级的任务抢占低优先级的任务,时间可能不确定,因此称为无界优先级反转

类似地,有界优先级反转的情况如图17-9所示。当一个较高优先级的任务请求一个较低优先级任务占有的资源时,较低优先级的任务却锁住了该资源,即使较高优先级的任务就绪,它也必须等待低优先级的任务释放资源后才能继续运行。在这种情况下,低优先级的任务占用资源的时间是已知的(即低优先级占用资源的时间),因此称为有界优先级反转。

 备注:

  • 有界与无界是针对低优先级任务C的。
  • 有界(确定性、可预期):就是低优先级任务暂用资源的时间对低优先级自己而言是确定的。
  • 无界(不确定、无预期:就是低优先级任务占用资源的时间对低优先级自己而言是不确定的,因为低优先级总是会被中优先级的任务抢占,其释放资源的时间得不到不可预期!!!

17.5.2. 任务的时序错乱/反常

优先级发生反转时,某些任务的执行时间减少,同时,其他任务的执行时间延长,导致任务错失时限,进而引起时序反常

优先级反转是由不同优先级任务间资源同步引起的,在实际应用中是不可避免的,但可以使用资源控制协议将其降到最低限度。

备注:

这里的本质原因是:不同优先级的任务,在抢占共享资源上是平等的,不存在优先级问题,且先来得。

不同优先级的任务,其优先级的差别,主要体现在他们对CPU资源的使用上,任务的优先级越高,任务获得CPU资源的使用权的优先级越高,高优先级的任务,甚至可以抢占低优先级已经获得的CPU资源的使用权。

也就是说,任务优先级的差别,主要体现在CPU资源的使用上,而不是其他共享资源的使用上(如共享内存、共享的IO设备等)

17.5.3. 优先级反转的解决办法

解决优先级反转问题的常用方法主要有两种:

  • 采用优先级继承协议             =》 爱屋及乌,一人得道鸡犬升天
  • 采用优先级天花板协议      

1. 采用优先级继承协议

 

备注:

优先级继承的条件:

  • 支持优先级动态提升:操作系统能够动态地调整任务的优先级,而不是任务创建时候的固定不变的优先级
  • 提升优先级时机(爱屋及乌:因为占用了共享资源,低优先级任务沾高优先级任务的光,从而临时获得优先使用CPU资源的权利):操作系统要能够为共享资源记录哪些任务在申请其使用权,在一个新的任务在申请某个共享资源时,如果操作系统发现,该共享资源已经被一个低优先级的任务占用,则操作系统会因为高优先级任务使用该共享资源,而临时提升正在占用该共享资源任务的优先级。

在 图 17-10中,任务 A 是高优先级的,任务 C 是低优先级的。

任务 C 首先获得共享资源S,而任务 A 也请求该资源,优先级继承协议要求任务 C 以任务 A 的优先级执行临界区,这样,任务 C 在执行临界区时,其优先级比它本身的优先级高,这时,中优先级的任务 B 不能抢占任务 C 了,当任务 C 退出临界区时,又恢复到原来的优先级,使任务 A 仍为最高优先级的任务,这样,任务 A 便不会被中优先级的任务无限期阻塞了。

在优先级继承协议中,任务 T 进入临界区而阻塞了更高优先级的任务,则任务 T 将继承被阻塞任务的优先级,直到任务 T 退出临界区。

优先级继承协议是动态的,一个不相关的较髙优先级任务仍可进行任务抢占,这是基于优先级可抢占调度模式的本性,并且任务优先级在反转期间,被提升优先级的任务的优先级可以继续被提升,即优先级继承具有传递性 。 虽然在优先级继承协议中,任务的阻塞时间是有界的,但可能出现阻塞链,从而会加长阻塞时间,甚至造成死锁。

2 . 天花板优先级协议

优先级继承协议具有死锁阻塞链问题,而天花板优先级( CeilingPriority ) 协议可以解决这些问题。如果每个任务的优先级是已知的,对于给定资源(或控制该资源访问的信号量),其优先级天花板是所有可能需要该资源的任务中最高的优先级。例如,资源 R 被三个任务 A , B 和 C 所需要,任务 A 具有优先级5 , 任务 B 具有优先级7 , 任务C 具有优先级10, 那么资源 R 的优先级天花板为10。

当一个任务 T 请求资源 R 时,其遵循的天花板优先级协议如表17-3所示:

使用天花板优先级协议时,一旦某任务获得该资源或暂无其他较高优先级的任务竞争同样资源时,则此任务便继承该资源的优先级天花板,即使没有其他较高优先级的任务竞争同样的资源,也要继承该资源的优先级天花板。这意味着访问某临界资源的所有任务的临界区具有同样的天花板等级

备注:每个临界资源/共享资源,能够记录使用该资源的所有任务以及各自的优先级!!!同时能够记录和动态修正资源天花板!!!

3 . 优先级天花板协议

优先级天花板是指控制访问临界资源的信号量的优先级天花板(简单的说,就是某个临界资源的优先级天花板),信号量的优先级天花板是所有使用该信号量的任务中具有最高优先级的任务的优先级。在任意时刻,一个运行系统的当前优先级天花板 (priorityceiling ) 是此时所有正在使用的资源中具有最高优先级的优先级天花板。例如,系统中有 3 个资源正在使用,资源 R 1 的优先级天花板为4 , 资源 R 2 的优先级天花板为6 , 资源 R 3 的优先级天花板为9 , 则系统当前的优先级天花板为^在优先级天花板协议下,一个请求任务只可以被一个任务阻塞,不会发生传递阻塞(即产生阻塞链),也不会发生死锁。当一个任务 T 请求资源 R 时,其访问控制协议规则如表17-4所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拷贝构造函数和赋值重载函数详解

1.拷贝构造函数 1.1拷贝构造函数的概念 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。拷贝构造函数也是特殊的成员函数,其特征如下&#…

Golang每日一练(leetDay0051)

目录 151. 颠倒字符串中的单词 Reverse Words In A String 🌟🌟 152. 乘积最大子数组 Maximum Product Sub-Array 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

【分布式】CAP原则和BASE理论

CAP原则概述 CConsistency一致性AAvailability可用性PPartition tolerance分区容错性 1998年,加州大学的计算机科学家Eric Brewer提出,分布式系统有三个指标 一致性(C):在分布式系统中的所有数据备份,在同…

TiDB实战篇-基于索引的SQL优化

简介 TiDB实战篇-基于索引的SQL优化。 Online DDL 允许直接在线执行ddl操作,不会锁表,但是执行多个ddl的时候会要排队。 原理 控制创建索引的速度 查看影响 标红的是加了多少行索引。 添加索引的线上的影响(读写频繁) 只读场…

Linux程序设计之IP地址转换

1.通常,人们习惯于使用可读性好的字符串来表示IP的地址,但是,在实际的使用过程中,需要使用的IP地址应该为无符号的整数(在计算机中存储时是对应的二进制,只有二进制计算机才能识别,即0、1)。已经封装好的函…

windows开机不自动挂载磁盘的方法

本人的电脑系统为win11 写作时间20230430 开机不挂载某块磁盘的理由 1.本人电脑上有个仓库盘是机械硬盘,并不是每次开机都要用到,开机不挂载也许有利于增加数据盘的寿命 2.挂载了数据盘,有时候打开文件页面会比较慢,不够丝滑 …

MATLAB绘制汽车理论的仿真图片

这里写自定义目录标题 仿真绘图内容发动机最优曲线最优燃油消耗率曲线最优效率曲线工作时间/能量消耗的分布 传统车动力性分析绘制三(或多个)y坐标轴函数统计数据分布情况函数 仿真绘图内容 从传统车到新能源混合动力车型的不同绘制。 发动机最优曲线 …

排序算法 - 选择排序

文章目录 选择排序介绍选择排序实现选择排序的时间复杂度和稳定性选择排序时间复杂度选择排序稳定性 代码实现核心&总结 每日一道算法,提高脑力。第四天,选择排序。 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素&#…

Vue3超详细的ref()用法,看这一篇就够了

ref()接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value。 ref() 将传入参数的值包装为一个带 .value 属性的 ref 对象。 1、ref 对象是可更改的,即可以为 .value 赋予新的值 举例: c…

使用Vscode调试shell脚本 环境搭建基本步骤

操作系统: Linux --CentOS. step1: 在Vscode 中安装Bash Debug Step2:创建一个名字为123.sh的shell脚本; 输入123.sh, 回车: ​​​​​​Step3:编辑简单的待打印的内容,如下: Step4: 配置编译器 修改为下面内容: Step5: 点击按…

spring源码搭建记录

spring源码搭建记录 一.环境1.1 构建工具1.1.1 Gradle简介1.1.2 与常见的项目构建工具对比1.1.3 gradle下载1.1.4 Gradle安装 1.2 jdk与源码版本1.3 源码下载与导入 一.环境 1.1 构建工具 Spring源码工程使用的项目构建工具不是Maven,而是Google的Gradle。首先需了…

Docker搭建配置Gitlab

Docker搭建配置Gitlab 1 参考文档2 Gitlab相关介绍2.1 Gitlab2.2 Git和SVN的区别2.3 Git、Gitlab、GitHub的简单区别 3 搭建Gitlab仓库3.1 拉取镜像3.2 启动容器3.3 修改配置文件 4 管理员登录Gitlab5 Gitlab配置邮箱6 创建组7 创建项目8 创建用户9 Gitlab 数据备份【这块待实践…

第29步 机器学习分类实战:支持向量机(SVM)建模

文章目录 前言一、数据预处理二、SVM的调参策略三、SVM调参演示总结 前言 支持向量机(SVM)建模。 一、数据预处理 import numpy as np import matplotlib.pyplot as plt import pandas as pd dataset pd.read_csv(X disease code fs.csv) X dataset.…

SSM整合(二) | 表现层数据封装格式及封装步骤

文章目录 表现层数据封装数据返回格式数据封装 表现层数据封装 数据返回格式 表现层数据封装是什么意思呢? 我们根据目前做的增删改查功能来看看目前返回数据的格式存在哪些问题 增删改的数据返回格式如下: true查询单条数据的返回格式如下: {"id": 1,"type&…

【致敬未来的攻城狮计划】— 连续打卡第十七天:FSP固件库开发GPT — PWM通用定时器 定时2s LED 闪烁

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

MySQL提权/条件竞争漏洞分析和利用(37)

预备知识 漏洞描述 CVE编号&#xff1a;CVE-2016-6663 / CVE-2016-5616 && CVE-2016-6664-5617漏洞级别&#xff1a;严重 漏洞影响&#xff1a;漏洞影响&#xff1a; MariaDB < 5.5.52 < 10.1.18 < 10.0.28 MySQL < 5.5.51 < 5.6.32 < 5.7…

【MATLAB数据处理实用案例详解(18)】——利用自组织特征映射网络实现亚洲足球水平聚类

目录 一、问题描述二、自组织特征映射网络实现亚洲足球水平聚类原理三、算法步骤3.1 定义样本3.2 创建网络3.3 网络训练3.4 测试3.5 显示聚类结果 四、运行结果五、完整代码 一、问题描述 中国男子足球队的比赛成绩一直牵动着广大球迷的心。很多人认定中国队已处于亚洲三流甚至…

SpringBoot 多数据源及事务解决方案

1. 背景 一个主库和N个应用库的数据源&#xff0c;并且会同时操作主库和应用库的数据&#xff0c;需要解决以下两个问题&#xff1a; 如何动态管理多个数据源以及切换&#xff1f; 如何保证多数据源场景下的数据一致性(事务)&#xff1f; 本文主要探讨这两个问题的解决方案…

【C++】——C++基础知识点(C++和C语言的区别)

文章目录 1. 前言2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C的输入输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.1 函数重载概念5.2 C支持函数重载的原理——名字修饰 6. 引用6.1 引用概念6.2 引用特性6.3 常引用6.4 引用的使用场景6.5 引用和指针的…

OtterCTF

五年前的老题了&#xff0c;但还是值得一做&#xff0c;内存取证yyds! What the password? 取电脑的密码 先看缓存在内存中的注册表的偏移量 volatility_2.6_win64_standalone -f 1.vmem --profileWin7SP1x64 hivelist关注到SAM(账户密码表)和system volatility_2.6_win6…