AUTOSAR基础篇之OS-00
OS主要是为我们解决了以下几个基本问题:
-
改变各任务的执行频率;
-
改变各任务的执行时间;
-
设定各任务的优先级,保证高优先级任务能够及时执行;
-
任务切换时的现场保护与恢复;
-
共享资源的安全访问机制等;
首先,AUTOSAR OS是基于OSEK OS继承发展而来,所以上述的OSEK OS的基本特点在AUTOSAR OS都能够得到满足,所以AUTOSAR OS是向后兼容的,也就意味着在OSEK OS上能够运行的应用程序同样也可以在AUTOSAR OS上运行。
AUTOSAR OS继承OSEK OS,在OSEK OS的基础上又特别明确了AUTOSAR OS至少需要提供的系统服务如下:
-
基于优先级的调度;
-
及时的中断处理的能力;
-
中断优先级必定高于task;
-
通过StartOS()与StartOSHook()来创建启动接口;
-
通过ShutdownOS()与ShutdownOSHook()来创建关机接口;
-
能够在OSEK OS中跑的APP自然也能够在AUTOSAR OS运行,但同时Autosar os也同时限制了OSEK OS的一些基本使用;
基本任务与扩展任务
AUTOSAR OS中存在两种任务:基本任务(Basic Task)和扩展任务(Extended Task)。基本任务则存在以下三种状态:
-
运行状态(Running):处于运行状态的任务可能被高优先级任务或者中断抢占从而进入就绪状态,且同一Core中任何时刻只会存在一个任务处于运行状态,任务运行结束后则将自己挂起进入阻塞状态;
-
就绪状态(Ready): 处于就绪状态的任务由调度器决定是否启动进入运行状态,且该状态时任务切换至运行状态的前提;
-
阻塞状态(Suspend): 处于阻塞状态的任务是被动的,可以由API函数或Alarm激活进入就绪状态;
扩展任务与之相比,则多了一个等待状态(Waiting),解释如下:
-
等待状态(Waiting):当任务的运行需要等待某一或某些事件被置位时,任务进入就绪状态。