发明名称 Windows下的机载操作系统分区通信方法
摘要 本发明公开了一种Windows下的机载操作系统分区通信方法,用于解决现有分区通信方法实时性差的技术问题。技术方案是搭建ARINC653规范的综合模块化航空电子软件仿真与验证平台。在虚拟ARINC653操作系统上,通过使用共享内存,实现了大数据量的高效通信,并通过黑板、缓存、采样和队列的机制,完成了ARINC653的通信功能要求。同时对系统调用接口的设计,屏蔽了底层的物理实现,结合真实环境的系统架构设计。经测试,本发明Windows下的机载操作系统分区通信方法实时性好。
申请公布号 CN105117279A 申请公布日期 2015.12.02
申请号 CN201510454042.7 申请日期 2015.07.29
申请人 西北工业大学 发明人 蒋泽军;杜承烈;彭寒;王骥远;高海涛;马文宁;胡鹏;李晓龙
分类号 G06F9/48(2006.01)I;G06F9/54(2006.01)I;G06F9/455(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种Windows下的机载操作系统分区通信方法,其特征在于包括以下步骤:步骤一、加载XML配置文件,将XML解析出来,读取通信文件配置信息;由配置文件能够知道一个应用的所有通信信息,包括分区间通信和分区间通信,分区间通信中有采样端口号和队列端口号以及分区名,分区内通信则包括其黑板和缓存队列的首地址;步骤二、如果为分区应用要进行分区间通信,则需要得到目的地的分区号以及端口号,如果分区应用要进行分区内通信,则需要得到缓存号和黑板号;步骤三、若从采样端口发送消息,则判断该端口的采样队列是否为空,若为空则申请一个内存空间保存信息,挂在采样端口上,若不为空,则擦去采样端口的中的信息,改写为最新的信息;若从采样端口接受消息,如果没有消息,则挂起,如果有消息则直接找到对应的端口,读取消息即可;若从队列端口发送消息,则申请一块空闲的内存空间,保存信息,挂在队列端口的列表上;若从队列端口读取一条消息,若果队列为空,则需要挂起应用,则需要读取首个消息,并且释放这条消息,从队列中删除;如果向黑板中写消息,则擦去黑板上现有的信息,写入最新的数据;若果从黑板中读消息,如果黑板为空,则挂起,如果有消息,则直接读取;如果向缓存中写消息,则需要申请一块新的内存将其挂在缓存队列上;如果为从缓存中读消息,如果队列为空,则挂起,如果不为空,则获取队列首地址的消息,并删除此消息,释放掉空间;Windows具有良好的集成开发环境及大量完善的编程接口,利用系统现有的进程、线程模拟ARINC653中的分区与进程;Windows下的进程通信机制包括文件、管道、共享内存等;为了满足ARINC653规范,实现分区通信的实时性要求,以Windows驱动的加载方式利用系统线程操作接口以及线程亲缘性实现了在Windows操作系统环境下分区通信操作,同时由于共享内存机制可以进行大量数据的高效通信,同时对通信层屏蔽物理层通信的具体实现,综合出于ARINC653的系统架构设计方面的考虑,最终使用Windows提供的共享内存机制完成分区通信;虚拟ARINC653操作系统的分区间通信分为分区间通信与分区内通信两块,分区间通信由操作系统实现,ARINC653规定了一种基于通道通信的信息交换和同步机制,定义了系统调用的通用接口层APEX,源分区应用程序调用APEX函数将数据发送到端口,端口按照端口通信协议将数据发送到通道,然后通过硬件接口发送到目的分区的硬件接口,在目的分区,数据逐层向上最后到达应用程序;如此完成了应用程序之间的相互通信;消息的传输分为采样模式Sampling Mode和队列模式Queuing Mode两种模式,在采样模式下,到达端口的新消息直接覆盖端口中的旧消息,在端口中存放的总是最新的实时消息,保证了数据的时效性;因而采样模式端口用于传输实时采样数据;在队列模式下,新消息不能覆盖先前的消息,消息到达端口时总是排队存放,因此消息是不会丢失的,保证了数据的可靠性;因而队列模式端口用于传输可靠的数据,保证数据的完整性;分区结构体中包含两个分别指向采样端口表和队列端口表的指针*SamplingPort和*QueuingPort;采样端口表和队列端口表的本质分别为采样结构体与队列结构体的数组,分别存放各采样端口和队列端口的信息;分区内通信同样又操作系统实现,消息的传输分为黑板Blackboard和缓存Buffer两种模式,在黑板模式下,任何留在黑板上的消息都会被清除或被新消息覆盖,允许发送进程在任何时候写消息,相应地接收进程可以在任何时候接收最新的消息;进程以每个新的消息能够携带不同的数据,新消息不会覆盖前面的消息;采用消息队列缓存机制,保存多个消息,由发送进程所要发送的消息存放在先进先出队列中;在这样的队列模式中,消息不会丢失;当一个进程试图向一个满缓存中发送消息或从一个空缓存中接收消息时,就会发生进程的重调度,该进程将会在指定的时间长度内排队等待,直至满足特定条件或指定的时间结束;两者均以链表形式存放于共享内存中,分区结构体中维护*Buffer和*Blackboard指针;同时由于ARINC653规范的要求,ARINC653操作系统是基于静态配置表的操作系统,在配置表中定义了基本的系统资源需求及相关系统配置,操作系统在启动过程中根据配置表中的相关定义完成系统的初始化;配置表是操作系统访问的静态数据区域,不能由应用程序直接访问,但配置表不是操作系统的组成部分,不依赖于ARINC653操作系统的具体实现。
地址 710072 陕西省西安市友谊西路127号