《实时设计模式——实时系统的强壮的、可扩展的体系结构》
文章平均质量分 82
《实时设计模式——实时系统的强壮的、可扩展的体系结构》是一本专注于实时系统设计的书籍。这本书探讨了实时系统的特点和挑战,并提供了一系列设计模式和架构策略,旨在帮助开发者创建既强壮又可扩展的实时系统。
Let's Chat Coding
实时嵌入式系统软件开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
嵌入式实时操作系统任务调度分析
在嵌入式实时操作系统中,和:速率单调调度算法:速率单调分析方法。原创 2026-05-16 11:26:18 · 430 阅读 · 0 评论 -
UML依赖关系详解
在统一建模语言(UML)中,依赖关系是一种重要的模型元素,用来表示一个事物(比如类、组件或包)依赖于另一个事物的情况。如果一个类的模板实例化依赖于另一个类,那么就表示该类模板依赖于另一个类。扩展关系是一种 UML 关系类型,表示一个用例(扩展用例)在某些条件下扩展另一个用例(基本用例)的功能。一个类(客户端)在其方法中使用另一个类(供应商)的实例。一个类的方法接受另一个类的实例作为参数。类成员变量是指向另一个类的对象指针。一个类的方法返回另一个类的实例。一个类负责创建另一个类的实例。)承诺实现另一个类(原创 2024-02-28 22:09:06 · 1345 阅读 · 0 评论 -
7.1 嵌入式软件设计资源管理-引言
标准速率单调分析(Standard Rate Monotonic Analysis, RMA)是实时系统中用于任务调度的一种经典算法。原创 2024-02-28 20:19:55 · 711 阅读 · 0 评论 -
实时嵌入式:无限阻塞
在优先级反转的情况下,无限阻塞可能是结果之一。反之则未必成立,也就是说,发生无限优先级反转情况时必然伴随着无限阻塞,但发生无限阻塞的情况不一定是由无限优先级反转引起的。为了避免无限阻塞,开发者应在系统设计和开发过程中进行全面考虑,并采取有效措施来防止无限阻塞的发生。解决无限阻塞的问题通常需要对系统的同步策略、资源管理以及任务调度策略进行细致的设计与审查。无限阻塞是指任务在等待某些条件满足时,永远无法继续执行。在多任务或多线程操作系统中,无限阻塞是一个常见问题,可以由多种原因造成。原创 2024-02-01 20:22:33 · 326 阅读 · 0 评论 -
实时操作系统中的任务最长阻塞时间计算指南
在实时操作系统(RTOS)的环境下,确保任务能够在预定的时间内完成是至关重要的。如果包括阻塞时间在内的任务总执行时间超过截止时间,该任务的实时性可能无法得到保障。对于每个可能造成阻塞的低优先级任务,计算它们访问共享资源时临界区的最大可能执行时间。如果RTOS支持优先级继承,分析所有可能导致当前任务因优先级反转而受到间接阻塞的场景,并计算这些场景下共享资源导致的最长阻塞时间。每个任务可能遭受高优先级任务的直接阻塞。计算这段时间需要您评估所有可能阻塞当前任务的高优先级任务,并累加它们持有资源的最大时间。原创 2024-02-01 20:18:23 · 435 阅读 · 1 评论 -
实时嵌入式:优先级反转
当一个高优先级任务H被低优先级任务L阻塞时,任务L临时继承任务H的优先级,直到它释放那个资源。在操作系统的上下文中,优先级反转发生在低优先级任务持有一个高优先级任务需要的资源时,而且该低优先级任务因为某些原因被中等优先级任务抢占执行。当提到“无限优先级反转”时,其实指的是一种特殊情况的优先级反转,其中高优先级任务可能会被无限期地阻塞,因为它在等待一个低优先级任务释放资源,而该低优先级任务却始终无法得到执行机会(因为总是被其他中等优先级的任务抢占)。C嵌入式编程设计模式源码-优快云博客。原创 2024-02-01 12:42:57 · 707 阅读 · 1 评论 -
6.3 内存池模式
也是一种内存管理策略,它在系统启动时预先分配一定数量的对象,并在需要时提供给客户端使用。这种模式既避免了动态分配的非确定性和碎片化,又提供了静态分配的灵活性,适用于需要在运行期间分配和回收大量相似对象的系统。模式是嵌入式系统中常用的内存管理技术,适用于需要频繁创建和销毁大量相似小型对象的场景。它可以是任何你想要的对象,但通常情况下,它们是简单、小型的类,由各种客户端使用。可参数化的泛型池管理器类用于创建特定类型的池化对象。每个池创建并管理其对象集,在需要时分配对象,并返回分配对象的引用或句柄给客户端。原创 2024-01-31 22:56:44 · 713 阅读 · 0 评论 -
6.2 静态内存分配模式
它的职责是通过创建和初始化系统的主要部分(最高级别的复合对象)来“启动”系统。复合对象(Composite Object)是指与其他对象之间存在组合关系的对象,其他对象可以是复合对象或原始对象。在实际应用中,系统可能包含更多的复合对象和原始对象。复合对象可以由其他复合对象组成,但每个通过组合关系拥有的对象只能属于一个复合对象。这个模式非常容易实现。在许多情况下,甚至不需要单独的初始化方法,可以直接使用每个复合对象的构造函数来完成对象的创建和初始化。它允许系统对象和复合对象通过组合包含复合对象和原始对象。原创 2024-01-31 00:10:33 · 950 阅读 · 0 评论 -
6.1 内存模式概述
在垃圾收集过程中,活动对象从一个段移动到另一个段,使得目标段中的对象相邻排列,从而在该段开始时形成一个连续的内存块。所有对象都在系统初始化期间分配,这意味着如果设计时能够知道内存负载,并且能够为最坏情况分配足够的内存,系统在初始化后的执行通常会比使用动态分配时更快,运行时执行通常也更可预测。这种模式适用于复杂到无法预测内存分配顺序的系统,且无法为所有可能的最坏情况分配足够内存的情况。这种模式通过限制内存分配的块大小,解决了内存碎片化问题,但可能导致内存使用效率降低。原创 2024-01-30 22:52:55 · 302 阅读 · 1 评论 -
5.10 动态优先级模式
正如上一节提到的,可调度性最重要的两个概念是紧急性和关键性,但操作系统通常只提供一个单一数值:优先级,来管理两者。静态优先级模式中,优先级是在设计时确定的,通常反映了紧急性和关键性的组合。动态优先级模式则根据任务的紧迫性,在运行时动态设定任务优先级。动态优先级模式将每个任务的优先级设定为一个与剩余时间相关的函数,越接近截止时间优先级升高。这种调度策略通常被称为最早截止期优先 (Earliest Deadline First,简称 EDF)。原创 2024-01-30 22:43:54 · 1148 阅读 · 1 评论 -
5.9 静态优先级模式(Static Priority Pattern)
为了保证资源的完整性,常见的一种实现方式是阻塞策略:当优先级较高的线程需要占用低优先级线程持有的资源时,高优先级线程会一直处于阻塞状态,直到资源释放。每个 Concrete Thread 会一直执行,直到它完成(它通过调用 Scheduler::return() 通知 Scheduler),被更高优先级的任务抢占(将被抢占的任务插入到 Ready Queue 中),或者在试图访问被锁定的 Shared Resource 时被阻塞(将被阻塞的任务插入到 Blocked Queue 中)。原创 2024-01-30 22:12:18 · 440 阅读 · 0 评论 -
5.8 轮询调度模式
轮询调度模式通过抽象线程、具体线程、调度器、栈、任务控制块和定时器等角色的协作,实现公平高效的并发任务执行。原创 2024-01-29 23:46:27 · 896 阅读 · 0 评论 -
5.3 实时操作系统中的同步机制
信号量的基本操作包括“等待”(通常是表明任务正在等待一个资源)和“发送”(通常是释放一个资源或表明任务完成了某项操作)。当特定的条件尚未满足时,任务可以选择在条件变量上等待。当条件满足时,另一个任务可以通知等待的任务,使其继续执行。当低优先级任务持有高优先级任务需要的资源时,它暂时“继承”更高优先级,以避免更高优先级的任务无限期等待。它们能够让任务在一个或多个事件发生时被唤醒或通知,是控制复杂任务同步时的有用工具。它们提供了一种同步机制,使得任务可以等待来自其他任务的数据,而无需持续查询资源状态。原创 2024-01-29 20:39:26 · 205 阅读 · 0 评论 -
9.1 嵌入式系统开发:安全性与可靠性相关基本概念
冗余安全性关注的是系统运行时不会引起危险或不可接受的风险。例如,在工业控制系统中,安全性的关注点可能是确保机器在任何时候都不会对操作人员或者环境造成伤害。原创 2024-01-27 21:35:27 · 823 阅读 · 0 评论 -
9. 嵌入式系统开发:安全性与可靠性设计模式---引言
这种模式通常由两个通道组成:一个监控通道和一个执行器通道。三通道模式(Triple Modular Redundancy, TMR)通常指的是一种冗余策略,是一种特定类型的同质冗余,其中三个独立的子系统完成同样的任务,然后通过多数表决系统(voting system)来决定哪个结果是正确的。异质冗余模式(Heterogeneous Redundancy)是一种系统设计策略,每个通道拥有独立的额设计和实现,用于提高系统的鲁棒性和可靠性,尤其是在高安全性和高可用性要求的领域,如航空航天、军事和核设施等。原创 2024-01-27 20:47:20 · 578 阅读 · 0 评论 -
Observer Pattern到Data(Msg) Bus Pattern的演变
观察者模式到数据总线模式的演变,反映了在更复杂系统中对于更为松耦合和更高级通信需求的回应。在嵌入式系统中,这种模式允许组件在无需了解系统其它部分的情况下发送和接收信息,这对于维护大型、复杂的嵌入式系统特别有用。观察者模式(Observer Pattern)是一种行为设计模式,允许对象在其状态发生变化时通知多个依赖于它的对象。与观察者模式相比,数据总线模式提供了更高层次的解耦和更灵活的通信机制。当主题的状态改变时,它会调用所有已注册观察者的回调方法(通常是update或notify之类的方法)。原创 2024-01-25 15:53:20 · 119 阅读 · 0 评论 -
Mutex优先级继承的优点
优先级反转是指一个高优先级任务被一个低优先级任务间接阻塞了,因为这个低优先级任务持有高优先级任务所需的资源。:在没有优先级继承机制时,为避免优先级反转,系统可能会频繁地进行任务调度。:优先级继承允许低优先级任务临时“继承”阻塞它的高优先级任务的优先级,这样可以减少高优先级任务因低优先级任务持有互斥量而被阻塞的时间。:通过确保高优先级任务能够获得所需资源,优先级继承可以减少高优先级任务的等待时间,提高其响应性。:优先级继承有助于保持系统的优先级顺序,确保高优先级任务首先执行,从而维护了预期的实时行为。原创 2024-01-17 00:09:08 · 44 阅读 · 0 评论 -
RTOS 二值信号量和互斥量
二值信号量和互斥量都是重要的同步机制,在 FreeRTOS 中都有广泛的应用。开发者应根据具体需求选择合适的同步机制,并注意正确使用这些机制,以保证系统的安全性和可靠性。FreeRTOS 中的二值信号量(Binary Semaphore)和互斥量(Mutex)都是用于任务之间或中断与任务之间的同步。原创 2024-01-17 00:06:13 · 121 阅读 · 0 评论 -
软件开发方法论
迭代和增量的软件开发方法,强调适应性和快速响应变化。倡导小规模、频繁的迭代,持续的客户反馈,以及跨功能团队的紧密协作。原创 2023-12-31 15:40:03 · 1100 阅读 · 1 评论 -
嵌入式软件开发从小工到专家
**有道无术,术尚可求;有术无道,止于术**原创 2023-12-29 20:33:04 · 2753 阅读 · 2 评论 -
4. 嵌入式软件开发之架构设计
领域(Domain)是指涉及特定主题内容的区域,通常具有自己的专用词汇,并且经常需要特定领域的专业知识。领域在系统设计中作为分类和组织信息的一种方式,帮助管理庞大而复杂的类结构。原创 2023-12-22 21:45:51 · 880 阅读 · 0 评论 -
1.6 何为设计模式
概念:设计模式是针对常见问题的通用解决方案。目的:旨在解决设计中针对特定优化或服务质量(QoS)问题。原创 2023-12-12 23:07:21 · 469 阅读 · 0 评论 -
1.5 用例和需求模型
概念:系统或其大规模元素的明确命名能力。特点是系统的功能方面,必须向一个或多个参与者返回结果。不应透露或暗示功能的内部实现。是许多具体详细需求的占位符。可视为“容纳”相关详细需求的“包”。原创 2023-12-12 22:50:28 · 335 阅读 · 0 评论 -
嵌入式系统面向对象敏捷设计
代表,即(嵌入式系统面向对象敏捷设计)。它是一种专门为创建嵌入式系统而设计的软件开发过程。由 Bruce Powel Douglass 在 1990 年代后期开发,基于面向对象编程和并发编程的原则。它是一种轻量级的迭代过程,可帮助开发人员快速高效地创建高质量的嵌入式系统。原创 2023-12-12 19:47:11 · 958 阅读 · 0 评论 -
1.3结构元素和图
属性和方法的列表不需要是完整的;传感器类的其他特性可能显示在其他图表上,或根本不出现在任何图表中,只在浏览UML工具的对象仓库或从该仓库生成的报告中可见。总结:接口定义了一组必须由类实现的方法的签名,抽象类提供了部分实现或不提供实现的方法,而具体类则实现了这些方法,提供具体的执行逻辑。此外,图1-1展示了另外两个类,Sensor类通过一条直线(称为关联,稍后将进一步讨论)与这些类相连。理解面向对象编程中的接口、操作和方法以及它们与接口类、抽象类和具体类之间的关系是至关重要的。原创 2023-12-10 01:05:23 · 526 阅读 · 0 评论
分享