嵌入式实时系统线程的副作用

时间:2022-03-24 16:39:57

具有优先级的抢占式多任务系统由于响应的实时性在嵌入式广泛使用,除了合理安排各个线程的优先级外,处理好线程之间的关系极大的影响系统的性能和实时性,是程序员在实际进行系统设计时工作的重点。线程对其他线程的影响分为直接和间接两种。直接影响为线程资源冲突,常用的解决方法为加锁进行互斥访问,这些在许多地方都有讨论,但是对嵌入式系统中的间接影响讨论的较少,间接影响的表现为引起该事件的线程已经退出,但是其造成的影响却持续影响后续系统的实时性。在嵌入式系统中由于和硬件交互紧密,这一问题表现的更为突出,我们知道,中断的优先级别是高于系统中的所有线程。如果低优先级别的线程启用的资源会产生中断,而且该中断的关闭也由该线程操作,则需要考虑该中断对系统的副作用,即无效的中断抢占处理器造成系统响应缓慢。在我们设计的系统中就发生这样的情况:

我们考虑这一种情况:在某个实时系统中有三个线程 abc ,优先级依次降低, c 线程运行过程中会开启定时器进行数据发送,数据发送完成后 c 会关闭定时器,由于发送数据的时间很短,故不会影响系统的整体性能。但是如果在 c 正在进行数据发送过程中被高优先级的线程抢占,这时候会出现高优先级线程在开启定时器情况下运行,由于除了 c 线程会使用定时器,其他线程都对该定时器资源不可知,但是当定时器中断频度非常高会严重影响线程的运行,即线程运行的时间被拉长了,进而对系统的响应时间造成影响。