CN116627549A - Sgx多线程下通用的函数调用方法、装置、设备及介质 - Google Patents

Sgx多线程下通用的函数调用方法、装置、设备及介质 Download PDF

Info

Publication number
CN116627549A
CN116627549A CN202310628549.4A CN202310628549A CN116627549A CN 116627549 A CN116627549 A CN 116627549A CN 202310628549 A CN202310628549 A CN 202310628549A CN 116627549 A CN116627549 A CN 116627549A
Authority
CN
China
Prior art keywords
function
thread
current
dynamic library
target
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.)
Granted
Application number
CN202310628549.4A
Other languages
English (en)
Other versions
CN116627549B (zh
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 CN202310628549.4A priority Critical patent/CN116627549B/zh
Publication of CN116627549A publication Critical patent/CN116627549A/zh
Application granted granted Critical
Publication of CN116627549B publication Critical patent/CN116627549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (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内核造成的资源浪费严重。因此,如何在多线程进行函数调用时更加合理地提高函数调用效率是本领域亟待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种SGX多线程下通用的函数调用方法、装置、设备及存储介质,可以基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,提高函数调用效率的同时保障了函数调用的安全性。其具体方案如下:
第一方面,本申请提供了一种多线程函数调用方法,包括:
判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;
确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;
根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。
可选的,所述根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库之后,还包括:
生成所述若干个密码动态库对应的若干个线程锁,并对所述若干个线程锁进行初始化,以便利用所述若干个线程锁使用对应的所述若干个密码动态库;所述若干个线程锁是相对独立的。
可选的,所述根据所述当前运行线程确定目标密码动态库,包括:
基于预设线程ID(Identity document,身份标识号)数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。
可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:
确定所述软件开发工具包中所述目标密码动态库对应的目标接口;
调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行函数调用。
可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:
判断所述当前待调用函数进行函数调用后确定的函数结果数据是否正确返回;
当所述函数结果数据返回错误时,返回所述函数结果数据对应的错误提示信息。
可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:
同时运行所述软件开发工具包中和所述若干个密码动态库对应的若干个预设接口,以并行地进行若干个所述当前待调用函数的函数调用。
可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:
调用所述软件开发工具包中的预设接口结束所述若干个密码动态库,并退出所述软件保护扩展。
第二方面,本申请提供了一种多线程函数调用装置,包括:
动态库生成模块,用于判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;
线程确定模块,用于确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;
函数调用模块,用于根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。
第三方面,本申请提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述的多线程函数调用方法。
第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的多线程函数调用方法。
通过上述技术方案,本申请判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,在多进程进行函数调用时,提高了函数调用效率的同时保障了函数调用的安全性,并且通过多个独立的软件保护扩展密码动态库比直接利用软件保护扩展进行通过软件开发工具包的调用更快,由于密码动态库的处理与底层可信执行环境的处理隔离开,不需要修改可信执行环境中的接口,使用原SGX SDK,通用性也相对更好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种现有技术增加线程进行函数调用效果图;
图2为本申请提供的一种多线程函数调用方法流程图;
图3为本申请提供的一种具体的多线程函数调用方法时序图;
图4为本申请提供的一种具体的多线程函数调用方法流程图;
图5为本申请提供的一种多线程函数调用方法测试图;
图6为本申请提供的一种多线程函数调用装置结构示意图;
图7为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中可以用额外的处理器内核来减少模式切换,由于无切换调用必须由工作线程执行,在几乎空闲的工作负载的极端情况下,使用的额外CPU内核造成的资源浪费严重。本申请基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,在多进程进行函数调用时,提高了函数调用效率的同时保障了函数调用的安全性。
参见图2所示,本发明实施例公开了一种多线程函数调用方法,包括:
步骤S11、判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库。
本实施例中,判断当前处理器的线程数,并根据确定出的线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;可以理解的是,上述若干个密码动态库是相对独立、互不干扰的。并且基于当前系统处理器的线程数生成的对应的多个密码动态库,是基于软件保护扩展技术运行的,且上述线程数为处理器在某一时刻可以同时并行处理的任务数,可以基于若干个密码动态库的对应预设接口进行函数调用。
步骤S12、确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库。
本实施例中,在生成与若干个处理器线程对应的若干个密码动态库后,确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库。可以根据确定出的当前运行线程对应的线程号确定出调用当前待调用函数时需要运行的密码动态库。
步骤S13、根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。
本实施例中,根据目标密码动态库调用软件开发工具包中的预设接口进行当前待调用函数的函数调用。可以理解的是,本实施例可以同时运行软件开发工具包中和若干个密码动态库对应的若干个预设接口,以并行地进行若干个当前待调用函数的函数调用,从而提高函数调用的效率。
并且需要指出的是,在根据目标密码动态库调用软件开发工具包中的预设接口进行当前待调用函数的函数调用之后,需要判断当前待调用函数进行函数调用后确定的函数结果数据是否正确返回,当函数结果数据返回错误时,返回函数结果数据对应的错误提示信息。并且在所有待调用函数调用完成之后,调用软件开发工具包中的预设接口结束所述若干个密码动态库,并退出软件保护扩展。
通过上述技术方案,如图3所示,本实施例判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库。确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库。根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。这样一来,在程序运行时,可以同时进行多个待调用函数的调用,调用多个密码动态库预设接口使多个密码动态库下并行地进行,进而提高函数调用的效率。并且在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,提高了效率并且保障了安全性。
基于前述实施例可知,本申请可以在多线程进行函数调用时通过多个独立的密码动态库进行函数调用,接下来,本实施例中将对多线程函数调用的流程进行详细的阐述。参见图4所示,本申请实施例公开了一种具体的多线程函数调用方法,包括:
步骤S21、判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库。
步骤S22、生成所述若干个密码动态库对应的若干个线程锁,并对所述若干个线程锁进行初始化,以便利用所述若干个线程锁使用对应的所述若干个密码动态库;所述若干个线程锁是相对独立的。
本实施例中,需要生成若干个密码动态库对应的若干个线程锁,并对若干个线程锁进行初始化,上述若干个线程锁是相对独立的。可以理解的是,多线程下调用每个密码动态库中的接口时,都需要加锁来进行保护,因此,本实施例中拷贝多个密码动态库并生成对应的线程锁。则基于当前的线程数拷贝预设密码动态库生成若干个线程锁,并对所述若干个线程锁进行初始化。具体操作为:根据系统CPU线程数N将密码动态库拷贝生成多个并初始化多个线程锁,然后调SDK接口分别初始化好N个SGX密码动态库,分别标记为so0,so2,...,so(N-1)。这样一来,在程序运行时,进行多个函数的调用时,根据线程锁调用多个密码动态库接口,并且由于不同的密码动态库使用的锁是独立的,可以有效提高函数调用的安全性。
步骤S23、确定当前待调用函数对应的当前运行线程,基于预设线程ID数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。
本实施例中,确定当前待调用函数对应的当前运行线程,基于预设线程ID数据库确定当前运行线程的线程ID,根据线程ID和线程数利用预设密码库确定规则确定线程ID对应的目标密码动态库。本实施例中,根据当前线程ID确定对应的目标密码动态库,具体的预设密码库确定规则为用系统CPU线程数N取余数M,然后将对应的第soM个密码库作为目标密码动态库。
步骤S24、确定软件开发工具包中所述目标密码动态库对应的目标接口,调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行所述当前待调用函数的函数调用。
本实施例中,确定目标密码动态库后,确定软件开发工具包中所述目标密码动态库对应的目标接口,调用目标接口利用目标密码动态库对应的线程锁进行函数调用。
其中,关于上述步骤S21更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本实施例中,如图5所示,以SGX密码库中生成公私钥对sm2GenKeyPair接口为例,在2核Intel(R)Xeon(R)Platinum 8369B CPU@2.70GHz电脑配置下测试10次取平均值,与SDK测试效率比对情况如下:在多线程下,运行1000次时平均耗时约为0.045s左右,而SDK约为0.058s。运行10000次时平均耗时约为0.44s左右,而SDK约为0.58s。运行100000次时平均耗时约为4.5s左右,而SDK约为5.89s。运行1000000次时平均耗时约为45s左右,而SDK约为59s。结合上述测试,本实施例判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库。生成所述若干个密码动态库对应的若干个线程锁,并对所述若干个线程锁进行初始化,以便利用所述若干个线程锁使用对应的所述若干个密码动态库;所述若干个线程锁是相对独立的。确定当前待调用函数对应的当前运行线程,基于预设线程ID数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。确定软件开发工具包中所述目标密码动态库对应的目标接口,调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行所述当前待调用函数的函数调用。这样一来,在多线程下通过多个独立SGX动态库函数调用速度快,在程序运行时,进行多个函数调用,可以调用多个密码动态库接口进而在多个密码库下并行地进行,并且由于不同的密码动态库使用的锁是独立的,可以有效提高函数调用的安全性,并且上层函数调用的处理与底层可信执行环境中的处理隔离开,不需要修改enclave中的接口,安全性和通用性更好。
参见图6所示,本申请实施例还公开了一种多线程函数调用装置,包括:
动态库生成模块11,用于判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;
线程确定模块12,用于确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;
函数调用模块13,用于根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。
通过上述技术方案,本实施例判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,在多进程进行函数调用时,提高了函数调用效率的同时保障了函数调用的安全性,不需要修改可信执行环境中的接口,通用性也相对更好。
在一些具体实施例中,所述动态库生成模块11,还包括:
线程锁生成单元,用于生成所述若干个密码动态库对应的若干个线程锁,并对所述若干个线程锁进行初始化,以便利用所述若干个线程锁使用对应的所述若干个密码动态库;所述若干个线程锁是相对独立的。
在一些具体实施例中,所述线程启动模块12,具体包括:
动态库确定单元,用于基于预设线程ID数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。
在一些具体实施例中,所述函数调用模块13,具体包括:
接口确定单元,用于确定所述软件开发工具包中所述目标密码动态库对应的目标接口;
接口调用单元,用于调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行函数调用。
在一些具体实施例中,所述多线程函数调用装置,还包括:
结果判断单元,用于判断所述当前待调用函数进行函数调用后确定的函数结果数据是否正确返回;
错误信息返回单元,用于当所述函数结果数据返回错误时,返回所述函数结果数据对应的错误提示信息。
在一些具体实施例中,所述函数调用模块13,具体包括:
函数调用单元,用于同时运行所述软件开发工具包中和所述若干个密码动态库对应的若干个预设接口,以并行地进行若干个所述当前待调用函数的函数调用。
在一些具体实施例中,所述函数调用模块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.根据权利要求2所述的多线程函数调用方法,其特征在于,所述根据所述当前运行线程确定目标密码动态库,包括:
基于预设线程ID数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。
4.根据权利要求2所述的多线程函数调用方法,其特征在于,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:
确定所述软件开发工具包中所述目标密码动态库对应的目标接口;
调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行函数调用。
5.根据权利要求1所述的多线程函数调用方法,其特征在于,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:
判断所述当前待调用函数进行函数调用后确定的函数结果数据是否正确返回;
当所述函数结果数据返回错误时,返回所述函数结果数据对应的错误提示信息。
6.根据权利要求1所述的多线程函数调用方法,其特征在于,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:
同时运行所述软件开发工具包中和所述若干个密码动态库对应的若干个预设接口,以并行地进行若干个所述当前待调用函数的函数调用。
7.根据权利要求1至6任一项所述的多线程函数调用方法,其特征在于,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:
调用所述软件开发工具包中的预设接口结束所述若干个密码动态库,并退出所述软件保护扩展。
8.一种多线程函数调用装置,其特征在于,包括:
动态库生成模块,用于判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;
线程确定模块,用于确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;
函数调用模块,用于根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的多线程函数调用方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的多线程函数调用方法。
CN202310628549.4A 2023-05-30 2023-05-30 Sgx多线程下通用的函数调用方法、装置、设备及介质 Active CN116627549B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310628549.4A CN116627549B (zh) 2023-05-30 2023-05-30 Sgx多线程下通用的函数调用方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310628549.4A CN116627549B (zh) 2023-05-30 2023-05-30 Sgx多线程下通用的函数调用方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116627549A true CN116627549A (zh) 2023-08-22
CN116627549B CN116627549B (zh) 2024-03-26

Family

ID=87609563

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310628549.4A Active CN116627549B (zh) 2023-05-30 2023-05-30 Sgx多线程下通用的函数调用方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116627549B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051860A (ja) * 1999-08-12 2001-02-23 Fujitsu Ltd マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体
CN108804211A (zh) * 2018-04-27 2018-11-13 西安华为技术有限公司 线程调度方法、装置、电子设备及存储介质
CN111338831A (zh) * 2020-02-10 2020-06-26 北京字节跳动网络技术有限公司 一种多线程运行性能的处理方法、装置、介质和电子设备
CN111400016A (zh) * 2020-03-25 2020-07-10 新华三信息安全技术有限公司 一种调用应用程序接口函数的方法和设备
CN112527508A (zh) * 2020-12-21 2021-03-19 卓尔智联(武汉)研究院有限公司 基于sgx的云端飞地资源管理方法、装置、计算机设备和介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051860A (ja) * 1999-08-12 2001-02-23 Fujitsu Ltd マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体
CN108804211A (zh) * 2018-04-27 2018-11-13 西安华为技术有限公司 线程调度方法、装置、电子设备及存储介质
CN111338831A (zh) * 2020-02-10 2020-06-26 北京字节跳动网络技术有限公司 一种多线程运行性能的处理方法、装置、介质和电子设备
CN111400016A (zh) * 2020-03-25 2020-07-10 新华三信息安全技术有限公司 一种调用应用程序接口函数的方法和设备
CN112527508A (zh) * 2020-12-21 2021-03-19 卓尔智联(武汉)研究院有限公司 基于sgx的云端飞地资源管理方法、装置、计算机设备和介质

Also Published As

Publication number Publication date
CN116627549B (zh) 2024-03-26

Similar Documents

Publication Publication Date Title
JP5006366B2 (ja) デバイスの動作モード間の移行を提供するシステム
EP1682981B1 (en) System for invoking a privileged function in a device
US5893157A (en) Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
US7818743B2 (en) Logging lock data
US8745414B2 (en) Switching between unsecure system software and secure system software
US20090307707A1 (en) System and method for dynamically adaptive mutual exclusion in multi-threaded computing environment
US10229077B2 (en) Method for data transfer between real-time tasks using a DMA memory controller
Zeng et al. Minimizing stack and communication memory usage in real-time embedded applications
Völp et al. On confidentiality-preserving real-time locking protocols
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
US7725643B1 (en) Methods and systems for detecting and avoiding an address dependency between tasks
CN116627549B (zh) Sgx多线程下通用的函数调用方法、装置、设备及介质
CN116661907A (zh) Sgx单线程下无切换函数调用方法、装置、设备及介质
US9430196B2 (en) Message inlining
US9223637B1 (en) Method and apparatus to advise spin and yield decisions
Balasubramanian et al. Incorporating implementation overheads in the analysis for the flexible spin-lock model
Wang et al. Patterns which help to avoid conflicts over shared resources in time-triggered embedded systems which employ a pre-emptive scheduler
US20230236906A1 (en) Information processing device, information processing method, and program
Schierboom Verification of Fiasco’s IPC implementation
MXPA06004670A (en) System for providing transitions between operating modes of a device

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
GR01 Patent grant
GR01 Patent grant