一般来说,这意味着实时嵌入式系统必须在一个可预测可保证的时间段内做出对外部事件的反应。如果没有达到上述要求,那么系统就会做出错误的操作。
好,那么按照定义,下面的系统可以认为是实时系统:
在上面所列出最后一个例子中,如果微控制器有一个健壮的通信协议,它可以拥有失败重发机制,而且可以保证平均每一千万的数据包仅丢失一个,那么会发生什么呢?它还是实时系统么?这取决于重发的结果,但是很显然,在某种程度上它的确是实时的。
因此,实时系统一般可分为硬件实时和软件实时这两大类:
实时系统的正式定义只是要求系统的响应“足够快”而并没有指出它究竟有多快。这样,实时这一术语就可以应用于许多系统上。
这也意味着任何系统都是实时的——只要我们希望它是。例如,你可以说:“如果我们不在一分钟内对顾客的要求做出反应,那么顾客就会不满而要求退货”;因此,它肯定是一个实时系统。
实际上,当我们说到实时嵌入式软件时,时限究竟是多少呢?一般从软件的角度来说,软件可以在大约十微妙的时间内对外部事件做出可靠的响应。
为什么这么限制呢?这是因为在典型的微处理器体系结构、典型的时钟速度下经过精细的设计,我们可以构造一个复杂的嵌入式系统,它可以处理这个量级的硬实时限制。按照这种时限来编写硬实时软件是困难的,但却很有实际意义。
不要认为实时代码必须是运行速度最快的代码。在实时系统中,可预测性比速度更重要。因此,我们要避免使用那些在大多数情况下速度很快、但在某些条件下速度又会慢下来的算法,我们更愿意采用虽然慢一些但是更有可预测性的算法。
当你从事嵌入式项目时,你首先需要知道该系统究竟属于哪一个类型(硬实时、软实时还是非实时系统),这一点很重要。这三种系统所要求的编程技术和规范并不相同。