一种嵌入式分区操作系统分区间通信的实现方法技术方案

技术编号:21224433 阅读:30 留言:0更新日期:2019-05-29 05:11
本发明专利技术提供了一种嵌入式分区操作系统分区间通信的实现方法,基于无锁的环形通道缓存,借助条件编译配置分区通信,配置使用用户通道缓存时,通道缓存在用户分区空间中定义,任务若要构造发送消息,不需要切换内核态就能对用户分区空间中的通道缓存操作,省去了用户分区空间向通道缓存的一次拷贝。本发明专利技术采用基于环形队列的通道缓冲,不依赖硬件就能实现一个写者/至少一个读者的无锁通信、或在支持CAS操作的硬件平台上实现多个写者/多个读者的无锁通信,改善了操作系统实时性能与安全性,优化了操作系统验证与测试的开销,同时还提供两个内存优化的条件编译配置选项,启用后比传统实现方式降低两次拷贝,大大降低了通信的空间开销。

An Implementation Method of Inter-partition Communication in Embedded Partition Operating System

The invention provides an implementation method of inter-partition communication in embedded partition operating system. Based on unlocked ring channel cache, partition communication is configured by conditional compilation. When user channel cache is configured and used, channel cache is defined in user partition space. To construct sending message, task can operate channel cache in user partition space without switching the kernel state. A copy of the user partition space caching to the channel is omitted. The invention adopts channel buffer based on circular queue, realizes lock-free communication of one writer/at least one reader without hardware, or realizes lock-free communication of multiple writers/readers on hardware platform supporting CAS operation, improves real-time performance and security of operating system, optimizes the cost of verification and testing of operating system, and also provides two memory optimization. Conditional compilation configuration option can reduce two copies compared with traditional implementation, greatly reducing the space overhead of communication.

【技术实现步骤摘要】
一种嵌入式分区操作系统分区间通信的实现方法
本专利技术涉及嵌入式操作领域,尤其是一种符合ARINC-653标准的分区间通信的实现方法。
技术介绍
符合ARINC-653标准的分区间通信不同于传统的进程间通信,分区间主要依赖通道和端口的通讯机制,由操作系统负责管理接收和发送消息。通道是分区对分区的一个映射。通道与端口在系统配置时就被定义,所有的分区通信由经由通道和端口的消息来传递。传统的通道-端口实现需要在操作系统对通道缓存读写时加锁或进入临界区以保证不会出现并发安全问题,然而使用锁或临界区会对操作系统实时性能造成影响,且使用锁还有产生死锁的安全隐患,这对于安全性要求极高的嵌入式分区操作系统是不可接受的,同时也给嵌入式分区操作系统的验证与测试工作带来不便。文献“一种基于嵌入式操作系统的分区通信方法及装置,CN201710867206.8”提出了一种基于嵌入式操作系统的分区通信方法及装置,嵌入式操作系统读取分区中待发布的消息内容并存储在本地,进而在确定分区需订阅消息时,将本地存储的消息内容写入分区的存储空间中。该专利提出的通信过程中写入和读出会有两次拷贝,这对于内存稀缺的嵌入式微控制器平台是十分昂贵的空间开销,且两次拷贝的通信时间开销也较大。
技术实现思路
为了克服现有技术的不足,针对传统通道-端口通信机制的有锁或有临界区实现和文献“一种基于嵌入式操作系统的分区通信方法及装置”提出的方法内存开销较大,通信效率低的缺点,本专利技术提出了一种无锁、可配置的分区通信的实现方法,基于无锁的环形通道缓存,借助条件编译配置分区通信。配置项主要包括是否采用用户通道缓存、是否采用内存映射机制优化通信。本专利技术解决其技术问题所采用的技术方案包括以下步骤:步骤一、配置分区间通信机制用户根据需要,通过条件编译声明的方式配置分区通信,配置项依次是用户空间的通道缓存配置项与采用内存映射机制的优化配置项;若用户将操作系统应用在安全关键领域,就必须严格遵循标准,不能使用用户空间通道缓存与内存映射机制;若用户将操作系统应用在非安全关键领域,则用户空间通道缓存配置项与内存映射优化配置项根据用户需求而定,若用户需求强调可靠性,选择关闭用户空间的通道缓存配置项与采用内存映射机制的优化配置项,启用后通信消息有两次复制;若用户需求可靠性与性能兼顾,则选择开启内存映射优化配置项,启用后通信消息只有从用户空间到系统空间的一次复制;若用户需求强调性能,则选择开启内存映射优化与用户空间通道缓存配置项,启用后通信消息存储在用户空间,不需要复制;其中用户空间的通道缓存配置项只有两个选择:Enable或False,即启用和关闭;其中采用内存映射机制的优化配置项有两个选择:Enable或False,即启用通道内存直接映射机制和关闭,只有在启用用户空间的通道缓存时,才可启用该项优化,且该项优化依赖硬件的内存管理单元,即要求MMU的支持,若硬件不支持MMU,则该配置项只能选择False;用户完成条件配置后,进入步骤二;步骤二、配置用户通道缓存若步骤一中用户配置不使用用户通道缓存,即用户通道缓存配置项为False时,直接跳转到步骤三;否则在本步骤中,用户应在用户分区空间中定义通道缓存,通道缓存CHBUFF由若干个数据块构成一组连续空间,每个数据块包含固定长度的数据;应用程序通过操作系统提供的系统调用函数,调用操作系统提供的端口操作函数从通道缓存中读写数据,通道缓存长度由用户在步骤五所描述的通道的Manifest文件中定义,位于操作系统内核分区空间中;若在用户分区空间定义通道缓存则分区拥有对通道缓存直接读写的权限,分区内的任务若要构造发送消息,无需切换内核态就能操作通道缓存,省去了用户分区空间向操作系统分区空间的通道缓存的一次拷贝和从用户态到内核态以及从内核态返回用户态两次内核态切换;步骤三、配置内存映射机制若步骤一中用户配置不使用内存映射机制优化,即内存映射机制配置项为False时,直接跳转到步骤四,否则在本步骤中,内存映射机制配置项会修改操作系统发送消息的动作,操作系统不再执行从发送分区用户空间的通道缓存到接收分区用户空间的拷贝,而是利用MMU机制将发送分区的通道缓存直接映射到接收分区的用户空间中,由接收分区直接读取;接收分区对内存映射的通道缓存只有读取权限,没有写入的权限,因而没有破坏分区的内存隔离,该方式省去了从发送分区的通道缓存到接收分区的一次拷贝;步骤四、通道静态配置通道为一个由数据块以及通道描述符组成的结构体,由用户的Manifest文件静态配置,一个通道的Manifest文件描述ARINC-653标准规定的通道标识符、通道的发送分区标识符、通道的接收分区标识符、数据块大小和数据块数量;嵌入式分区操作系统与应用程序编译前读取Manifest中的通道描述信息,依据该描述信息在内核所在的系统分区静态分配对应的通道结构;当用户配置完成,向操作系统请求分区通信服务时,进入步骤五;步骤五、发送分区向操作系统申请端口若步骤一中用户配置使用用户通道缓存,则首先通过系统调用函数向操作系统注册通道缓存空间,传入通道缓存结构体指针,该系统调用函数执行结束后返回一个唯一的通道标识符,否则,用户向操作系统申请使用静态配置的通道;发送分区向操作系统申请分配端口,需要传入的参数包括:发送分区标识符与接收分区标识符以及使用的通道标识符,分区标识符为嵌入式分区操作系统分配给分区的唯一标识符,用户分区可通过系统调用函数向操作系统请求获得该分区的分区标识符;通道标识符为嵌入式分区操作系统分配给通道的唯一标识符,由用户分区通过系统调用函数向操作系统请求获得;嵌入式分区操作系统的端口是通道的操作者,提供通道操作,包括读、写、清空通道、申请端口和释放端口;端口有两种工作方式:采样方式与队列方式;采样方式新消息总会覆盖旧消息,用户端口读到的消息总是为最新的,队列方式新消息会插入到队列末尾,消息以先入先出的顺序依次被用户端口读取;采样方式支持一个写者/多个读者的无锁通信,队列方式支持一个写者/一个读者的无锁通信,用户发送分区向操作系统申请端口时,操作系统首先查找空闲端口队列首端是否有端口,若有,则初始化该端口并返回给发送分区,否则发送分区申请端口失败;若端口初始化成功,进入步骤六,否则结束;步骤六、发送分区通过端口写入消息若步骤一中用户配置使用用户通道缓存,发送分区使用端口直接操作本地的通道缓存就能完成消息的写入,否则发送分区将通过端口的系统调用函数向通道缓存写入消息;端口中定义了一个写指针和读指针,以环形队列的方式读写通道缓存,每当写完一个数据块,端口的写指针向队列末端移动,当端口的写指针向环形队列尾端推进遇到读指针时,即通道缓存已满,写入失败;在写入消息的过程中,若步骤一中用户配置使用用户通道缓存,发送分区直接操作本地的通道缓存就能完成消息的写入,不需要再经过一次从发送分区到操作系统分区通道缓存的拷贝;若步骤一中用户配置不使用用户通道缓存,则发送分区将通过端口的系统调用函数向通道缓存写入消息;端口的采样方式每次写入数据都会从通道缓存的起始位置0开始,逐步向环形队列通道缓存的末端推进,直到写入完成或者写指针回到起始位置,端口的队列方式每次写入数据从写指针位置,逐步向环形队列通道末端推进,直到写入完成本文档来自技高网...

【技术保护点】
1.一种嵌入式分区操作系统分区间通信的实现方法,其特征在于包括下述步骤:步骤一、配置分区间通信机制用户根据需要,通过条件编译声明的方式配置分区通信,配置项依次是用户空间的通道缓存配置项与采用内存映射机制的优化配置项;若用户将操作系统应用在安全关键领域,就必须严格遵循标准,不能使用用户空间通道缓存与内存映射机制;若用户将操作系统应用在非安全关键领域,则用户空间通道缓存配置项与内存映射优化配置项根据用户需求而定,若用户需求强调可靠性,选择关闭用户空间的通道缓存配置项与采用内存映射机制的优化配置项,启用后通信消息有两次复制;若用户需求可靠性与性能兼顾,则选择开启内存映射优化配置项,启用后通信消息只有从用户空间到系统空间的一次复制;若用户需求强调性能,则选择开启内存映射优化与用户空间通道缓存配置项,启用后通信消息存储在用户空间,不需要复制;其中用户空间的通道缓存配置项只有两个选择:Enable或False,即启用和关闭;其中采用内存映射机制的优化配置项有两个选择:Enable或False,即启用通道内存直接映射机制和关闭,只有在启用用户空间的通道缓存时,才可启用该项优化,且该项优化依赖硬件的内存管理单元,即要求MMU的支持,若硬件不支持MMU,则该配置项只能选择False;用户完成条件配置后,进入步骤二;步骤二、配置用户通道缓存若步骤一中用户配置不使用用户通道缓存,即用户通道缓存配置项为False时,直接跳转到步骤三;否则在本步骤中,用户应在用户分区空间中定义通道缓存,通道缓存CHBUFF由若干个数据块构成一组连续空间,每个数据块包含固定长度的数据;应用程序通过操作系统提供的系统调用函数,调用操作系统提供的端口操作函数从通道缓存中读写数据,通道缓存长度由用户在步骤五所描述的通道的Manifest文件中定义,位于操作系统内核分区空间中;若在用户分区空间定义通道缓存则分区拥有对通道缓存直接读写的权限,分区内的任务若要构造发送消息,无需切换内核态就能操作通道缓存,省去了用户分区空间向操作系统分区空间的通道缓存的一次拷贝和从用户态到内核态以及从内核态返回用户态两次内核态切换;步骤三、配置内存映射机制若步骤一中用户配置不使用内存映射机制优化,即内存映射机制配置项为False时,直接跳转到步骤四,否则在本步骤中,内存映射机制配置项会修改操作系统发送消息的动作,操作系统不再执行从发送分区用户空间的通道缓存到接收分区用户空间的拷贝,而是利用MMU机制将发送分区的通道缓存直接映射到接收分区的用户空间中,由接收分区直接读取;接收分区对内存映射的通道缓存只有读取权限,没有写入的权限,因而没有破坏分区的内存隔离,该方式省去了从发送分区的通道缓存到接收分区的一次拷贝;步骤四、通道静态配置通道为一个由数据块以及通道描述符组成的结构体,由用户的Manifest文件静态配置,一个通道的Manifest文件描述ARINC‑653标准规定的通道标识符、通道的发送分区标识符、通道的接收分区标识符、数据块大小和数据块数量;嵌入式分区操作系统与应用程序编译前读取Manifest中的通道描述信息,依据该描述信息在内核所在的系统分区静态分配对应的通道结构;当用户配置完成,向操作系统请求分区通信服务时,进入步骤五;步骤五、发送分区向操作系统申请端口若步骤一中用户配置使用用户通道缓存,则首先通过系统调用函数向操作系统注册通道缓存空间,传入通道缓存结构体指针,该系统调用函数执行结束后返回一个唯一的通道标识符,否则,用户向操作系统申请使用静态配置的通道;发送分区向操作系统申请分配端口,需要传入的参数包括:发送分区标识符与接收分区标识符以及使用的通道标识符,分区标识符为嵌入式分区操作系统分配给分区的唯一标识符,用户分区可通过系统调用函数向操作系统请求获得该分区的分区标识符;通道标识符为嵌入式分区操作系统分配给通道的唯一标识符,由用户分区通过系统调用函数向操作系统请求获得;嵌入式分区操作系统的端口是通道的操作者,提供通道操作,包括读、写、清空通道、申请端口和释放端口;端口有两种工作方式:采样方式与队列方式;采样方式新消息总会覆盖旧消息,用户端口读到的消息总是为最新的,队列方式新消息会插入到队列末尾,消息以先入先出的顺序依次被用户端口读取;采样方式支持一个写者/多个读者的无锁通信,队列方式支持一个写者/一个读者的无锁通信,用户发送分区向操作系统申请端口时,操作系统首先查找空闲端口队列首端是否有端口,若有,则初始化该端口并返回给发送分区,否则发送分区申请端口失败;若端口初始化成功,进入步骤六,否则结束;步骤六、发送分区通过端口写入消息若步骤一中用户配置使用用户通道缓存,发送分区使用端口直接操作本地的通道缓存就能完成消息的写入,否则发送分区将通过端口的系统调用函数向通道缓存写入消息;端口中定义了一...

【技术特征摘要】
1.一种嵌入式分区操作系统分区间通信的实现方法,其特征在于包括下述步骤:步骤一、配置分区间通信机制用户根据需要,通过条件编译声明的方式配置分区通信,配置项依次是用户空间的通道缓存配置项与采用内存映射机制的优化配置项;若用户将操作系统应用在安全关键领域,就必须严格遵循标准,不能使用用户空间通道缓存与内存映射机制;若用户将操作系统应用在非安全关键领域,则用户空间通道缓存配置项与内存映射优化配置项根据用户需求而定,若用户需求强调可靠性,选择关闭用户空间的通道缓存配置项与采用内存映射机制的优化配置项,启用后通信消息有两次复制;若用户需求可靠性与性能兼顾,则选择开启内存映射优化配置项,启用后通信消息只有从用户空间到系统空间的一次复制;若用户需求强调性能,则选择开启内存映射优化与用户空间通道缓存配置项,启用后通信消息存储在用户空间,不需要复制;其中用户空间的通道缓存配置项只有两个选择:Enable或False,即启用和关闭;其中采用内存映射机制的优化配置项有两个选择:Enable或False,即启用通道内存直接映射机制和关闭,只有在启用用户空间的通道缓存时,才可启用该项优化,且该项优化依赖硬件的内存管理单元,即要求MMU的支持,若硬件不支持MMU,则该配置项只能选择False;用户完成条件配置后,进入步骤二;步骤二、配置用户通道缓存若步骤一中用户配置不使用用户通道缓存,即用户通道缓存配置项为False时,直接跳转到步骤三;否则在本步骤中,用户应在用户分区空间中定义通道缓存,通道缓存CHBUFF由若干个数据块构成一组连续空间,每个数据块包含固定长度的数据;应用程序通过操作系统提供的系统调用函数,调用操作系统提供的端口操作函数从通道缓存中读写数据,通道缓存长度由用户在步骤五所描述的通道的Manifest文件中定义,位于操作系统内核分区空间中;若在用户分区空间定义通道缓存则分区拥有对通道缓存直接读写的权限,分区内的任务若要构造发送消息,无需切换内核态就能操作通道缓存,省去了用户分区空间向操作系统分区空间的通道缓存的一次拷贝和从用户态到内核态以及从内核态返回用户态两次内核态切换;步骤三、配置内存映射机制若步骤一中用户配置不使用内存映射机制优化,即内存映射机制配置项为False时,直接跳转到步骤四,否则在本步骤中,内存映射机制配置项会修改操作系统发送消息的动作,操作系统不再执行从发送分区用户空间的通道缓存到接收分区用户空间的拷贝,而是利用MMU机制将发送分区的通道缓存直接映射到接收分区的用户空间中,由接收分区直接读取;接收分区对内存映射的通道缓存只有读取权限,没有写入的权限,因而没有破坏分区的内存隔离,该方式省去了从发送分区的通道缓存到接收分区的一次拷贝;步骤四、通道静态配置通道为一个由数据块以及通道描述符组成的结构体,由用户的Manifest文件静态配置,一个通道的Manifest文件描述ARINC-653标准规定的通道标识符、通道的发送分区标识符、通道的接收分区标识符、数据块大小和数据块数量;嵌入式分区操作系统与应用程序编译前读取Manifest中的通道描述信息,依据该描述信息在内核所在的系统分区静态分配对应的通道结构;当用户配置完成,向操作系统请求分区通信服务时,进入步骤五;步骤五、发送分区向操作系统申请端口若步骤一中用户配置使用用户通道缓存,则首先通过系统调用函数向操作系统注册通道缓存空间,传入通道缓存结构体指针,该系统调用函数执行结束后返回一个唯一的通道标识符,否则,用户向操作系统申请使用静态配置的通道;发送分区向操作系统申请分配端口,需要传入的参数包括:发送分区标识符与接收分区标识符以及使用的通道标识符,分区标识符为嵌入式分区操作系统分配给分区的唯一标识符,用户分区可通过系统调用函数向操作系统请求获得该分区的分区标识符;通道标识符为嵌入式分区操作系统分配给通道的...

【专利技术属性】
技术研发人员:朱怡安欧阳湘臻史先琛
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1