1. 如何理解existing process?

在ARINC653的中多次出现existing process,但没有明确的定义。 从existing process的上下文来看,它可能是:

  • 已经create但尚未start的进程
  • 已经start但分区mode尚未是normal的进程
  • 分区mode是normal以后的进程

ARINC653的规定以下服务需判断是否为existing process:

  • GET_PROCESS_STATUS
  • SET_PRIORITY
  • SUSPEND
  • RESUME
  • STOP
  • START
  • DELAYED_START

根据START和DELAYED_START的定义,此时的existing process只能是已经create但尚未start的进程。但是SUSPEND、RESUME、STOP这些服务,只能用于分区mode是normal以后的进程才有效。

2. replenish不一定延长deadline

ARINC653标准文本中的Figure 2.3.3显示的情况是使用Replenish请求后第2个deadline在第1个deadline之后。 但是,如果较早发出Replenish,并且其budget时间较小,那么第2个deadline仍在第1个deadline之前。 此时,是否需要丢弃第2个deadline,并返回NO_ACTION?

3. suspend_self疑问

按照ARINC653的的描述,TIME_OUT=0时不做任何处理,但返回NO_ERROR。 如果不做处理,为何不返回NO_ACTION? 为何TIME_OUT=0时不能执行suspend_self?

4. wait_semaphore疑问

在ARINC653标准文本中:

elsif (TIME_OUT = 0) then
RETURN_CODE := NOT_AVAILABLE;

应改为:

elsif (TIME_OUT = 0) and (Current value = 0) then
RETURN_CODE := NOT_AVAILABLE;