第一范文网 - 专业文章范例文档资料分享平台

[VIP专享]ucos-ii(源代码开放的确良嵌入式os)教程(2)

来源:用户分享 时间:2025/5/15 12:52:20 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第2章 实时系统概念 1

2.0 前后台系统 (FOREGROUND/BACKGROUND SYSTEM) 12.1 代码的临界段 22.2 资源 22.3 共享资源 22.4 多任务 22.5 任务 2

2.6 任务切换(CONTEXT SWITCH OR TASK SWITCH) 32.7 内核(KERNEL) 32.8 调度(SCHEDULER) 4

2.9 不可剥夺型内核 (NON-PREEMPTIVE KERNEL) 42.10 可剥夺型内核 5

2.11 可重入性(REENTRANCY) 52.12 时间片轮番调度法 72.13 任务优先级 72.14 2.14静态优先级 72.15 动态优先级 72.16 优先级反转 72.17 任务优先级分配 82.18 互斥条件 102.18.1 关中断和开中断 102.18.2 测试并置位 11

2.18.3 禁止,然后允许任务切换 112.18.4 信号量(Semaphores) 12

2.19 死锁(或抱死)(DEADLOCK (OR DEADLY EMBRACE)) 162.20 同步 16

2.21 事件标志(EVENT FLAGS) 18

2.22 任务间的通讯(INTERTASK COMMUNICATION) 182.23 消息邮箱(MESSAGE MAIL BOXES) 182.24 消息队列(MESSAGE QUEUE) 192.25 中断 20

2.26 中断延迟 202.27 中断响应 21

2.28 中断恢复时间(INTERRUPT RECOVERY) 212.29 中断延迟、响应和恢复 222.30 中断处理时间 222.31 非屏蔽中断(NMI) 232.32 时钟节拍(CLOCK TICK) 242.33 对存储器的需求 252.34 使用实时内核的优缺点 262.35 实时系统小结 26

第2章 实时系统概念

实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统。有两种类型的实时系统:软实时系统和硬实时系统。在软实时系统中系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多长时间内完成。

在硬实时系统中,各任务不仅要执行无误而且要做到准时。大多数实时系统是二者的结合。实时系统的应用涵盖广泛的领域,而多数实时系统又是嵌入式的。这意味着计算机建在系统内部,用户看不到有个计算机在系统里面。以下是一些嵌入式系统的例子: 实时应用软件的设计一般比非实时应用软件设计难一些。本章讲述实时系统概念。2.0 前后台系统 (Foreground/Background System)

不复杂的小系统一般设计成如图2.1所示的样子。这种系统可称为前后台系统或超循环系统(Super-Loops)。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台行为(foreground)。后台也可以叫做任务级。前台也叫中断级。时间相关性很强的关键操作(Critical operation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到处理,这种系统在处理信息的及时性上,比实际可以做到的要差。这个指标称作任务级响应时间。最坏情况下的任务级响应时间取决于整个循环的执行时间。因为循环的执行时间不是常数,程序经过某一特定部分的准确时间也是不能确定的。进而,如果程序修改了,循环的时序也会受到影响。

图2-1前后台系统

很多基于微处理器的产品采用前后台系统设计,例如微波炉、电话机、玩具等。在另外一些基于微处理器的应用中,从省电的角度出发,平时微处理器处在停机状态(halt),所有的事都靠中断服务来完成。2.1 代码的临界段

代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。(参阅2.03共享资源)2.2 资源

任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等。2.3 共享资源

可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源。这叫做互斥(mutual exclusion)。在2.18节“互斥”中,将对技术上如何保证互斥条件做进一步讨论。2.4 多任务

多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。多任务运行很像前后台系统,但后台任务有多个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。使用多任务,应用程序将更容易设计与维护。

2.5 任务

一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间(如图2.2所示)。

图2.2多任务。

典型地、每个任务都是一个无限的循环。每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态,就绪态、运行态、挂起态(等待某一事件发生)和被中断态(参见图2.3)

休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。就绪意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。运行态的任务是指该任务掌握了CPU的控制权,正在运行中。挂起状态也可以叫做等待事件态WAITING,指该任务在等待,等待某一事件的发生,(例如等待某外设的I/O操作,等待某共享资源由暂不能使用变成能使用状态,等待定时脉冲的到来或等待超时信号的到来以结束目前的等待,等等)。最后,发生中断时,CPU提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了被中断状态。图2.3表示μC/OS-Ⅱ中一些函数提供的服务,这些函数使任务从一种状态变到另一种状态。

图2.3任务的状态

2.6 任务切换(Context Switch or Task Switch)

Context Switch 在有的书中翻译成上下文切换,实际含义是任务切换,或CPU寄存器内容切换。当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(Context),即CPU寄存器中的全部内容。这些内容保存在任务的当前状况保存区(Task’s Context Storage area),也就是任务自己的栈区之中。(见图2.2)。入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程叫做任务切换。任务切换过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于CPU有多少

[VIP专享]ucos-ii(源代码开放的确良嵌入式os)教程(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1hhys1sl9s44p5c1cp2i5zpak1cssx00d9a_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top