多核控制系统的模拟调度器
概述
功能组件 包括两个闭环系统。 每个都有一个比例控制器来操作设备。 建筑组件 包括对该控制系统的任务和调度程序进行建模的SimEvents块。
建模任务和调度器
身份证件: 任务的唯一标识符。 期间: 为执行而实例化任务的频率。 优先: 任务的优先级(值越小表示优先级越高)。 可运行段(功能)列表: 与任务的每个段关联的可执行文件。 这些可执行文件由导出功能模型的Simulink函数表示。 段执行持续时间: 如果任务段在处理器上执行而没有中断,则任务段完成的时间。 每个段需要磁盘i/o资源: 任务的某个段是否需要使用互斥保护的共享资源(硬盘)。
任务创建: 块任务1和任务2创建任务并管理任务状态。 SimEvents实体表示任务的实例。 任务的属性(如优先级)被建模为实体属性。 任务队列: 实例化后,任务加入就绪任务队列,该队列由实体队列块OS任务队列建模。 为了模拟基于非抢占优先级的调度策略,将队列块配置为按taskPriority属性对任务进行排序。 中央处理器: 系统的处理器被建模为实体服务器块CPU。 它接受来自OS任务队列的实体,并在任务指定的持续时间内处理该实体 段执行持续时间 参数。 在该延迟结束时,调用该任务段的相应Simulink函数,作为块的服务完成操作的一部分。 锁定/解锁Mutex: 在任务段进入块CPU之前,它必须在前面的锁互斥块中获取所需的资源。 任务段完成并退出块CPU后,在解锁互斥块释放资源。 管理任务状态: 任务1和任务2掩码下的块管理任务的运行时状态。 任务段完成后,如果任务有后续段要执行,则任务将被路由回操作系统任务队列。 否则,此任务实例将被完成并丢弃。
结果和显示
优先级较高的任务Task2(红色条)被调度到核心1(y=1)。 优先级较低的任务Task1(蓝色条)计划为核心2(y=2)。 任务2的第二段使用互斥DiskLock。 绿色条表示用法(y=3)。
探索模型
在块CPU中,配置参数Capacity以更改内核数。 在任务1和任务2中,配置周期和优先级等参数以更改任务规范。
这两个任务都有使用互斥DiskLock的段,如绿色条(y=3)所示。 Task1的第三个段现在必须与Task2的第二个段以串行方式执行(请参见y=1),因为这两个段共享互斥DiskLock。