嵌入式系统设计中的计算模型与早期设计阶段
在嵌入式系统设计中,软件的复杂性和并发问题常常给开发者带来挑战。其中,死锁问题是一个不容忽视的难题。使用线程、信号量和互斥锁编写的非平凡软件,对人类来说理解起来十分困难,即使经过非常严格的代码检查,也可能存在疏忽的风险。有观点认为,“使用线程、信号量和互斥锁编写的非平凡软件对人类来说是难以理解的”,并且“线程作为一种并发模型并不适合嵌入式系统,它们仅在尽力而为的调度策略足够的情况下才能良好工作”。
死锁的发生需要在运行时满足四个条件:互斥、资源不可抢占、持有资源并等待更多资源,以及线程之间存在循环依赖。在一些实际例子中,这四个条件很容易同时满足。对于个人电脑来说,罕见的死锁可能是可以接受的,但对于安全关键系统而言,死锁显然是不可接受的。
为了避免关心可能的死锁问题,研究非冯·诺依曼计算模型(MoCs)是很有意义的。而且,从需求列表来看,不存在单一的形式语言能够满足所有需求。在实践中,我们必须做出妥协,可能还需要混合使用多种语言,每种语言适合描述特定类型的问题。实际设计中语言的选择将取决于应用领域和设计环境。
1. 计算模型(MoCs)
计算模型描述了执行计算所假定的机制。一般来说,我们需要考虑由组件组成的系统,并且要严格区分组件内的计算和组件间的通信。MoCs主要定义以下两个方面:
- 组件及组件内计算的组织 :可能的组件包括过程、进程、函数、有限状态机等。
- 通信协议 :描述组件之间的通信方法,例如异步消息传递和基于会合的通信。
组件之间的关系可以用图来表示,在这些图中,计算也可称为进程或任务,它们之
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



