嵌入式系统的规范、建模与计算模型
1. 嵌入式系统的时间建模需求
在嵌入式系统中,时间建模至关重要。对于实时系统,不仅要证明算法最终会终止,还要确保其在给定时间内完成。E. Lee指出:“从嵌入式软件的角度来看,计算机科学核心抽象中缺乏时间概念是一个缺陷”。时间建模需涵盖以下四个方面:
- 测量经过时间的技术 :很多应用需要检查自某个计算执行后经过了多少时间,访问计时器可提供实现这一功能的机制。
- 指定时间延迟进程的方法 :实时语言通常提供延迟构造,但嵌入式系统软件的典型实现不能保证精确延迟。例如,任务T要延迟δ时间,一般是将其在操作系统中的状态从“就绪”或“运行”改为“挂起”,时间结束后再改回“就绪”。然而,若有更高优先级任务在执行或不使用抢占机制,延迟任务的实际延迟时间会超过δ。
- 指定超时的可能性 :在许多场景中,我们需等待特定事件发生,但该事件可能在给定时间间隔内不出现,这时就需要得到通知。比如等待网络连接的响应,若在δ时间内未收到,就应能收到通知。实时语言通常会提供超时构造,但实现时往往会遇到与延迟相同的问题。
- 指定截止日期和调度的方法 :很多应用需要在有限时间内完成特定计算。例如,汽车传感器检测到事故时,安全气囊必须在约十毫秒内展开。这就要求软件能在给定时间内决定是否触发安全气囊,因为安全气囊展开过晚可能会伤害乘客。但大多数语言不允许直接指定时间约束,即便能指定,也需在单独的控制文件、弹出菜单等中进行。而且,现代很多硬件平台的定时行为难以预测,缓存、流水线停顿、推测执行、任务抢占和中断等都会影响执行时间,使得时