内核类其他基本概念
在RTOS场景下编程,芯片启动过程先运行一段被称为RTOS内核的程序代码,这段代码的功能是:开辟好用户线程的运行环境,准备好对线程进行调度。RTOS一般由内核与扩展部分组成,内核的最主要功能是线程调度,扩展部分的最主要功能是提供应用程序编程接口(API)。内核类其他基本概念主要有:时间嘀嗒、代码临界段、不可抢占型内核与可抢占型内核、实时性相关概念及RTOS实时性指标等。
1.时间嘀嗒
时钟节拍(Clock Tick),有时也直接译为时钟嘀嗒,它是特定的周期性中断,通过定时器产生周期性的中断,以便内核判断是否有更高优先级的线程已进入就绪状态。
2.代码临界段
代码临界段也称为临界区,是指处理时不可分割的代码,一旦这部分代码开始执行,则不允许任何中断打扰。为确保临界段代码的执行,在进入临界段之前要关中断,且临界段代码执行完后应立即开中断。
3.不可抢占型内核与可抢占型内核
不可抢占型内核(Non-Preemptive Kernel),要求每个线程主动放弃CPU的使用权,不可抢占型调度算法也称为合作型多线程,各个线程彼此合作共享一个CPU。但异步事件还是由中断服务来处理,中断服务可使高优先级的线程由挂起态变为就绪态,但中断服务以后,使用权还是回到原来被中断了的那个线程,直到该线程主动放弃CPU的使用权,新的高优先级的线程才能获得CPU的使用权。
当系统响应时间很重要时,须使用可抢占型内核(Preemptive Kernel)。在可抢占型内核中,一个正在运行的线程可以被打断,而让另一个优先级更高且变为就绪态的线程运行。如果是中断服务子程序使高优先级的线程进入就绪态,中断完成时,被中断的线程被挂起,优先级高的线程开始运行。
4.实时性相关概念及RTOS实时性指标
硬实时(Hard Real-Time)要求在规定的时间内必须完成操作,是在设计操作系统时保证的,通常将具有优先级驱动的、时间确定性的、可抢占调度的RTOS系统称为硬实时系统。软实时(Soft Real-Time)则没有那么严格,只要按照线程的优先级,尽可能快地完成操作即可。
RTOS追求的是调度的实时性、响应时间的可确定性、系统的高度可靠性,评价一个RTOS一般可以从线程调度、内存开销、系统响应时间、中断延迟等几个方面来衡量。
(1)线程调度的时间指标
RTOS的实时性和多线程能力在很大程度上取决于它的线程调度机制。在大多数商用的实时系统中,为了让操作系统能够在有突发事件时迅速取得系统使用权,以便对事件做出反应,所以大都提供了“抢占式线程调度”功能,也就是操作系统有权主动终止应用程序(应用线程)的执行,并且将执行权交给拥有最高优先级的线程。
调度延时(Scheduling Latency):指当一个更高优先级的线程就绪到这个线程开始运行之间的时间。简而言之,就是一个线程被触发后,由就绪到开始运行的时间。
线程切换时间(Context-Switching Time):由于某种原因使一个线程退出运行时,RTOS保存它的运行现场信息,并插入相应列表,依据一定的调度算法重新选择一个新线程使之投入运行,这一过程所需时间称为线程切换时间。线程切换时间越短,RTOS的性能就越高。
恢复时间(Recovery Time):指从线程完成后,系统响应到恢复执行主程序所需要的时间。