本文主要是介绍关于ARINC653的疑问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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;
这篇关于关于ARINC653的疑问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!