嵌入式操作系统复习

本文详细阐述了嵌入式系统的概念、特点和硬件组成,包括微处理器、总线、存储器和处理器结构。同时,讨论了实时操作系统(RTOS)的作用、体系结构、调度策略以及中断和任务管理。文中还提到了软件体系结构、驱动程序和内存管理机制,强调了实时性和确定性的重要性。
摘要由CSDN通过智能技术生成

 (1)无所不在的嵌入式系统 复习嵌入式系统相关的基本概念、特点、硬件等;嵌入式系统设计考虑

  1. 嵌入式系统概念:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可配置,对功能、可靠性、成本、体积、功耗有严格约束的专用系统。
  2. 普适计算概念:普适计算(也成为无所不在的计算),指无所不在的、随时随地可以进行计算的一种方式:无论何时何地,只要需要,就可以通过某种设备访问到所需的信息。
  3. 实时系统概念:能够在限定响应时间内提供所需水平服务的计算机系统。//一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间:如果系统的时间约束条件得不到满足,将会发生系统出错。
  4. 嵌入式系统特点:技术密集、专用紧凑、安全可靠、多种多样、及时响应、成本敏感、开发困难、不可垄断、确定性
  5. 实时系统分类:硬实时、软实时、严格实时(介于硬实时和软实时之间的一种划分,针对多媒体和高速网络的实时要求)、自适应实时(自动调整满足环境需要,保证性能级别)
  6. 嵌入式系统设计要求:功能实用、便于升级// 并发处理、及时响应//造型自然、结构紧凑//接口方便、操作容易//稳定可靠、维护简便//功耗管理、降低成本
  7. 嵌入式开发模式:交叉开发,宿主机  运行编辑、编译、调试、测试等工具(IDE),目标机  运行实际应用软件(被开发软件)

  1. 硬件组成:嵌入式系统的硬件是以嵌入式微处理器为核心,主要由嵌入式微处理器、总线、存储器、输入/输出接口和设备组成。
  2. 嵌入式处理器结构:(1)冯·诺依曼结构:将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。(2)哈佛结构:程序和数据存储在不同的存储空间中,每个存储器独立编制、独立访问
  3. 嵌入式处理器分类:

(1)MPU:单板机 — 整个计算机系统集中在一个板上;386EX、PC104、...

(2)MCU:单片机 — 整个计算机系统集中在一个芯片中;MSC51、PPC5xx、...

(3)DSP:数字信号处理器 — 大运算量、高速实时信号处理;TMS320系列、达芬奇系列、ADI的Blackfin系列、...

(4)SOC:片上系统 — 有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容;海思Hi3751、...

12.总线:CPU与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道//ARM AMBA:AHB:用于高性能系统模块的连接;ASB:也用于高性能系统模块的连接,可由AHB代替;APB:用于较低性能外设的简单连接

13.存储器:(1)高速缓存Cache:嵌入式系统中,Cache全部都集成在嵌入式微处理器内:数据Cache、指令Cache或混合Cache

(2)主存:处理器能直接访问的存储器,用来存放系统和用户的程序和数据:Nor Flash、EPROM、PROM;SRAM、DRAM、SDRAM

(3)外存:处理器不能直接访问的存储器,用来存放用户的各种信息,容量大:NandFlash、DOC、CF、SD、MS(记忆棒)、...

14.主流嵌入式处理器:ARM、MIPS、ADI、TI、华为海思、中芯国际、飞腾

15.嵌入式硬件设计过程:(1)确定需求(2)选择评估板:完成原理开发(3)设计目标板:利用Protel等工具进行设计/可靠性验证(4)制作目标板:购买元器件、焊接/调试目标板(5)工程化:面向应用

(2)典型的嵌入式系统体系架构  通用、专用。

  1. 软件体系结构定义: 具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工;数据构件是被加工的信息;连接构件把体系结构的不同部分组组合连接起来。
  2. 软件体系结构作用:(1)任务的实时性软件体系结构独立于任何一个现实系统平台,它是一个抽象:现实系统中的许多细节被提炼并封装成软件体系结构中的元素。(2)软件体系结构对管理的另一辅助作用是便于分析矛盾需求之间的平衡点。
  3. 通用体系结构:整体结构 — 无结构模型、层次结构、对象结构模型、客户机/服务器结构模型(微内核模型)、三层体系架构(客户层、服务层、数据层)、虚拟机体系架构(以牺牲运行效率为代价,优化应用的可移植性)、基于构件的架构、云计算体系架构
  4. 模型驱动的软件架构:(1)起源:OMG定义的一个软件开发框架,基于UML(2)MDA概念:以建模行为驱动整个软件开发过程(3)核心思想:将业务分析与业务实现分离,保持业务逻辑对实现技术和平台的独立性,提高软件质量和可重用度(4)意义:提供了一种途径(通过相关的工具)来规范化一个平台独立的系统、规范化平台、为系统选择一个特定的实现平台,并且把系统规范转换到特定的实现平台
  5. 嵌入式软件体系结构:轮询模型、前后台模型(中断模型)、实时多任务模型

11.中断处理流程:(1)中断CPU当前执行

(2)保护被中断进程现场。

(3)分析中断原因,转去相应的中断处理程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。

(4)执行中断处理程序

(5)恢复被中断进程的现场

(6)CPU继续执行原来被中断的进程。

12.任务:一个程序运行的实体;资源拥有的基本单位;系统调度的基本单元(若不含线程)/实时任务:一个带有实时性能约束的任务/实时操作系统:构架系统时从系统中抽象出一个便于上层应用开发的平台,为支持实时多任务应用

(3)嵌入式软件  运行过程、系统引导、BSP、...、引入EOS

1.嵌入式系统开发:(1)内容:涉及H/W和S/W的复杂系统开发(2)特征:开发一个ES,相当于开发一台计算机:需要开发硬件系统H/W、对所开发硬件,需要开发/配置相应的驱动程序、需要提供系统引导程序Bootload、可能需要配置RTOS、需要针对应用领域,采用专用的RTOS并进一步优化、最后:开发特定领域的嵌入式应用软件

2.嵌入式软件运行过程:

(1)板级初始化:顺序:上电复位后,开始板级初始化//特性:完全的硬件相关,一般采用汇编语言实现//核心内容:CPU中堆栈指针寄存器的初始化。BSS段(Block Storage Space)的初始化。CPU芯片级的初始化:中断控制器、内存等的初始化。

(2)系统引导:选择:根据需要分别进入系统软件引导阶段或系统升级阶段 —— 测试通信端口数据或判断特定开关//1.系统引导阶段:RAM启动 系统软件从NorFlash中读出并加载到RAM中运行:运行速度较快;软件可压缩存储在Flash中//NorFlash启动 系统软件直接在NorFlash上运行//外存启动 软件中读取出来加载到RAM中运行:成本低2.系统升级阶段:远程升级:通过网络;支持TFTP、FTP、HTTP等方式//本地升级:使用超级终端或特定的升级软件进行。

(3)系统初始化:1.操作系统等系统软件运行必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设

2.需要按特定顺序进行:首先完成内核的初始化、完成网络、文件系统等的初始化、最后完成中间件等的初始化工作

(4)应用初始化:应用软件运行必需的初始化工作,如应用任务的创建、信号量的创建、消息队列的创建、应用相关的其它初始化

(5)多任务应用:系统进入多任务状态:操作系统按照已确定的算法进行任务的调度、各应用任务分别完成特定的功能

3.RTOS引导模式:(1)需要Boot Loader的引导模式:采用高性能RAM的系统;受RAM空间的限制,运行时载入:让PC跳转到刚拷贝到内存的内核的首条指令

(2)不需要Boot Loader的引导模式:对需要快速启动的系统;时间效率要求较高,空间限制较少。方法:直接在NorFlash或ROM等非易失性,主存介质中运行,启动速度快

4.板级初始化:1.处理函数:romInit(),上电后执行的第一个函数2.处理过程:以vxWorks为例:关中断、设置哑堆栈(dummy stack,也称虚拟堆栈)、保存启动类型(冷启动和热启动)到堆栈上、清Cache、初始化CPU内的寄存器、硬件初始化,主要是初始化SDRAM接口、调用romStart()

5.系统引导:1.处理函数:romStart(),执行的第一个C程序2.处理过程:完成必要的硬件初始化:sysHwInit()、把ROM代码和数据段拷贝并重定位到RAM(代码段未驻留在ROM中,拷贝代码段和数据段;代码段是驻留在ROM中的,只拷贝数据段)、未用的内存(RAM)清零、需要时,要进行解压缩、跳转到sysInit()

6.系统初始化:1.处理函数:sysInit(),依赖特定系统的汇编代码模块,类似romInit()(不处理RAM)2.处理过程:关中断、无效Cache、初始化处理器的寄存器,包括C堆栈指针、清除所有悬置的中断、跳转到usrInit()

7.用户初始化:1.处理函数:usrInit(),VxWorks下的第一个C程序2.处理过程:无效Cache、BSS段清0、保存启动类型、设置中断向量表基本地址、初始化硬件到静止状态:设备复位并禁止其产生中断、选择适当的初始化函数完成初始化、初始化多任务环境

8.系统启动:1.处理函数:usrRoot(),初始化I/O系统、驱动器、设备,启动系统2.处理过程:内存清零、初始化MMU单元、时钟设置、I/O初始化、字符设备设置、初始化结构、信号、消息等、初始化管道等、初始化USB、SCSI、IDE、SATA、网络等设备接口;、配置并初始化目标代理机、启动内核

9.BSP(板级支持包):1.嵌入式系统的基础部分,实现系统可移植性的关键2.负责上电时的硬件初始化、启动RTOS或应用程序的支持模块、提供底层硬件驱动;提供上层软件提供访问底层硬件的手段//包括各种驱动

10.驱动程序: 1.概念 即设备驱动程序(Device Driver),一种可以使计算机和设备通信的特殊程序,相当于硬件的接口。2.作用 上层操作只有通过这个接口,才能控制硬件设备 —— “硬件和系统之间的桥梁”。3.基本功能:对设备初始化和释放。对设备进行管理。读取应用程序传送给设备文件的数据,并回送应用程序请求的数据。检测和处理设备出现的错误4.驱动类别:字符设备、快设备、网络设备

11.影响启动速度的因素:处理器速度、存储设备、硬件初始化、系统软件加载、应用软件加载

12.嵌入式系统可信启动:1.可信:若一个实体的行为总是以预期的方式朝着预期的目标前进,那么这个实体就是可信的2.信任根:可信计算机系统可信的基点,一个可信计算平台必须包括三个信任根:可信度量根,对平台进行可信度量的基点 ;可信存储根,平台可信度量值的存储基点;可信报告根平台向访问客体提供平台状态的报告基点3.可信度量根核 上电后在可信度量根中第一个被启动的软件段4.信任链 以信任根为基础逐级验证,最终得到一个可信启动信任链

(4)EOS基础  概念、特点、结构、开发环境

1.基本概念:(1)线程,进程内可并发执行的程序段 —— 资源共享,调度的基本单元(2)互斥,多个任务同时访问共享数据时,必须顺序访问的机制(3)优先级驱动,任何时刻,总是将处理器分配给优先级最高的任务的机制(4)可调度性;一个任务的完成时间不大于截止时间(Deadline),称任务可调度;若系统所有任务可调度,称系统可调度(5)优先级反转,高优先任务等待低优先级任务释放资源而被堵塞的情况 —— 产生死锁的原因(6)优先级继承,优先级反转时,低优先级任务提高优先级确保继续执行以释放资源的方法

2.RTOS组成:(1)驱动程序:底层硬件相关(2)内核:最高权限部分;负责管理进程、内存、设备、文件、网络、安全(3)接口库:一系列特殊的程序库,提供应用程序所需的API;最靠近应用程序的部分(4)外围 提供特定高级服务的部件。如对微内核结构,文件管理等均归于外围

3.RTOS特点:(1)及时性 嵌入式实时系统的基本特征;(2)可确定性 系统执行时,任务的执行序列、最坏执行时间等可确定(3)并发性 同一时刻,可能有多个外部事件到达,因此必须激活多个任务同时响应以应对外部事件(4)高可信性 无论外部环境如何,系统需要对外部事件做出准确反应;可靠性 不出错概率;鲁棒性 容错能力;防危性 不发生灾难性问题(5)安全性 主要指信息安全,能抵御外部环境对系统的恶意攻击。也属于可信性内容之一(6)可嵌入性 能嵌入式到应用软件中 —— 捆绑为一个可执行程序(7)可剪裁性 针对应用需要,合理裁减,够用即可 —— 节约资源、增强性能(8)可扩展性 能适应应用的不断变化发展 —— 动态管理、嵌入式DB、...Adaptive

4.RTOS体系结构:整体结构、、层次结构、微内核模型、虚拟机体系架构、基于构件的架构

5.主流RTOS:VxWorks、ucOS-II、Android、RTLinux、鸿蒙

6.RTOS与通用OS比较:

RTOS

通用OS

体系结构

整体、层次、微内核、构件化

整体、层次、微内核、构件化

TCB结构

增加时间参数:周期、截止时间等

名称、ID、优先级、当前状态、上下文等

任务调度

静态调度表、固定优先级(RM类)、动态优先级(EDF类);原则上用户不能改变优先级

基于优先级的调度;时间片轮转调度;系统态优先于用户态;优先级可用户改变

内存管理

主要使用静态内存划分

采用虚拟存储机制

中断管理

多数中断处理转化为周期性查询任务;执行次序由统一考虑的优先级决定

中断处理优先于任务执行

共享资源问题

存在优先级逆转问题

信号量机制处理互斥访问

系统开销

所有系统操作的时间开销有界,需要量化

系统开销基本可忽略

系统功耗

需要严格管理

几乎可忽略

系统可重入性

系统内核可在调度点重入,实时性保证强

核心态不可重入,系统执行可预测性弱

可信保障

适应应用需要的等级要求

没有严格要求

(5)内核的编写  线程、调度、中断、时钟、启动

1.任务与程序之间的关系:(1)任务能真实地描述工作内容的并发性,而程序不能(2)程序是任务的组成部分:任务还包括数据、堆栈及其上下文环境等(TCB)(3)程序是静态的,任务是动态的(4)任务有生命周期:是短暂的;而程序相对长久永存(5)一个程序可对应多个任务;反之亦然(6)任务具有创建等功能;而程序没有

2.aCoral中的资源:六种,支持多核共享:线程型(TCB)、事件型、时钟型、驱动型、GUI型、用户使用型

4.任务调度策略:(1)静态调度表驱动 类似火车时刻表;静态,开销小,可预测,实时保障强;不灵活

(2)基于优先权的调度 使高优先级任务优先处理;优先级可静态赋予,或动态生成.可抢占的调度 高优先级到达即开始执行.非抢占的调度 当前任务完成,再执行就绪队列中的高优先级任务

(3)时间片的调度 为每个任务分配每次执行的时间片,循环执行或依某种规则执行

5.任务管理的基本功能:

(1)创建任务:创建任务的过程:分配任务空间:acoral_get_res(),资源空间分配;策略初始化:acoral_policy_thread_init(),选择策略,初始任务参数;任务初始化:acoral_thread_init(),初始堆栈空间、任务环境(寄存器);挂就绪队列:acoral_resume_thread(),按一定的规则挂入就绪队列,等待任务启动;启动调度:acoral_sched(),选择当前执行任务

(2)调度任务 已具备多个任务并发执行的环境,选择高优先级任务执行

(3)退出任务 任务执行完成后,退出;释放资源

(4)挂起任务 需要请求某一被占用资源时,任务挂起

(5)恢复任务 挂起的逆过程 —— 资源可用时,恢复任务

(6)改变任务优先级 动态改变任务优先级

(7)调度任务的时间处理 维护任务所需的时间参数:周期、时间片、...

9.任务调度过程:(1)确定任务调度的时机(2)主动调度与被动调度(3)任务调度:判断是否可调度?执行调度过程(4)获取最高优先级任务:确定当前哪个任务执行(5)任务切换:当前任务挂起,高优先级任务执行

10.任务调度时机:(1)即何时何地调用调度程序acoral_sched()(2)调度点:调用调度程序的具体位置(3)主要的调度点:中断服务结束时、任务因等待资源而被阻塞(挂起)时、任务周期开始或周期结束时、高优先级任务达到时、时间片结束时、关调度等状态打开时

11.(1)主动调度:任务主动调用调度函数,根据调度算法选择需要执行的任务,如当前执行任务的时间片完

(2)被动调度:某个事件触发的调度,如周期到达、高优先级任务就绪、突发事件

12.调度影响因素:(1)调度开始标志acoral_ start_sched 任务初始化完?

(2)是否需要调度标志acoral_need_sched 当进行一些操作导致需要调度时标记

(3)是否中断执行中 类似高优先级任务正执行

(4)调度锁 禁止调度标识,类似关中断

13.中断模式下的切换:

  1. 事务处理机制:事件触发机制、时间触发机制
  2. 概念:(1)中断:由于CPU外部的原因而改变程序执行流程的过程。属于异步事件,又称为硬件中断。自陷和异常则为同步事件。

(2)自陷:通过处理器所拥有的软件指令、可预期地使处理器正在执行的程序流程发生变化,以执行特定的程序。自陷是显式的事件,需要无条件地执行;如Trap、 SWI(软中断)、 INT等指令。

(3)异常:为CPU自动产生的自陷,以处理异常事件。如被0除、执行非法指令和内存保护故障等。

16.中断服务程序的主要内容:(1)保存上下文 保存中断服务程序将要使用的所有寄存器的内容,用于退出之前进行恢复现场(2)多设备共享中断 为确定产生该中断信号的设备,需要轮询这些设备的中断状态寄存器(3)具体的中断处理(4)恢复保存的上下文(5)执行中断返回指令,恢复被中断程序执行

17.实时系统中断处理方式:(1)中断作为前台任务 优先级高于所有软件,直接中断处理代码(2)中断作为系统调用 优先级高于所有软件,可替换的中断服务程序(函数)(3)中断作为任务切换 优先级与实时任务统一考虑,作为任务的中断服务程序

18.acoral三种中断模式:(1)实时中断(通用):直接调用中断处理程序,不经过:HAL→hal_all→intr→中断处理程序(2)专家中断(专用,异常):需要用户在中断处理程序中自己处理中断响应相关的操作,如清中断位等:特殊中断(3)普通中断:不需要任何中断硬件相关的操作,只需编写中断要做什么

22.两种时钟源:(1)实时时钟RTC:硬件时钟,系统时基,电池供电:系统断电,也可维持日期和时间,独立于操作系统,提供一个计时标准(2)定时器/计数器:实时内核控制的系统时钟,最小粒度是由应用和操作系统的特点决定

24.(1)FCLK  内核时钟,最大为CPU最高主频

(2)HCLK  总线时钟,包括USB时钟

(3)PCLK  I/O接口时钟,常用的SPI、I2C、UART的时钟配置都以PCLK为基准

25.时间管理:(1)实时内核的时间管理以系统时钟为基础

(2)系统时钟一般定义为整数或长整数,提供给应用程序所有和时间有关的服务

(3)系统时钟是由定时/计数器产生的输出脉冲触发中断而产生的

(4)输出脉冲的周期也是定时器的一个基准周期,称为时标、ticks

(5)ticks的大小可调:如5ms产生一个中断

26.(1)时间过程:定时器→脉冲信号→时钟中断→HAL层→内核层→ticks处理acoral_Ticks_entry

(2)时间片:时钟中断→ticks处理:任务执行时间+1 → 时间片到? → 调度

(3)延迟操作:任务挂起→延时设置→时钟中断→ticks处理:延时-1 → 延时=0?→重就绪

27.主流内存管理机制:(1)固定大小储存管理:内存由一段连续的存储构成,这段存储被分为多个大小一样的固定块。

(2)可变大小储存管理:内存由一段连续的存储构成,这段存储被分为多个大小不一样的存储块。

1)任意大小分配:需要多少分多少 —— 可用内存中划分出所需一块,剩余以后再用;管理复杂——剩余可用项,链表且每项大小不一。

2)固定大小可变分配:可分配内存块大小相对固定 —— 如2的幂次。每块的大小可变。

28.三种机制的比较 :(1)固定大小 没有外碎片,分配回收速度快,分配时间确定性好;若使用不当,碎片很大

(2)任意大小 很少内碎片;外碎片比较严重,分配回收速度慢,分配时间确定性差。

(3)固定大小可变 前两种方式的结合体,各种性能处于中间位置

29.需要关注的因素:(1)快速性,快速而确定的内存管理;(2)高效性:内存应该各尽其用,内存分配尽可能减少浪费(3)不使用虚拟存储技术

30.内存保护:(1)防止地址越界;(2)防止操作越权

31.通用的内存分配:(1)内存空间划分:代码区,静态数据区和动态数据区:堆:一种链式结构;动态分配;栈:一种线性结构;每个任务有私有“栈”

(2)静态分配:发生在编译和连接时,全局变量和静态变量;开始运行就分配,运行结束才释放

(3)动态分配:发生在程序调入和执行时,局部变量和返回值等;需要时分配,使用完就释放

32.malloc和free的使用规则:配对使用、尽可能在同一函数中使用、初始化、释放

33.RTOS的内存分配:动态分配。存在的问题:(1) 创建任务、队列、互斥量、软件定时器、信号量或事件组时,RTOS内核会为它们分配RAM

(2)会占用更多宝贵的代码空间

(3)没有任务(线程)保护:不保证资源分配使用回收正确

(4)不具有确定性:每次调用执行的时间可能不同

34.FreeRTOS内存分配模式:(1)原则:一旦分配之后,不允许释放分配的内存;特点:用于从不会删除任务、队列、信号量、互斥量等的应用程序;执行时间确定,不会产生内存碎片;实现和分配过程非常简单:从一个静态数组中获得

(2)原则:使用一个最佳匹配算法,允许释放之前分配的内存块,但不合并相邻空闲块——可能会造成内存碎片。(3)原则:使用malloc()和free()。不具有确定性,增加内核代码大小(4)原则:使用一个最佳匹配算法,将相邻的空闲内存块合并成一个更大的块(包含一个合并算法)。不确定性

35

(1)第一级:改进的伙伴系统:划分要分配的内存块大小、每个内存块分配2N大小内存、解决内存外碎片和内碎片问题

(2)第二级:根据第一级确定的大小进行具体物理内存分配:固定块和可变大小可选

(3)使用方法:应用程序  直接使用第一级管理模式;内核  可直接使用第二级管理模式

37.内存回收基本思想:(1)回收准备:状态;回收地址;支持回收操作(2)获取基本内存块序号:依回收内存块的起始地址,(3)获取该内存块所属层数:

进入临界区:(4)合法性检查:地址、伙伴是否回收、已经回收、...(5)顶层处理:回收内存,合并伙伴;不向上回收(6)非顶层:回收内存;判断(7)若伙伴未用:向上递归合并伙伴;否则不向上处理

42.信号量:用于实现任务与任务之间、任务与中断处理程序之间的同步与互斥

按功能划分类型:三种(1)互斥信号量:任务对临界资源互斥访问;不处理优先级反转;相当于轻量级互斥量,比互斥量耗费更少的CPU资源

(2)同步信号量:用于线程间同步;初始值为0——同步事件未发生

(3)计数信号量:控制系统中临界资源的多个实例使用;初始值为n——要管理的最大实例个数

43.通信机制:(1)直接通信: 在通信过程中双方必须明确地知道(命名)对方

(2)间接通信:通信双方不需要指出消息的来源或去向,而通过中间机制来通信,如邮箱、共享存储(3)极端情况:用于任务间同步

44.邮箱:(1)通信方式: 间接通信;多对多,必须有中间实体

(2)类型:私用(多写、单读)、公用(读写均可)、共享(共享者可读)

(3)特点:每个邮箱有唯一标识

消息在邮箱中可以安全保存,只允许核准的用户随时使用

基于 邮箱的通信可以实时,也可以非实时

邮箱原语:创建/撤销,发送/接收,...

(6)实时调度  典型的实时调度、优先级逆转、性能提升

  1. (1)任务:相互作用的程序集合或软件实体,每个程序执行时成为任务。

(2)任务执行的特性:动态性:任务的运行状态不断变化 → 状态变迁图、并发性:多任务并发执行、异步独立性:任务间相互独立,不存在前驱与后继关系、同步性:任务之间非独立,相互依赖

4.死锁:一组任务中,每个任务都无限等待该组中另一任务占用的资源,而永远的不到资源的现象

5.优先级反转:高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务执行的现象

6.优先级继承协议:当一个任务在其使用的临界区阻塞了一个或多个高优先级任务时,该任务将不使用其原来的优先级,而使用被该任务所阻塞的所有任务的最高优先级作为其执行临界区的优先级。当该任务退出临界区时,又恢复到其最初的优先级。

7.优先级继承的特性:

(1)继承性:任务T进入临界区而阻塞了更高优先级的任务,则任务T将继承被阻塞任务的优先级,直到任务T退出临界区

(2)动态性:一个不相关的较高优先级任务仍可进行任务抢占,这是基于优先级可抢占调度模式的本性

(3)传递性:任务优先级在反转期间,被提升优先级的任务的优先级可以继续被提升

(4)有界性:任务的阻塞时问是有界的,但可能出现阻塞链,从而会加长阻塞时间,甚至造成死锁

8.优先级继承的优缺点:(1)优点:可以有效降低单个低优先级任务的阻塞时间

(2)缺点:高优先级任务可能被中优先级人物阻塞;若一个高优先级任务所需多个临界资源分别被不同的低优先级任务占有,则阻塞可能相当长;当有多个临界资源被需要时,不能保证避免死锁发生

9.优先级天花板:在优先级天花板协议中,如果任务获得信号量,则在任务执行临界区的过程中,任务的优先级将被抬升到所获得信号量的优先级天花板。

10.优先级天花板的优缺点:(1)优点:大大降低高优先级任务的被阻塞时间;

避免优先级逆转造成的死锁问题;

  1. 缺点:将阻塞不竞争资源的中间优先级任务

11.比较:(1)相同点 都能解决优先级反转问题。

(2)执行效率 继承协议可能多次改变占有临界资源的任务的优先级,而天花板协议只需改变一次:后者效率高。

(3)死锁问题 优先级继承协议具有死锁和阻塞链问题,而优先级天花板协议可以解决这些问题。

(4)运行流程影响 天花板协议可能影响某些中间优先级任务的完成时间;继承协议对任务执行流程的影响相对较小。

(7)内核的移植  关注点、接口和移植、项目移植

1.移植:将程序代码从一种运行环境转移到另一种运行环境

2.(1)内核移植:将内核代码从一种硬件平台转移到另一种硬件平台上运行。

(2)内核移植:将已在某一特定CPU(或SOC芯片)上运行的RTOS内核在另一CPU(或SOC芯片)上运行起来

(3)内核移植:移植工作大部分是和硬件相关,需要针对具体CPU或芯片进行有区别的代码编写

3.通用移植过程:(1)HAL移植:针对不同目标板改写相关代码

 不同开发板的硬件资源不一样的

 不同架构处理器的指令集不一样

 相同架构处理器的不同系列产品,寄存器资源也不同

(2)项目移植:处理规则不一致的问题

 不同开发环境的编译器、汇编器、链接器不一样

 同样的C代码,也存在兼容性问题

 需要针对不同开发环境编写专门的汇编代码

  1. HAL移植(与硬件相关的代码):启动、中断、任务切换、内存、驱动程序

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实名吃香菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值