进程间通信的方法、装置以及计算机设备制造方法及图纸

技术编号:26596911 阅读:21 留言:0更新日期:2020-12-04 21:18
本申请提供一种进程间通信的方法、实现该方法相关的装置、计算机设备等。该方法可以应用于智能终端、自动驾驶等设备。该方法主要包括:运行在硬件层或高级别软件层的通信引擎提供上下文切换指令,当运行在用户态的调用者调用被调用者时,通过调用所述上下文切换指令直接实现上下文切换,不需要陷入内核,从而一定程度上避免了内核对上下文切换的干预,缩短了进程间通信IPC的执行时间。

【技术实现步骤摘要】
进程间通信的方法、装置以及计算机设备
本申请涉及计算机技术,尤其涉及一种进程间通信的方法、装置以及计算机设备等。
技术介绍
基于微内核的操作系统架构(简称微内核架构)被广泛使用在云平台、嵌入式设备、移动设备、无人驾驶等场景中。微内核架构将自己真正的核心功能减少到非常少,将传统的操作系统内核(例如宏内核架构Linux)中的众多的组件,比如文件系统和网络协议栈等都放在用户态的进程中运行。相比传统的操作系统内核,微内核架构能够保证任何承担复杂功能的模块都可以被放在用户态的进程中,并能够使不同的进程隔离运行。这种方式能够极大增强操作系统的隔离性和可靠性。比如,文件系统在微内核架构中仅仅是一个应用程序,当一个恶意的应用程序攻击了一个文件系统后,只有这个文件系统能够访问的文件可能被恶意应用程序访问到,而其它的文件系统以及其它的系统组件(比如内存管理组件)仍然是处于被保护的状态。此外,如果是某个文件系统触发了内部的漏洞导致文件系统崩溃,也只会影响到这个文件系统本身,而不会影响到整个操作系统的正确性。并且管理员可以很容易地重新启动一个文件系统来继续提供服务。这也提供了相比传统的操作系统内核更加好的可靠性。然而,微内核架构也带来了巨大的性能损失。微内核架构下,一个应用程序获取系统服务的时候,需要通过进程间通信(Inter-ProcessCommunication,IPC)的方式。例如:如图1所示,在宏内核架构中,作为被调用者(callee)的文件系统部署在内核态,当一个调用者(caller)即数据库应用程序需要与文件系统进行通信时,仅需要一次系统调用即可;而在微内核架构下,由于数据库应用和文件系统均部署在用户态,所以数据库应用需要通过IPC和文件系统进行通信。IPC的性能开销来源于多个方面,其中比较关键的是上下文切换(本申请有时简称为“切换”)开销。宏内核架构下,应用程序和系统服务(比如文件系统)之间的交互通过系统调用实现,而系统调用是硬件直接支持的操作,这使得单个的系统调用非常高效。而微内核架构下,上下文切换的特权指令,如切换页表等只能由内核态完成,而调用者和被调用者都在用户态运行,所以它们必须陷入(trap)到内核态去执行切换,内核的介入导致通信开销相对于宏内核大大提高。针对微内核架构中IPC通信开销大的问题,现有技术提出一种方案:进程直接切换(DirectProcessSwitch)。这种方案仍然需要内核进行IPC处理,只是将IPC的处理逻辑进行最简化,只包含必要的阶段。在这种方案的应用下,在执行IPC调用时,内核跳过其它阶段直接切换到对应的上下文中,因此使得IPC通信得到一定程度的加速。但是该方案仍然需要内核干预来完成上下文切换,上下文切换的开销依然较大,导致IPC的通信的时长仍然较长。
技术实现思路
本申请提供一种进程间通信的方法,并提供实现该方法的装置、计算机程序产品(例如操作系统)、存储介质以及计算机设备等,用以缩短IPC的通信时长。下面将从多个方面介绍本申请,容易理解的是,该以下多个方面可以单独实施,也可以选择其中任意两个或更多联合实施。该以下多个方面的具体实现方式和有益效果可互相参考。第一方面,本申请提供一种进程间通信的方法,该方法应用于计算机设备,该计算机设备包括硬件层以及运行在所述硬件层上的操作系统。该操作系统可以是基于微内核架构的系统,也可以是基于宏内核架构的系统。所述操作系统上运行有待通信的调用者和被调用者。所述计算机设备还包括通信引擎,该通信引擎在实施例中被称为XPC引擎,用于实现进程间的通信。该通信引擎可以设置在硬件层的处理器上,也可以作为独立的硬件装置。该通信引擎还可以用软件模拟实现。该方法包括:所述调用者调用第一指令(例如xcall),所述第一指令由所述通信引擎执行以实现从所述调用者的上下文直接切换到所述被调用者的上下文。进一步的,所述被调用者调用第二指令(例如xret),所述第二指令由所述通信引擎执行以实现从所述被调用者的上下文直接切换到所述调用者的上下文。第一指令和第二指令可以不同时实现。调用者和被调用者可以是线程(或进程),线程(或进程)的上下文是操作系统中维护的该线程的各种状态,通常包括线程使用的通用寄存器、页表、线程私有空间、线程元数据等部分。由于上下文的定义和使用在不同的计算机系统中可能有所不同,所以以上举例的上下文内容不应该作为限制本申请方案的基础。另外,本申请中提到的上下文可以指全部的上下文,也可以指部分上下文。调用者和被调用者在其他一些实施例中也可以理解为应用。当所述操作系统是微内核架构的时候,所述调用者和所述被调用者通常运行在用户态。在传统IPC通信中,所述调用者和所述被调用者需要内核的参与才能完成上下文的切换,这就带来了用户态和内核态的切换等开销,从而导致通信时长较长。通过引入以上通信引擎,所述调用者和所述被调用者通过调用第一指令和第二指令就可以实现直接的上下文的切换,一定程度上避免了内核的干预,从而缩短了IPC的通信时长。类似的,该方法运行在宏内核架构下也能带来通信速度的提升。在一些实现方式中,所述通信引擎在执行所述第一指令时还包括:获取所述调用者的能力信息,所述能力信息用于指示所述调用者是否有权限调用所述被调用者;当根据所述能力信息确定所述调用者有权限调用所述被调用者时,根据所述第一指令中的被调用者标识确定所述被调用者的上下文;保存所述调用者的上下文;切换到所述被调用者的上下文。传统的IPC中,能力检查是内核来执行的,本申请将能力检查也放到通信引擎中来做,进一步减少了内核的干预,从而进一步缩短了IPC的通信时长。在一些实现方式中,所述通信引擎在执行所述第一指令时还包括以下检测中的一项或多项:检测所述被调用者标识是否合法、检测所述被调用者是否合法、或检测所述保存所述调用者的上下文的保存空间是否足够。当以上任意一个检测出现不合法或空间不足够时,触发异常,该异常提交给内核,由内核进行处理。合法性等检测的加入,以及内核处理异常的使能,使得本申请提供的通信引擎更加安全和可靠。在一些实现方式中,所述方法还包括:保存所述调用者的上下文,所述上下文为所述调用者的部分上下文。需要说明的是,本申请中提到的保存上下文可以指保存全部上下文,也可以指保存部分上下文,根据系统需求确定。部分上下文即系统需要的关键的、核心的上下文信息,这样保存可减少保存量,从而减小存储空间占用,同时进一步缩短IPC的通信时长。在一些实现方式中,当所述通信引擎用硬件实现的时候,访问能力信息、保存上下文信息等操作可以通过访问寄存器实现,寄存器中存储有对应的信息的存储地址,用于指示这些信息的位置。在一些实现方式中,所述方法还包括:所述调用者申请内存区域,并将所述内存区域的地址设置在所述通信引擎包含的寄存器中;所述调用者将待传输给所述被调用者的数据存储在所述内存区域中,所述被调用者用于通过所述寄存器中存储的地址来访问所述内存区域以获得所述数据。调用者申请一段内存区域,并将该内存区域的地址信息记载在寄存器(seg-reg)中,然后被调用者就可以通过访本文档来自技高网
...

【技术保护点】
1.一种进程间通信的方法,其特征在于,所述方法应用于计算机设备,所述计算机设备包括硬件层以及运行在所述硬件层上的操作系统,所述操作系统上运行有待通信的调用者和被调用者,所述计算机设备还包括通信引擎;所述方法包括:/n所述调用者调用第一指令,所述第一指令由所述通信引擎执行以实现从所述调用者的上下文到所述被调用者的上下文的切换;或者/n所述被调用者调用第二指令,所述第二指令由所述通信引擎执行以实现从所述被调用者的上下文到所述调用者的上下文的切换。/n

【技术特征摘要】
20190603 CN 20191047812581.一种进程间通信的方法,其特征在于,所述方法应用于计算机设备,所述计算机设备包括硬件层以及运行在所述硬件层上的操作系统,所述操作系统上运行有待通信的调用者和被调用者,所述计算机设备还包括通信引擎;所述方法包括:
所述调用者调用第一指令,所述第一指令由所述通信引擎执行以实现从所述调用者的上下文到所述被调用者的上下文的切换;或者
所述被调用者调用第二指令,所述第二指令由所述通信引擎执行以实现从所述被调用者的上下文到所述调用者的上下文的切换。


2.根据权利要求1所述的方法,其特征在于,所述通信引擎执行所述第一指令实现上下文切换的过程包括:
根据所述第一指令中的被调用者标识确定所述被调用者的上下文;
保存所述调用者的上下文;
切换到所述被调用者的上下文。


3.根据权利要求2所述的方法,其特征在于,所述通信引擎在执行所述第一指令时还包括:
获取所述调用者的能力信息,所述能力信息用于指示所述调用者是否有权限调用所述被调用者;
当根据所述能力信息确定所述调用者有权限调用所述被调用者时,执行所述上下文切换的过程。


4.根据权利要求1-3任意一项所述的方法,其特征在于,在所述调用者调用第一指令之前,所述方法还包括:保存所述调用者的上下文,所述上下文为所述调用者的部分上下文。


5.根据权利要求2-4任意一项所述的方法,其特征在于,所述通信引擎执行所述第二指令实现上下文切换的过程包括:
读取保存的所述调用者的上下文,并切换到所述调用者的上下文。


6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
所述调用者申请内存区域,并将所述内存区域的地址设置在所述通信引擎包含的寄存器中;
所述调用者将待传输给所述被调用者的数据存储在所述内存区域中,所述被调用者用于通过所述寄存器中存储的地址来访问所述内存区域以获得所述数据。


7.一种实现进程间通信的方法,其特征在于,所述方法包括:
接收调用者发送的第一指令,所述第一指令中包含被调用者的标识;
根据所述被调用者标识在第一寄存器指示的服务集合中确定所述被调用者的上下文,所述第一寄存器用于存储所述服务集合的内存地址,所述服务集合包括一个或多个被调用者的上下文信息;
将所述调用者的上下文保存在第二寄存器指示的返回信息集合中,所述第二寄存器用于存储所述返回信息集合的内存地址,所述返回信息集合包括一个或多个调用者的上下文信息;
切换到所述被调用者的上下文。


8.根据权利要求7所述的方法,其特征在于,在所述根据所述被调用者标识在第一寄存器指示的服务集合中确定所述被调用者的上下文之前,所述方法还包括:
根据第三寄存器指示的能力信息确定所述调用者有权限调用所述被调用者,所述第三寄存器用于存储所述能力信息的地址,所述能力信息用于指示所述调用者是否有权限调用所述被调用者。


9.根据权利要求7或8所述的方法,其特征在于,还包括:
将以下信息中的任意一项或两项预取到缓存中:所述服务集合中包括的一个或多个被调用者的上下文信息、或所述能力信息。


10.根据权利要求7-9任意一项所述的方法,其特征在于,采用异步的方式执行以下步骤:将所述调用者的上下文保存在第二寄存器指示的返回信息集合中。


11.根据权利要求7-10任意一项所述的方法,其特征在于,所述被调用者的上下文的确定步骤或所述调用者的上下文的保存步骤采用被标记的转换检测缓冲区TLB实现。


12.根据权利要求7-11任意一项所述的方法,其特征在于,所述方法还包括:
将第四寄存器指示的内存区域的访问权限赋予所述被调用者,其中,所述第四寄存器用于存储所述内存区域的地址信息,所述内存区域是所述调用者申请的,所述内存区域用于存储所述调用者待传输给所述被调用者的数据。


13.根据权利要求7-11任意一项所述的方法,其特征在于,所述方法还包括:
将第四寄存器和第五寄存器指示的第二内存区域的访问权限赋予所述被调用者,其中所述第四寄存器用于存储第一内存区域的地址信息,所述第五寄存器则存储有用于缩小所述第一内存区域的信息,所述第二内存区域为缩小后的第一内存区域。


14.根据权利要求7-13任意一项所述的方法,其特征在于,所述方法还包括:
接收所述被调用者发送的第二指令,所述第二指令用于指示返回所述调用者的上下文;
从所述第二寄存器指示的所述返回信息集合中获取所述调用者的上下文;
切换到所述调用者的上下文。


15.根据权利要求7-14任意一项所述的方法,其特征在于,保存的所述调用者的上下文为选择的所述调用者的部分上下文。


16.一种内存管理方法,...

【专利技术属性】
技术研发人员:杜东陈海波夏虞斌
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1