请教实时系统中实时相关的一个问题

看到很多文档中说,实时操作系统实时的含义,其中有一个是跟任务的确定性相关的,也就是说每一个事件最终会在deadline前做完,这个deadline操作系统是怎么知道的呢?
或者说在earlist deadline first 这个算法中,我应该怎么确定每一个事件的deadline 呢?

操作系统并不知道deadline。但操作系统保证了系统操作所花的时间是确定的。比如中断延迟最长10ns(不管系统在什么状态,不管用户程序在做什么)。

有了系统操作的可确定性,接下来就是你自己的用户程序了。比如中断在10ns里到了你的程序,如果你不去响应,那当然就没有了可确定性。但如果你的程序也是中断响应在高优先级进行的。那么你的系统对中断就有了“可确定的”响应周期。

最后,拿这个可确定性同你的Deadline比较。如果你的Deadline是30ns,除了中断延迟的10ns,你的中断处理有20ns的时间。如果无法在这里面完成处理的,那么就是系统硬件无法满足deadline。

操作系统是不知道什么DeadLine的。说白了那都是人定义的。

实时的操作系统只会按要求做事,简单来说按优先级。优先级高自然能拿到CPU了。有了CPU和合理的设计,就能保证事情能在一定的时间内完成,如5ms完成某个运算。这就是确定性。

非实时的系统之所以不实时,是因为你想用CPU的时候,它不一定会给你。因为它可能正在忙别的东西。这样就没有确定性了。成了李宁了,一切皆有可能!

所以,是否DeadLine,还是要看你的设计。再经过测试来证明。

非常感谢两位的回答,我明白了。