CN116661907A - Sgx单线程下无切换函数调用方法、装置、设备及介质 - Google Patents

Sgx单线程下无切换函数调用方法、装置、设备及介质 Download PDF

Info

Publication number
CN116661907A
CN116661907A CN202310643142.9A CN202310643142A CN116661907A CN 116661907 A CN116661907 A CN 116661907A CN 202310643142 A CN202310643142 A CN 202310643142A CN 116661907 A CN116661907 A CN 116661907A
Authority
CN
China
Prior art keywords
function
called
task data
free queue
target lock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310643142.9A
Other languages
English (en)
Inventor
罗翀
于昇
陈邦道
周胜平
杨嘉诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunhai Chain Holdings Co ltd
Original Assignee
Yunhai Chain Holdings Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yunhai Chain Holdings Co ltd filed Critical Yunhai Chain Holdings Co ltd
Priority to CN202310643142.9A priority Critical patent/CN116661907A/zh
Publication of CN116661907A publication Critical patent/CN116661907A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

SGX单线程下无切换函数调用方法、装置、设备及介质
技术领域
本发明涉及安全计算领域,特别涉及一种SGX单线程下无切换的函数调用方法、装置、设备及存储介质。
背景技术
SGX(Software Guard Extensions,软件保护扩展)是一项TEE(Trusted ExecuteEnvironment,可信执行环境)技术,可以提供安全内存,开发者需将APP划分为不可信部分和可信部分(Enclave,受安全保护的内存),不可信部分通过访问控制进入Enclave执行敏感代码,ECALL接口是Enclave的入口,Enclave内部保存ECALL函数的代码。但是,这项技术更安全的同时付出了极大的代价,SGX中SDK(Software Development Kit,软件开发工具包)的额外开销比较大,在几千个Cycle以上,比不使用SGX技术的正常函数调用慢了差不多50倍速度以上,且在这种编程模型下,用户需要将业务分割成Host和Enclave两部分进行编程,还需要编写ecall(ocall)代码实现Host和Enclave之间的切换和信息交互,编程难度较大,对存量业务进行改造也有一定困难。
现有技术中如图1所示,SCONE方案基于无锁队列的异步系统调用机制完成数据传递及同步,HotCalls方案中利用自旋锁控制完成函数调用及传递同步。另外Haven、SGXKernal、Graphene方案则通过移植一些操作系统库/函数库到enclave来达到函数调用时减少模式切换的目的,上述方案在其某些特定的应用场景下性能都有所提升,但<<SGX应用支持技术研究进展>>中也指出无切换调用技术在效率方面存在疑问,用额外的CPU(central processing unit,中央处理器)内核来减少模式切换未必是合理的。因为由于无切换调用必须由工作线程执行,需要额外的CPU内核,但是实现的加速比随着工作量的减少而减小,在工作负载几乎空闲的极端情况下,使用额外CPU内核显然是浪费资源。因此,如何在不增加工作线程的情况下提高函数调用效率是本领域亟待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种单线程下的函数调用方法、装置、设备及存储介质,可以在处理器单线程情况下对函数进行分组批处理,通过减少队列插入及通知次数提高效率,减少耗时,并且可以通过改变分组使函数调用更加灵活。其具体方案如下:
第一方面,本申请提供了一种单线程下的函数调用方法,包括:
获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
可选的,所述根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,包括:
根据分组结果配置待调用函数任务数据的函数接口参数空间和函数任务数据结构,以将所述待调用函数任务数据插入所述目标无锁队列中。
可选的,所述基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中之前,还包括:
对预设无锁队列进行初始化操作得到目标无锁队列,并调用软件开发工具包接口初始化所述软件保护扩展;
将所述目标预设无锁队列上传至基于所述软件保护扩展构建的可信执行环境的Enclave中。
可选的,所述轮巡所述目标无锁队列,包括:
轮巡所述目标无锁队列,判断所述目标无锁队列中是否存在所述待调用函数任务数据;
若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务;
若不存在,则将所述目标无锁队列设置为wait状态。
可选的,所述根据所述待调用函数任务数据对应的函数参数进行相应的函数任务执行,包括:
根据所述待调用函数任务数据对应的所述函数接口参数中的接口执行次数执行相应的函数任务,并在所述函数任务执行完成后更新相应的任务执行状态。
可选的,所述根据所述无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用之后,还包括:
判断当前所述目标无锁队列的所述待调用函数任务数据是否调用完成;
若所述目标无锁队列中的所述待调用函数任务数据未被全部调用,则继续在所述可信执行环境中处理所述待调用函数任务数据;
若所述目标无锁队列中的所述待调用函数任务数据被全部调用,则判断所述待调用函数任务数据的函数调用结果是否正确返回,并在所述函数调用结果返回错误时返回对应的错误信息至所述目标无锁队列。
可选的,所述根据所述无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用之后,还包括:
若需要退出所述软件保护扩展,则终止所述可信执行环境中的队列读取进程,以停止读取所述目标无锁队列,并调用软件开发工具包接口结束所述软件保护扩展。
第二方面,本申请提供了一种单线程下的函数调用装置,包括:
数据分组模块,用于获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
数据插入模块,用于根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
函数调用模块,用于轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
第三方面,本申请提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述的单线程下的函数调用方法。
第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的单线程下的函数调用方法。
通过上述技术方案,本申请获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。可以在处理器单线程情况下对函数进行分组批处理,通过减少队列插入及通知次数提高效率,减少耗时,避免通过增加线程进行函数调用导致的资源浪费,并且可以通过改变分组使函数调用更加灵活。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种现有技术增加线程进行函数调用效果图;
图2为本申请提供的一种单线程下的函数调用方法流程图;
图3为本申请提供的一种具体的单线程下的函数调用方法时序图;
图4为本申请提供的一种具体的单线程函数调用方法流程图;
图5为本申请提供的一种单线程下的函数调用方法测试图;
图6为本申请提供的一种单线程下的函数调用装置结构示意图;
图7为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中可以用额外的CPU内核来减少模式切换,但是实现的加速比随着工作量的减少而减小,在几乎空闲的工作负载的极端情况下,使用额外CPU内核显然是浪费资源。本申请可以在处理器单线程情况下对函数进行分组批处理,通过减少队列插入及通知次数提高效率,减少耗时,通过改变分组使函数调用更加灵活。
参见图2所示,本发明实施例公开了一种单线程下的函数调用方法,包括:
步骤S11、获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组。
本实施例中,首先获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组。其中,需要指出的是,本实施例可以引入单生产者单消费者模型的zmq无锁队列,数据分组的方式具体为修改队列的接口将每次插入的待调用函数数据中包含一组的子数据,并且插入队列中的数据中包含接口参数及函数调用次数。这样一来,通过引入无锁队列并且每次读取一次无锁队列后根据插入数据对应的函数调用次数可以将读取的函数执行多次,避免同一个函数进行分次处理,可以提高函数调用的效率。
步骤S12、根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列。
本实施例中,根据分组结果配置待调用函数任务数据的函数接口参数空间和函数任务数据结构,以将所述待调用函数任务数据插入所述目标无锁队列中。并且基于函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中之前,首先对预设无锁队列进行初始化操作得到目标无锁队列,并调用软件开发工具包接口初始化所述软件保护扩展,然后将目标预设无锁队列上传至基于软件保护扩展构建的可信执行环境的Enclave中。可以理解的是,上述无锁队列中的数据为函数任务,包括函数接口类型,接口参数,任务执行状态,接口执行次数等函数任务参数。如图3所示,本实施例中,对预设无锁队列进行初始化操作得到目标无锁队列后,调用SDK接口初始化SGX,然后新建一个线程将目标无锁队列传入基于软件保护扩展生成的Enclave中,将目标预设无锁队列上传至Enclave,以便后续轮巡目标无锁队列。
步骤S13、轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
本实施例中,将函数任务数据插入共享的无锁队列中,并不断轮巡当前任务的待调用函数任务数据的函数接口参数和函数调用次数以完成函数调用。并且,在函数调用完成后,若需要退出软件保护扩展,则终止可信执行环境中的队列读取进程,以停止读取目标无锁队列,并调用软件开发工具包接口结束软件保护扩展。
通过上述技术方案,本实施例获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组。根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列。轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。通过引入无锁队列并且每次读取一次无锁队列后根据插入数据对应的函数调用次数可以将读取的函数执行多次,可以在处理器单线程情况下对函数进行分组批处理,通过减少队列插入及通知次数提高效率,提高了函数调用的效率。
基于前述实施例可知,本申请可以在单线程下,将待调用函数数据进行分组后插入目标无锁队列进行函数调用,接下来,本实施例中将对函数调用的过程进行详细地阐述。参加图4所示,本申请实施例公开了一种具体的单线程函数调用方法,包括:
步骤S21、轮巡目标无锁队列,判断所述目标无锁队列中是否存在待调用函数任务数据。
本实施例中,将函数任务数据插入共享的无锁队列后,不断轮巡目标无锁队列,判断当前任务是否已执行完,目标无锁队列中是否存在待调用函数任务数据。
步骤S22、若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务。
本实施例中,若目标无锁队列中当前存在待调用函数任务数据,则根据所述待调用函数任务数据对应的所述函数接口参数中的接口执行次数执行相应的函数任务,并在所述函数任务执行完成后更新相应的任务执行状态。若不存在待调用函数任务数据,则将所述目标无锁队列设置为wait状态。可以理解的是,在轮巡目标无锁队列时,轮巡到有待调用函数数据时根据其对应的接口类型及接口参数进行对应的处理,根据接口需执行次数执行对应次数的函数调用,执行完后更新任务已执行完,目标无锁队列中无数据时则等待被唤醒。
步骤S23、判断当前所述目标无锁队列的所述待调用函数任务数据是否调用完成,以根据判断结果对所述待调用函数任务数据进行处理。
本实施例中,若目标无锁队列中的所述待调用函数任务数据未被全部调用,则继续在可信执行环境中处理所述待调用函数任务数据。若目标无锁队列中的待调用函数任务数据被全部调用,则判断待调用函数任务数据的函数调用结果是否正确返回,并在函数调用结果返回错误时返回对应的错误信息至目标无锁队列。并在所有函数任务执行完毕后,终止读取目标无锁队列,调用软件开发工具包接口结束软件保护扩展并退出。
本实施例中,如图5所示,以SGX密码库中生成公私钥对sm2GenKeyPair接口为例,在2核Intel(R)Xeon(R)Platinum 8369B CPU@2.70GHz电脑配置下测试10次取平均值,与SGX SDK测试效率比对情况如下:运行1000次批处理为10时平均耗时约为0.0537s左右,批处理为100时平均耗时约为0.0501s左右,而SDK约为0.0558s。运行10000次批处理为10时平均耗时约为0.5374s左右,批处理为100时平均耗时约为0.504s左右,而SDK约为0.56s左右。运行100000次批处理为10时平均耗时约为5.466s左右,批处理为100时平均耗时约为5.11s左右,批处理为1000时平均耗时约为5.07s左右,而SGX SDK约为5.6s左右。运行1000000次批处理为1000时平均耗时约为51s左右,而SDK约为56s左右。基于上述示例,本实施例轮巡目标无锁队列,判断所述目标无锁队列中是否存在待调用函数任务数据。若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务。然后判断当前所述目标无锁队列的所述待调用函数任务数据是否调用完成,若所述目标无锁队列中的所述待调用函数任务数据被全部调用,则判断所述待调用函数任务数据的函数调用结果是否正确返回,并在所述函数调用结果返回错误时返回对应的错误信息至所述目标无锁队列。这样一来,在单线程下的函数调用分组批处理速度更快,可以通过减少队列插入及通知次数提高效率,分组处理的越多,耗时相对也更少,效率更高,并且可以使上层的分组处理与底层enclave的处理隔离开,不需要修改enclave中的接口,提高了函数调用的安全性。
参见图6所示,本申请实施例还公开了一种单线程下的函数调用装置,包括:
数据分组模块11,用于获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
数据插入模块12,用于根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
函数调用模块13,用于轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
本实施例中,获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。可以在处理器单线程情况下对函数进行分组批处理,通过减少队列插入及通知次数提高效率,减少函数调用耗时,并且可以通过改变分组使函数调用更加灵活。
在一些具体实施例中,所述数据插入模块12,具体包括:
空间配置单元,用于根据分组结果配置待调用函数任务数据的函数接口参数空间和函数任务数据结构,以将所述待调用函数任务数据插入所述目标无锁队列中。
在一些具体实施例中,所述数据插入模块12,还包括:
队列初始化单元,用于对预设无锁队列进行初始化操作得到目标无锁队列,并调用软件开发工具包接口初始化所述软件保护扩展;
队列上传单元,用于将所述目标预设无锁队列上传至基于所述软件保护扩展构建的可信执行环境的Enclave中。
在一些具体实施例中,所述函数调用模块13,具体包括:
队列轮训单元,用于轮巡所述目标无锁队列,判断所述目标无锁队列中是否存在所述待调用函数任务数据;
任务执行单元,用于若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务;
状态设置单元,用于若不存在,则将所述目标无锁队列设置为wait状态。
在一些具体实施例中,所述函数调用模块13,具体包括:
状态更新单元,用于根据所述待调用函数任务数据对应的所述函数接口参数中的接口执行次数执行相应的函数任务,并在所述函数任务执行完成后更新相应的任务执行状态。
在一些具体实施例中,所述单线程下的函数调用装置,还包括:
任务判断单元,用于判断当前所述目标无锁队列的所述待调用函数任务数据是否调用完成;
数据处理单元,用于若所述目标无锁队列中的所述待调用函数任务数据未被全部调用,则继续在所述可信执行环境中处理所述待调用函数任务数据;
信息返回单元,用于若所述目标无锁队列中的所述待调用函数任务数据被全部调用,则判断所述待调用函数任务数据的函数调用结果是否正确返回,并在所述函数调用结果返回错误时返回对应的错误信息至所述目标无锁队列。
在一些具体实施例中,所述单线程下的函数调用装置,还包括:
进程终止单元,用于若需要退出所述软件保护扩展,则终止所述可信执行环境中的队列读取进程,以停止读取所述目标无锁队列,并调用软件开发工具包接口结束所述软件保护扩展。
进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的单线程下的函数调用方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的单线程下的函数调用方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的单线程下的函数调用方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种单线程下的函数调用方法,其特征在于,包括:
获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
2.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,包括:
根据分组结果配置待调用函数任务数据的函数接口参数空间和函数任务数据结构,以将所述待调用函数任务数据插入所述目标无锁队列中。
3.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中之前,还包括:
对预设无锁队列进行初始化操作得到目标无锁队列,并调用软件开发工具包接口初始化所述软件保护扩展;
将所述目标预设无锁队列上传至基于所述软件保护扩展构建的可信执行环境的Enclave中。
4.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述轮巡所述目标无锁队列,包括:
轮巡所述目标无锁队列,判断所述目标无锁队列中是否存在所述待调用函数任务数据;
若存在,则根据所述待调用函数任务数据对应的函数参数执行相应的函数任务;
若不存在,则将所述目标无锁队列设置为wait状态。
5.根据权利要求4所述的单线程下的函数调用方法,其特征在于,所述根据所述待调用函数任务数据对应的函数参数进行相应的函数任务执行,包括:
根据所述待调用函数任务数据对应的所述函数接口参数中的接口执行次数执行相应的函数任务,并在所述函数任务执行完成后更新相应的任务执行状态。
6.根据权利要求1所述的单线程下的函数调用方法,其特征在于,所述根据所述无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用之后,还包括:
判断当前所述目标无锁队列的所述待调用函数任务数据是否调用完成;
若所述目标无锁队列中的所述待调用函数任务数据未被全部调用,则继续在所述可信执行环境中处理所述待调用函数任务数据;
若所述目标无锁队列中的所述待调用函数任务数据被全部调用,则判断所述待调用函数任务数据的函数调用结果是否正确返回,并在所述函数调用结果返回错误时返回对应的错误信息至所述目标无锁队列。
7.根据权利要求1至6任一项所述的单线程下的函数调用方法,其特征在于,所述根据所述无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用之后,还包括:
若需要退出所述软件保护扩展,则终止所述可信执行环境中的队列读取进程,以停止读取所述目标无锁队列,并调用软件开发工具包接口结束所述软件保护扩展。
8.一种单线程下的函数调用装置,其特征在于,包括:
数据分组模块,用于获取待调用函数任务数据,并根据预设分组规则将所述待调用函数任务数据进行分组;
数据插入模块,用于根据分组结果为分组后的所述待调用函数任务数据配置对应的函数空间,并基于所述函数空间将分组后的所述待调用函数任务数据插入目标无锁队列中;所述目标无锁队列为运行在基于软件保护扩展配置的可信执行环境中的队列;
函数调用模块,用于轮巡所述目标无锁队列,根据所述目标无锁队列中所述待调用函数任务数据的函数接口参数和函数调用次数进行函数调用。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的单线程下的函数调用方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的单线程下的函数调用方法。
CN202310643142.9A 2023-05-30 2023-05-30 Sgx单线程下无切换函数调用方法、装置、设备及介质 Pending CN116661907A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310643142.9A CN116661907A (zh) 2023-05-30 2023-05-30 Sgx单线程下无切换函数调用方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310643142.9A CN116661907A (zh) 2023-05-30 2023-05-30 Sgx单线程下无切换函数调用方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN116661907A true CN116661907A (zh) 2023-08-29

Family

ID=87713232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310643142.9A Pending CN116661907A (zh) 2023-05-30 2023-05-30 Sgx单线程下无切换函数调用方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116661907A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117200301A (zh) * 2023-11-08 2023-12-08 深圳海辰储能科技有限公司 基于储能系统的端口调用方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117200301A (zh) * 2023-11-08 2023-12-08 深圳海辰储能科技有限公司 基于储能系统的端口调用方法及装置
CN117200301B (zh) * 2023-11-08 2024-01-26 深圳海辰储能科技有限公司 基于储能系统的端口调用方法及装置

Similar Documents

Publication Publication Date Title
US9501319B2 (en) Method and apparatus for scheduling blocking tasks
US7788668B2 (en) System and method for implementing distributed priority inheritance
US10503671B2 (en) Controlling access to a shared resource
CN107341054B (zh) 任务执行方法、装置及计算机可读存储介质
TW201411387A (zh) 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用
CN116661907A (zh) Sgx单线程下无切换函数调用方法、装置、设备及介质
US9218201B2 (en) Multicore system and activating method
US8769546B2 (en) Busy-wait time for threads
US7451454B2 (en) Event handling mechanism
Vanmechelen et al. Conservative distributed discrete event simulation on Amazon EC2
CN112965794A (zh) 算法调用方法、电子设备及存储介质
CN110955503A (zh) 任务调度方法及装置
CN109753321B (zh) 基于协议注册的应用启动方法、装置、终端和存储介质
Trumpler et al. A systematic framework for evolving TinyOS
CN111857995A (zh) 进程调度方法和装置、存储介质及电子装置
CN109669735B (zh) 基于延时注册的应用启动方法、装置和存储介质
WO2022237419A1 (zh) 任务执行方法、装置及存储介质
US9507654B2 (en) Data processing system having messaging
CN113805954A (zh) 屏保显示方法、电子设备以及计算机存储介质
CN111796949A (zh) 通讯任务处理方法、装置、设备及存储介质
CN111414243A (zh) 确定访问路径的方法和装置、存储介质及电子装置
CN112631671A (zh) 一种操作系统初始化的方法和装置
CN111258757A (zh) 任务自动编排方法、装置、计算机设备以及存储介质
Georgiev et al. Some Analysis of the Timing Parameters in Real-time Embedded Systems
WO2007033203A2 (en) Multi-threaded processor architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination