SGX单线程下无切换函数调用方法、装置、设备及介质制造方法及图纸

技术编号:38662398 阅读:13 留言:0更新日期:2023-09-02 22:45
本申请公开了一种SGX单线程下无切换的函数调用方法、装置、设备及存储介质,涉及安全计算领域,包括:获取待调用函数任务数据,并根据预设分组规则将待调用函数任务数据进行分组;根据分组结果为分组后的待调用函数任务数据配置函数空间,并基于函数空间将分组后的待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;轮巡目标无锁队列,根据所述目标无锁队列中待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。本申请可以在处理器单线程情况下对函数进行分组批处理,可以通过减少队列插入及通知次数提高效率,减少耗时,并且可以通过改变分组使函数调用更加灵活。调用更加灵活。调用更加灵活。

【技术实现步骤摘要】
SGX单线程下无切换函数调用方法、装置、设备及介质


[0001]本专利技术涉及安全计算领域,特别涉及一种SGX单线程下无切换的函数调用方法、装置、设备及存储介质。

技术介绍

[0002]SGX(Software Guard Extensions,软件保护扩展)是一项TEE(Trusted Execute Environment,可信执行环境)技术,可以提供安全内存,开发者需将APP划分为不可信部分和可信部分(Enclave,受安全保护的内存),不可信部分通过访问控制进入Enclave执行敏感代码,ECALL接口是Enclave的入口,Enclave内部保存ECALL函数的代码。但是,这项技术更安全的同时付出了极大的代价,SGX中SDK(Software Development Kit,软件开发工具包)的额外开销比较大,在几千个Cycle以上,比不使用SGX技术的正常函数调用慢了差不多50倍速度以上,且在这种编程模型下,用户需要将业务分割成Host和Enclave两部分进行编程,还需要编写ecall(ocall)代码实现Host和Enclave之间的切换和信息交互,编程难度较大,对存量业务进行改造也有一定困难。
[0003]现有技术中如图1所示,SCONE方案基于无锁队列的异步系统调用机制完成数据传递及同步,HotCalls方案中利用自旋锁控制完成函数调用及传递同步。另外Haven、SGXKernal、Graphene方案则通过移植一些操作系统库/函数库到enclave来达到函数调用时减少模式切换的目的,上述方案在其某些特定的应用场景下性能都有所提升,但<<SGX应用支持技术研究进展>>中也指出无切换调用技术在效率方面存在疑问,用额外的CPU(central processing unit,中央处理器)内核来减少模式切换未必是合理的。因为由于无切换调用必须由工作线程执行,需要额外的CPU内核,但是实现的加速比随着工作量的减少而减小,在工作负载几乎空闲的极端情况下,使用额外CPU内核显然是浪费资源。因此,如何在不增加工作线程的情况下提高函数调用效率是本领域亟待解决的问题。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种单线程下的函数调用方法、装置、设备及存储介质,可以在处理器单线程情况下对函数进行分组批处理,通过减少队列插入及通知次数提高效率,减少耗时,并且可以通过改变分组使函数调用更加灵活。其具体方案如下:
[0005]第一方面,本申请提供了一种单线程下的函数调用方法,包括:
[0006]获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
[0007]根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
[0008]轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
[0009]可选的,所述根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,包括:
[0010]根据分组结果配置待调用函数任务数据的函数接口参数空间和函数任务数据结构,以将所述待调用函数任务数据插入所述目标无锁队列中。
[0011]可选的,所述基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中之前,还包括:
[0012]对预设无锁队列进行初始化操作得到目标无锁队列,并调用软件开发工具包接口初始化所述软件保护扩展;
[0013]将所述目标预设无锁队列上传至基于所述软件保护扩展构建的可信执行环境的Enclave中。
[0014]可选的,所述轮巡所述目标无锁队列,包括:
[0015]轮巡所述目标无锁队列,判断所述目标无锁队列中是否存在所述待调用函数任务数据;
[0016]若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务;
[0017]若不存在,则将所述目标无锁队列设置为wait状态。
[0018]可选的,所述根据所述待调用函数任务数据对应的函数参数进行相应的函数任务执行,包括:
[0019]根据所述待调用函数任务数据对应的所述函数接口参数中的接口执行次数执行相应的函数任务,并在所述函数任务执行完成后更新相应的任务执行状态。
[0020]可选的,所述根据所述无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用之后,还包括:
[0021]判断当前所述目标无锁队列的所述待调用函数任务数据是否调用完成;
[0022]若所述目标无锁队列中的所述待调用函数任务数据未被全部调用,则继续在所述可信执行环境中处理所述待调用函数任务数据;
[0023]若所述目标无锁队列中的所述待调用函数任务数据被全部调用,则判断所述待调用函数任务数据的函数调用结果是否正确返回,并在所述函数调用结果返回错误时返回对应的错误信息至所述目标无锁队列。
[0024]可选的,所述根据所述无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用之后,还包括:
[0025]若需要退出所述软件保护扩展,则终止所述可信执行环境中的队列读取进程,以停止读取所述目标无锁队列,并调用软件开发工具包接口结束所述软件保护扩展。
[0026]第二方面,本申请提供了一种单线程下的函数调用装置,包括:
[0027]数据分组模块,用于获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
[0028]数据插入模块,用于根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
[0029]函数调用模块,用于轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
[0030]第三方面,本申请提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述的单线程下的函数调用方法。
[0031]第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的单线程下的函数调用方法。
[0032]通过上述技术方案,本申请获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;轮巡所述目标无锁队列,根据所述目标本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种单线程下的函数调用方法,其特征在于,包括:获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。2.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,包括:根据分组结果配置待调用函数任务数据的函数接口参数空间和函数任务数据结构,以将所述待调用函数任务数据插入所述目标无锁队列中。3.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中之前,还包括:对预设无锁队列进行初始化操作得到目标无锁队列,并调用软件开发工具包接口初始化所述软件保护扩展;将所述目标预设无锁队列上传至基于所述软件保护扩展构建的可信执行环境的Enclave中。4.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述轮巡所述目标无锁队列,包括:轮巡所述目标无锁队列,判断所述目标无锁队列中是否存在所述待调用函数任务数据;若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务;若不存在,则将所述目标无锁队列设置为wait状态。5.根据权利要求4所述的单线程下的函数调用方法,其特征在于,所述根据所述待调用函数任务数据对应的函数参数进行相应的函数任务执行,包括:根据所述待调用函数任务数据对应的所述函数接口参数中的接口执行次数执行相应的函数任务,并在所述函数任务执行完成后更新相应的任务执行状态。6.根据权利要求1所述的单线程下的函数调用方法,其特...

【专利技术属性】
技术研发人员:罗翀于昇陈邦道周胜平杨嘉诚
申请(专利权)人:云海链控股股份有限公司
类型:发明
国别省市:

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

1