Matrix653 实现

更新时间:
2024-01-02
下载文档

Matrix653 实现

本节介绍 Matrix653 分时分区操作系统中分区管理的实现原理。

分区简介

Matrix653 的核心概念是分区。运行在 Matrix653 上的应用根据空间和时间进行分区。分区管理是 Matrix653 用于满足这些分区约束的核心模块。

分区属性

固定属性:

  • Identifier:标识符。定义分区的数字标识。它至少是在核心模块的基础上唯一定义的。操作系统可以使用它来进行分区激活、消息路由和调试支持。它也可以由应用程序使用,例如,作为维护消息中的字段。
  • Name:名字。定义分区的字符串标识。它至少是在核心模块的基础上唯一定义的。
  • Memory Requirements:内存需求。定义分区可用的内存量,并进行适当的代码/数据隔离。内存需求包括进程堆栈大小的单独规定。
  • Partition Period:分区周期。在需要的时间间隔内,分区必须被激活以满足其操作需求。

注: 通常,分区周期是分区内进程周期的最大公约数。如果进程周期是倍数关系,那么分区周期是最短进程的周期。如果分区中没有周期进程,则分区周期基于应用程序满足其性能要求所需的最低执行频率。分区周期用作确定分区时间窗的偏移量和持续时间。

  • Partition Duration:分区持续时间。分区在一个分区周期内所需的执行时间量。
  • Inter-Partition Communication Requirements(Ports):分区间通信需求。表示分区与之通信的分区和(或)设备。
  • Partition Health Monitor Table:分区健康监控表。表示在检测到分配给分区的故障时要执行的运行状况监视器(HM)操作。

固定属性:

  • Number of Associated Processor Core(s):关联处理器核心数。定义逻辑处理器核心数,在配置时固定,与可用于调度进程的分区相关联。应用程序可以在分区初始化阶段使用服务来获取分区可用于运行进程的逻辑处理器内核的数量。在每个分区的时间窗口期间,相关联的逻辑处理器内核可用于分区的进程调度。应用程序通过初始化进程使其与特定的逻辑处理器内核有亲缘关系来调度进程在该逻辑处理器内核上运行。
  • Entry Point:入口点(即分区初始化)。表示分区开始/重启地址。
  • System Partition:系统分区。表示该分区是系统分区。

可变属性:

  • Lock Level:锁定级别。表示分区内抢占被锁定的进程的当前锁定级别。
  • Operating Mode:运行模式。表示分区当前的运行模式。
  • Start Condition:启动条件。表示分区在何种条件下启动的。

分区控制

当操作系统进入运行状态时,操作系统启动应用程序分区。在核心模块上电后,操作系统启动的分区,其初始模式是 COLD_START 模式。每个分区的资源(通道,进程,队列,信号量,事件等)在构建期指定。相应的对象(即数据结构)在分区初始化时创建,之后,分区进入 NORMAL 模式。应用程序通过调用适当的 APEX 接口,将分区从一种运行模式转换到另一种运行模式。一个分区的运行模式独立于其他分区的运行模式。所以,某分区可能在 COLD_START 模式,与此同时其它分区在 NORMAL 或者 WARM_START 模式。作为某个错误的回应,HM 能重启或停止一个分区、多个分区或整个集成模块。

分区调度

分区调度是时间确定的。根据配置数据,生成模块调度计划表,模块调度计划表指定各个分区的时间窗。模块调度计划表是强制执行的。每个分区在其自己的时间窗内被调度。

一个分区时间窗是提供给一个分区不能被打断的执行时间段,在分区调度中,其一个分区时间窗具备如下属性:

  • Time Window Duration:时间窗口持续时间。分区时间窗口中的分区执行时间。
  • Time Window Offset:时间窗口偏移。启动模块调度表和本时间窗口起始处的时间间隔。
  • Periodic Processing Start:周期性进程开始标志。表示周期性进程可以在本时间窗口起始处获取释放点(Release Point)。

下图显示了某个分区的在调度计划表中的 4 个分区时间窗。在这个例子中,分区的周期是主帧时间的一半(例如,如果主帧是 100 毫秒,分区的周期就是 50 毫秒)。与此分区相关联的周期性进程将被安排在从 TW1 或 TW3 的开头定义的偏移量处释放,而不是在从 TW2 或 TW4 的开头定义的偏移量处释放。

在 Matrix653 系统中,调度表对于特定的分区配置是固定的。调度表和分区时间窗有如下特性:

  • 从应用开发者角度来看,调度单位是分区;
  • 调度表应满足分区的周期,持续时间,分配的 CPU 核等属性;
  • 调度表分配给一个分区的时间是固定的(分区没有优先级);
  • 分配给分区的时间被划分为一个或多个分区时间窗;
  • 在分区周期内,所有分区时间窗持续时间相加等于(或者大于)分区持续时间;
  • 对于调度表,一个分区可以被分配于若干个 CPU 核;
  • 分区只在其分区时间窗内执行,且只使用分配给它的 CPU 核。

注: 核心模块提供的 CPU 核数可能多于分配给分区的最大核数,在分区时间窗内,只有被分配的核可用。支持的核数限制了分配给任意分区的最大核数。为了增加可移植性,一些分区可能对被设计成符合多种 CPU 核数的配置(比如,四核,双核,单核)。当一个分区被分配了一个处理器核(例如单核处理器)时,操作系统选择分区内处于就绪状态的当前优先级最高的进程来获得处理器资源。

  • 在分区时间窗结束处,分区被挂起;
  • 在分区的下个时间窗开始处,分区被恢复执行;
  • 分区内部的进程按照优先级抢占的方式调度,且要考虑核心关联性;
  • 在每个分区时间窗内,分区独占分配给它的CPU核;
  • 在每个分区时间窗内,分区独占分配给它的资源(例如内存),为了符合分区鲁棒性;
  • 每个分区至少有一个分区时间窗配置为周期进程起始释放点;
  • 分区不控制资源申请。只有平台硬件和内核软件根据配置表控制每个分区的资源申请。
文档内容是否对您有所帮助?
有帮助
没帮助