1、处理级别
OSEK操作系统是应用程序的基础,这些应用程序相互独立,并在处理器上提供它们的环境。OSEK操作系统能够控制多个并行运行的进程的实时执行。
OSEK操作系统为用户提供了一组定义好的接口。这些接口由竞争CPU的实体使用。
实体有两种类型:
- 由操作系统管理的中断服务例程
- Tasks(基础tasks和扩展tasks)
控制单元的硬件资源可以通过操作系统服务进行管理。这些操作系统服务由一个独特的接口调用,要么由应用程序调用,要么在操作系统内部调用。
OSEK定义了三个处理级别:
1. 中断级
2. 逻辑级调度
3. Task级
在任务级别内,任务根据用户分配的优先级进行调度(非优先级、全优先级或混合优先级)。运行时上下文在执行开始时被占用,并在任务完成后再次被释放。
下列为优先规则:
- 中断优先于任务
- 中断处理级别由一个或多个中断优先级组成
- 中断服务例程有一个静态分配的中断优先级
- 分配中断服务程序到中断优先级是依赖于实现和硬件架构
- 对于任务优先级和资源上限优先级,数字越大表示优先级越高
- 任务的优先级由用户静态分配
处理级别被定义为一系列连续的值,用于处理任务和中断例程。操作系统优先级到硬件优先级的映射是特定于实现的。
请注意,给调度程序分配优先级只是一个逻辑概念,可以在不直接使用优先级的情况下实现。此外,OSEK没有规定任何关于特定微处理器体系结构的任务优先级和硬件中断级别的关系规则。
2、一致性阶层(Conformance classes)
应用软件对系统的不同需求,以及特定系统的不同功能(例如处理器、内存),都要求操作系统具备不同的功能。在下面的描述中,这些操作系统特性被描述为“一致性阶层”(CC)。
一致性类的存在是为了支持以下目标:
- 提供方便的操作系统功能组,便于理解和讨论OSEK操作系统。
- 允许按照预定义的线路进行部分实现。这些部分实现可以被认证为符合OSEK的封装。
- 使用OSEK相关特性,在不改变应用程序的情况下,创建从功能较低的类到功能较高的类的升级路径。
要获得认证,必须实现完整的“一致性阶层”。但是,系统生成只需要链接特定应用程序所需的那些系统服务。“一致性阶层”不能在执行期间更改。
一致性类由以下属性决定:
- 任务激活的多个请求
- 任务类型
- 每个优先级的任务数
如果没有明确说明,所有其他OSEK特性都是强制性的
定义了以下一致性阶层:
- BCC1(仅限basic tasks,每个任务一个激活请求,每个优先级一个任务,而所有任务有不同的优先级)
- BCC2(与BCC1类似,每个优先级加上一个以上的任务,允许多个任务激活请求)
- ECC1(类似于BCC1,加上extended tasks)
- ECC2(像ECC1一样,加上每个优先级可能有多个任务,并且允许basic tasks有多个任务激活请求)
只有在不超过最低要求的情况下,才能假定应用程序的可移植性。“一致性阶层”的最低要求如图3-3所示。
3、OSEK OS和OSEKtime OS的关系
OSEKtime OS是一个特别适合时间触发架构需求的操作系统。它允许OSEK OS与OSEKtime OS共存。
从概念上讲,OSEKtime分配给OSEK使用空闲时间。OSEK OS中的中断和任务的重要性(优先级低)低于OSEKtime操作系统中的类似实体。
如果OSEK和OSEKtime共存,则OSEK接口和系统调用的定义不会改变。由于OSEKtime负责整个系统,而OSEK只负责本地,因此在系统启动和关闭方面存在一些小的例外情况。
在此之上,在OSEKtime中定义的功能对OSEK OS的实现施加了限制,如果它打算与OSEKtime OS共存。有关更多信息,请参考OSEKtime操作系统的规范。