图3 中断实时响应分析
虚拟操作系统应用中常会有以下3类事件的实时响应需要考虑:
0类事件--底层硬件中断需要得到上层某个Domain的快速响应处理;
1类事件--Domain(GuestOS)之间的通信事件需要被另一个Doamin快速处理;
2 类事件--Domain(GuetOS)中的任务空闲时,主动放弃CPU,通知Domain调度器使其他Domain(GuestOS)得到运行机会。
这些事件的实时性响应时间分析和中断响应类似。
在本方法中,如图4所示,上述的3类事件都以设置触发事件的形式驱动Domain调度器,Domain调度器可以根据这些事件组合、当前的GuestOS状态组合、当前的Domain调度状态来产生调度决策。
2.3 方法实施
2.3.1 事件定义
本方法具体实现时,根据实时系统的具体应用情况,首先定义出紧急/重要事件(需要引发调度才能满足实时响应要求的事件),并按照2.2节所述的3类实时事件划分,对其分类并设计优先级排序。0类事件优先级最高,1类事件优先级居中,2类事件优先级最低,每类事件自身也按照优先级排序。
2.3.2 状态定义
然后,根据系统设计和运行情况列出Domain状态组合、GuestOS状态组合,如表1、表2所列。最后,根据系统运行要求,设计出驱动事件调度查询表,如表3所列。
表1给出了GuestOS运行状态组合,表示每个guestOS中的任务运行情况。每个GuestOS可以处于Run或Idle两个状态,多个GuestOS的状态组合起来(本文用2个GuestOS说明),就可以制作出GuestOS的状态组合表。
表1 GuestOS状态组合