一种进程间的函数调用方法及相关设备技术

技术编号:37452891 阅读:6 留言:0更新日期:2023-05-06 09:24
本申请实施例公开了一种进程间的函数调用方法,可以应用于小型嵌入式设备或物联网设备。该方法包括:第一进程通过用户态进程可读可执行的第一函数远程调用并执行第一系统服务进程的物理内存地址空间中的第二函数。通过用户态中所有进程可读可执行的第一函数,可以实现第一进程通过第一函数远程调用第一系统服务进程的物理内存地址空间中存储的第二函数,进而实现第一进程执行第二函数。相较于现有技术基于IPC调用函数的方式需要进程切换与数据拷贝,本申请实施例中第一进程调用第一系统服务进程的第二函数无需进行进程切换和数据拷贝,从机制逻辑层面提升第一系统服务进程中第二函数的调用性能。中第二函数的调用性能。中第二函数的调用性能。

【技术实现步骤摘要】
一种进程间的函数调用方法及相关设备


[0001]本申请实施例涉及计算机安全隔离
,尤其涉及一种进程间的函数调用方法及相关设备。

技术介绍

[0002]基于微内核的操作系统架构(简称微内核架构)被广泛使用在云平台、嵌入式设备、移动设备、无人驾驶等场景中。微内核架构将自己真正的核心功能减少到非常少,将传统的操作系统内核(例如宏内核架构Linux)中的众多的组件,比如系统程序等都放在用户态的进程中运行。
[0003]目前,业界操作系统架构主要分微内核架构和宏内核架构,微内核架构(QNX,seL4,fuchsia等)的特点是内核本身很小,很多系统服务功能(比如文件系统、内存管理、网络、驱动等)作为单独的服务进程(下称系统服务)放在用户态运行,内核态只保留关键的功能{比如中断处理、定时器功能、进程间通信(inter

process communication,IPC)、内存映射等}。在微内核架构中,用户进程与系统服务进程之间主要通过IPC的方式进行通信,进而实现进程之间的安全隔离。对于用户进程需要调用系统服务进程中函数的场景中,用户进程会通过IPC的方式将函数的入参数据发送给系统服务进程。该过程中会进行入参数据拷贝,通常是两次入参数据拷贝,第一次将入参数据从用户进程拷贝至内核数据段,第二次将入参数据从内核数据段拷贝至系统服务进程数据段,进而系统服务进程根据该入参数据运行函数。
[0004]然而,上述基于IPC调用函数的方式会随着传入数据量的增加使得开销增加,从而影响设备性能。

技术实现思路

[0005]本申请实施例提供了一种进程间的函数调用方法及相关设备,可以提升第一进程执行系统服务进程中函数的效率。
[0006]本申请实施例第一方面提供了一种进程间的函数调用方法,该方法可以应用于低算力的嵌入式设备或物联网(internet of things,IOT)设备等,该方法包括:第一进程基于第一函数触发第一系统调用,第一函数为用户态中所有进程可读可执行的函数,第一函数用于触发第一系统调用与调用第一系统服务进程中的第二函数,第一系统调用用于指示内核配置第一进程对第一系统服务进程的物理内存地址空间的第一访问权限,物理内存地址空间存储有第二函数,第二函数为实现第一系统服务进程功能的函数;第一进程接收内核发送的用于响应第一系统调用的指示信息,指示信息用于指示是否已开启第一访问权限;当确定指示信息用于指示已开启第一访问权限,则第一进程基于第一函数执行物理内存地址空间中的第二函数。
[0007]本申请实施例中,通过用户态中所有进程可读可执行的第一函数,可以实现第一进程通过第一函数远程调用第一系统服务进程的物理内存地址空间中存储的第二函数,进
而实现第一进程执行第二函数。相较于现有技术基于IPC调用函数的方式需要进程切换与数据拷贝,本申请实施例中第一进程调用第一系统服务进程的第二函数无需进行进程切换和数据拷贝,从机制逻辑层面提升第一系统服务进程中第二函数的调用性能。另外,限定了第一进程需通过第一函数执行第二函数,限定了第一进程执行第二函数的场景,或理解为是限定了第一进程必须在公共区(即存储所有进程都可读可执行的第一函数)中执行第二函数。减少用户无条件执行第二函数带来的安全隐患。
[0008]可选地,在第一方面的一种可能的实现方式中,上述步骤:第一函数还用于触发第二系统调用,第二系统调用用于内核取消第一访问权限;第一进程执行第二函数之后,方法还包括:第一进程基于第一函数触发第二系统调用,第二系统调用用于指示内核取消第一访问权限。
[0009]该种可能的实现方式中,线程(或者理解为任务)结束后可以取消第一访问权限,防止第一进程的其他线程随意访问物理内存地址空间,进而保证第二函数的调用安全。
[0010]可选地,在第一方面的一种可能的实现方式中,上述的第一访问权限包括:第一系统服务进程中代码段的读与执行权限与第一系统服务进程中数据段的读写权限;第一系统调用还用于触发内核配置第一进程中代码段的读与执行权限与第一进程中数据段的读写权限。换句话说,第一系统调用用于触发内核将第一系统服务进程的代码段设置为可读可执行以及将第一系统服务进程的数据段设置为可读可写(或者理解为第一系统服务进程的物理内存地址空间对于第一进程可读可执行)。另外,为了保证第二函数的调用安全性,可以将第一进程的代码段配置为不可读不可执行。
[0011]该种可能的实现方式中,第一进程通过第一系统调用获取该第一访问权限,以便于后续第一进程调用并执行第二函数。
[0012]可选地,在第一方面的一种可能的实现方式中,上述步骤:第一进程基于第一函数触发第一系统调用之前,方法还包括:第一进程获取第一任务,第一任务包括第一进程执行第二函数。该第一任务可以理解为是一个线程。该第一任务也可以理解为是基于用户操作确定的第一任务。
[0013]该种可能的实现方式中,通过用户操作确定的第一任务,并基于第一函数调用并执行第一系统服务进程的物理内存地址空间的第二函数,在执行第二函数过程中,避免数据拷贝与进程切换,进而提升执行第二函数的效率。
[0014]可选地,在第一方面的一种可能的实现方式中,上述的第一进程为用户进程或第二系统服务进程。即第一进程可以为运行用户态的应用程序对应的进程,或者第一进程为运行用户态的第二系统服务程序对应的进程,第一系统服务进程为运行用户态的第一系统服务程序对应的进程。其中,第一系统服务进程与第二系统服务进程可以是同类型的系统服务进程,或者是不同类型的系统服务进程,具体此处不做限定。
[0015]该种可能的实现方式中,该方法可以应用于用户态的进程调用系统服务进程中系统服务函数的场景。
[0016]可选地,在第一方面的一种可能的实现方式中,上述步骤:第一系统服务进程集成有用户态中的至少两个子系统服务进程,子系统服务进程为驱动进程、网络管理进程或文件系统管理进程;第二函数为至少两个子系统服务进程中一个子系统服务进程中的函数,第三函数为用户态中所有进程可读可执行的函数,第三函数用于调用为至少两个子系统服
务进程中另一个子系统服务进程中的函数;第一进程基于第一函数执行物理内存地址空间中的第二函数,包括:第一进程通过第二函数调用并执行第三函数,在第一进程未返回第一函数之前,第一访问权限不变。
[0017]该种可能的实现方式中,对于嵌套场景,即第一函数与第三函数是同一属性,该场景下,执行第三函数之后,由于还要返回至第一函数,为了避免多次的系统调用(基第一访问权限的开启、关闭、再开启与再关闭),在一个线程任务中,执行域(即执行任务所用到的物理内存地址空间)不变的情况下,访问权限可以不用改变。
[0018]可选地,在第一方面的一种可能的实现方式中,上述的方法应用于微内核架构,第一系统服务进程为驱动进程、网络管理进程或文件系统管理进程。
[0019]该种可能的实现方式中,该方法可以应用于微内核架构,第一进程可以通过第一函数调用完成驱动任务、网络管理任务,和/或本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种进程间的函数调用方法,其特征在于,所述方法应用于计算机设备,所述方法包括:第一进程基于第一函数触发第一系统调用,所述第一函数为用户态中所有进程可读可执行的函数,所述第一函数用于触发所述第一系统调用与调用第一系统服务进程中的第二函数,所述第一系统调用用于指示所述内核配置所述第一进程对所述第一系统服务进程的物理内存地址空间的第一访问权限,所述物理内存地址空间存储有所述第二函数,所述第二函数为实现所述第一系统服务进程功能的函数;所述第一进程接收所述内核发送的用于响应所述第一系统调用的指示信息,所述指示信息用于指示是否已开启所述第一访问权限;当确定所述指示信息用于指示已开启所述第一访问权限,则所述第一进程基于所述第一函数执行所述第二函数。2.根据权利要求1所述的方法,其特征在于,所述第一函数还用于触发第二系统调用,所述第二系统调用用于所述内核取消所述第一访问权限;所述第一进程执行所述第二函数之后,所述方法还包括:所述第一进程基于所述第一函数触发第二系统调用,所述第二系统调用用于指示所述内核取消所述第一访问权限。3.根据权利要求1或2所述的方法,其特征在于,所述第一访问权限包括:所述第一系统服务进程中代码段的读与执行权限与所述第一系统服务进程中数据段的读写权限;所述第一系统调用还用于触发所述内核配置所述第一进程中代码段的读与执行权限与所述第一进程中数据段的读写权限。4.根据权利要求1至3中任一所述的方法,其特征在于,所述第一进程基于第一函数触发第一系统调用之前,所述方法还包括:所述第一进程获取第一任务,所述第一任务包括所述第一进程执行所述第二函数。5.根据权利要求1至4中任一所述的方法,其特征在于,所述第一进程为用户进程或第二系统服务进程。6.根据权利要求1至5中任一所述的方法,其特征在于,所述第一系统服务进程集成有所述用户态中的至少两个子系统服务进程,所述子系统服务进程为驱动进程、网络管理进程或文件系统管理进程;所述第二函数为所述至少两个子系统服务进程中一个子系统服务进程中的函数,所述第三函数为所述用户态中所有进程可读可执行的函数,所述第三函数用于调用为所述至少两个子系统服务进程中另一个子系统服务进程中的函数;所述第一进程基于所述第一函数执行所述物理内存地址空间中的所述第二函数,包括:所述第一进程通过所述第二函数调用并执行所述第三函数,在所述第一进程未返回所述第一函数之前,所述第一访问权限不变。7.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法应用于微内核架构,所述第一系统服务进程为驱动进程、网络管理进程或文件系统管理进程。8.根据权利要求1至7中任一项所述的方法,其特征在于,所述物理内存地址空间为内存管理单元MMU、内存保护单元MPU或物理地址保护PMP硬件管理的地址空间。9.根据权利要求1至8中任一项所述的方法,其特征在于,所述计算机设备为物联网IOT
设备。10.一种进程间的函数调用方法,其特征在于,所述方法应用于计算机设备,所述方法包括:内核响应第一进程触发的第一系统调用,配置所述第一进程对第一系统服务进程的物理内存地址空间的第一访问权限,所述物理内存地址空间存储有第二函数,所述第二函数为实现所述第一系统服务进程功能的函数,所述第一系统调用用于指示所述内核配置所述第一访问权限;所述内核向所述第一进程发送指示信息,所述指示信息用于指示是否已开启第一所述访问权限,所述第一访问权限用于所述第一进程执行所述第二函数。11.根据权利要求10所述的方法,其特征在于,所述配置所述第一进程对第一系统服务进程的物理内存地址空间的第一访问权限,包括:当确定所述第一进程具有第二访问权限,且所述第一访问权限未开启,则所述内核配置所述第一访问权限,所述指示信息具体用于指示已开启所述第一访问权限,所述第二访问权限为调用所述第二函数的权限。12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:所述内核响应所述第一进程触发的第二系统调用,取消所述第一访问权限,所述第二系统调用用于指示所述内核取消所述第一访问权限。13.根据权利要求10至12中任一所述的方法,其特征在于,所述第一访问权限包括:所述第一系统服务进程中代码段的读与执行权限与所述第一系统服务进程中数据段的读写权限;所述第一系统调用还用于触发所述内核配置所述第一进程中代码段的读与执行权限与所述第一进程中数据段的读写权限。14.根据权利要求10至13中任一所述的方法,其特征在于,所述第一进程为用户进程或第二系统服务进程。15.根据权利要求10至14中任一项所述的方法,其特征在于,所述第一系统服务进程集成有所述用户态中的至少两个子系统服务进程,所述子系统服务进程为驱动进程、网络管理进程或文件系统管理进程;当确定所述第一进程具有所述第二访问权限,且所述第一访问权限已开启,则所述指示信息用于指示已开启所述第一访问权限,且指示第一函数不启用第二系统调用,所述第一函数为用户态中所有进程可读可执行的函数,所述第一函数用于触发所述第一系统调用、调用所述第二函数以及触发所述第二系统调用,所述第二系统调用用于指示所述内核取消所述第一访问权限。16.根据权利要求10至14中任一项所述的方法,其特征在于,所述方法应用于微内核架构,所述第一系统服务进程为驱动进程、网络管理进程或文件系统管理进程。17.根据权利要求10至16中任一项所述的方法,其特征在于,所述物理内存地址空间为内存管理单元MMU、内存保护单元MPU或物理地址保护PMP硬件管理的地址空间。18.根据权利要求10至17中任一项所述的方法,其特征在于,所述计算机设备为物联网IOT设备。19.一种计算机设备,其特征在于,所述计算机设备包括:触发单元,用于基于第一函数触发第一系统调用,所述第一函数为用户态中所有进程
可读可执行的函数,所述第一函数用于触发所述第一系统调用与调用第一系统服务进程中的第二函数,所述第一系统调用用于指示所述内核配置所述第一进程对所述第一系统服务...

【专利技术属性】
技术研发人员:王维洲苗欣
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1