CN112363779A - 一种动态链接程序的安全控制方法 - Google Patents
一种动态链接程序的安全控制方法 Download PDFInfo
- Publication number
- CN112363779A CN112363779A CN202011346107.3A CN202011346107A CN112363779A CN 112363779 A CN112363779 A CN 112363779A CN 202011346107 A CN202011346107 A CN 202011346107A CN 112363779 A CN112363779 A CN 112363779A
- Authority
- CN
- China
- Prior art keywords
- ndf
- cache
- nsp
- memory
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000006870 function Effects 0.000 claims description 38
- 238000010367 cloning Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 230000010354 integration Effects 0.000 abstract description 2
- 230000008878 coupling Effects 0.000 description 42
- 238000010168 coupling process Methods 0.000 description 42
- 238000005859 coupling reaction Methods 0.000 description 42
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100408782 Arabidopsis thaliana PNSB1 gene Proteins 0.000 description 1
- 241000270295 Serpentes Species 0.000 description 1
- 108010015780 Viral Core Proteins Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
“软件模块化”是软件大生产不可或缺的概念,没有“软件模块化”就不会有现代化的软件工业。“软件模块化”具体实现方法需要解决两个主要问题,即“软件模块”的例化问题和“软件集成”后的安全问题。很容易理解关于“安全”的问题,而“例化问题”即为动态链接的问题。这两个关于软件的核心问题的解决,均依赖于硬件基础的形态,即事实上硬件的理论基础决定了“软件模块化”的具体实现方法将存在多大的空间去解决上述的两个核心问题。本发明基于硬件的方式解决“例化问题”,同时解决“安全问题”。从而令这种新的硬件基础在动态链接程序的应用场景中,维持整个软件和硬件系统的安全完备性。
Description
技术领域
本发明涉及集成电路及计算机领域,尤其指一种动态链接程序的安全控制方法。
背景技术
信息技术改变了科技历史,处理器芯片的发展也在不断地改变着信息技术。但是,在现有背景技术条件下,处理器芯片的发展却并没有带来软件基础技术的革命性发展。对于整个计算机系统而言,最好的系统是硬件提供高效而安全的硬件基础,而软件着力于用户所需要解决的问题。为此,在现有背景技术条件下,需要获得更多进步的,是软件所必须倚重的硬件平台,即计算机处理器需要为软件提供称心应手的硬件功能。
在软件工程中,尤其是在大型软件工程中,“软件模块化”几乎是现代软件设计无法避免的问题。“软件模块化”必须要解决的两大核心问题包括:“软件模块”的“例化问题”和“软件集成”的“安全问题”。其中,“例化问题”即为“软件模块”的动态链接的问题。而“安全问题”则是由于动态链接后的“软件模块”在系统中将具有主进程的权限而带来外部“软件模块”可能非法访问数据的问题。
在现有背景技术条件下,事实上并不存在硬件能够解决“软件模块化”的“例化问题”和“安全问题”。因此,对于“软件模块化”的具体实现而言,所有一切问题都依赖于软件来解决。如此,复杂而低效率的操作系统底层或者说操作系统Kernel就成为了“例化问题”和“安全问题”的唯一解决方案。理论上,操作系统Kernel解决“例化问题”不存在逻辑上不可能的问题,但存在效率的问题。而理论上,操作系统Kernel解决“安全问题”却存在逻辑上不可能的问题,当然也存在效率的问题。依赖于操作系统Kernel来解决“安全问题”,永远也做不到针对所有软件进程确保安全,因为操作系统Kernel本身就是软件,但它不受任何限制,而理论上动态链接的“软件模块”可以获得操作系统Kernel的权限,即例化成为操作系统Kernel的一部分。事实上,现有背景技术条件下,以操作系统Kernel所实现的“系统安全”,看上去就像一条蛇,用自己的嘴咬了自己的尾巴,但并不能察觉出来。所以,现有背景技术条件下的软件“安全问题”事实上是一个悖论,在这种背景技术条件下,“黑客”永远都会存在。
为此,对于整个计算机系统而言,需要合理的硬件为基础,以确保软件运行的效率,以及确保软件运行的安全。
发明内容
本发明将软件进入计算机运行后,定义为以下几种状态:“进程”、“线程”、“函数”。当软件从程序入口开始运行时,此时软件状态为“进程”。“进程”在运行的过程中可以创建一个或多个“线程”,在逻辑上这些“线程”为并发运行效果,此时软件状态为“线程”。处于“线程”状态下的软件,延续程序入口分支的线程,称之为“主线程”,而其它新建出来的线程统称为“副线程”。“副线程”不能嵌套新建线程,即只有“主线程”能够创建“副线程”而“副线程”不能创建新的线程。每条线程之间拥有独立的数据及代码空间,但它们仍然同属于一个进程的范畴。即对于进程之间的通信而言,所有同属于一个进程范畴的所有线程只能使用同一个“进程号”作为在进程间通信的唯一标识。在每条线程运行的过程中,可以重复使用某一段代码去完成既定但不尽相同的任务,该段被重复使用的代码每次被调用时可以拥有完全独立的代码及数据内存/缓存空间,也可以每次都使用相同的代码及数据内存/缓存空间。软件在执行这些被重复使用的代码时的状态被称之为函数。其中每次被调用,使用相同代码及数据内存/缓存空间的函数称之为“静态函数”,而每次被调用,使用新的代码及数据内存/缓存空间的函数称之为“动态函数”。
显而易见,线程是进程在逻辑上的同步分支状态,而函数属于线程执行当中的内部状态。“静态函数”从理论上看不存在嵌套的必要,但“动态函数”在线程当中的应用则主要是存在多层次的嵌套。本文将这种动态嵌套函数简称为NDF,即Nested DynamicFunction的英文缩写。本发明技术重点在于对线程和NDF的动态链接以及安全控制,以确保当线程或NDF代码来自外部动态链接库时的系统安全。当线程调用NDF时,意味着软件由线程状态转变为函数状态,后文将称之为“NDF状态”。而处于“NDF状态”依然可以继续调用NDF,继续嵌套“NDF状态”。因此,从逻辑上看,当软件处于线程状态时,事实上等效于处于NDF嵌套层级的最顶层一级的特殊函数状态。由于所有“副线程”在被创建的时候也会被分配独立的代码和数据内存/缓存空间,所以从逻辑上看,软件的“线程状态”应该被定义为“进程”中的一个同步分支的顶层“NDF状态”。所以,后文将软件的“线程状态”称之为NDF0,而在NDF0下一级的嵌套NDF称之为NDF1,再下一级称之为NDF2,以此例推。在后文关于本发明更深入的阐述中,以NDFn表示“当前层级的NDF”,以NDFn+1表示“下一层级的NDF”,以NDFn-1表示“上一层级的NDF”,以NDFx表示非NDF0(NDF则表示NDF0或者非NDF0),以NDFm表示“主线程”NDF0,以NDFv表示“副线程”NDF0(NDF0则表示NDFm或者NDFv)。
本发明技术,实现以下对于软件在内核运行过程中的限制:
1. 只有NDFm能够创建NDFv;
2. 只有NDF0能够初始化NDFx,即只有NDF0能够为NDFx指定或者分配其所辖内存或缓存区域;
3. 处于任何层级的NDFx所能访问的内存或缓存的区域范围在与其同属一个“线程”内的NDF0所能访问的内存或缓存范围之内;
4. NDFm可以访问NDFv所辖的内存或缓存范围,但NDFv不能访问NDFm所辖的但不属于NDFv所辖的内存或缓存范围;
5. NDF0可以访问与其同属一个“线程”内的NDFx所辖的内存或缓存范围,但同属一个“线程”内的NDFx不能访问NDF0所辖的但不属于NDFx所辖的内存或缓存范围;
6. 不同NDFv之间不能互相访问对方所辖内存或缓存范围;
7. 同属一个“线程”内的任意NDFx之间不能相互访问对方所辖内存或缓存范围;
8. NDFv不能访问除其所辖内存或缓存设备以外的其它任何设备,即NDFv只能通过内核的系统总线接口访问其所辖内存或缓存设备,而不能通过内核的系统总线接口访问其它设备;
9. NDFx不能访问除其所辖内存或缓存设备以外的其它任何设备,即NDFx只能通过内核的系统总线接口访问其所辖内存或缓存设备,而不能通过内核的系统总线接口访问其它设备。
本发明技术,在上述限制条件下,由NDF0在同属一个“线程”内的NDF之间构建共享内存或缓存区域来实现它们之间的输入或输出数据交互,该共享内存或缓存区域被称之为“共享区”。
附图说明
图1是本发明方案所涉及的电路结构框图;
图2是链接过程的逻辑示意图;
图3是例化程序时的例化信息描述的数据结构图;
图4是为记录被例化程序相关信息的数据结构图;
下面将以明确易懂的方式,结合附图说明优先实施方式,对本方案的上述特点、技术特点、优点及其实施方式予以进一步说明。
图1所示,为本发明方案所涉及的一种可实现的处理器基础结构的典型概念图,所代表的是一种可以满足本发明需求的硬件结构,但并不代表本方案需要限制为该种硬件结构;
图1所示,由于本发明方案所涉及硬件在于内核内部,即假定在内核外部的代码和数据均存在其它技术提供安全保障,所以举例实现了一个内核的处理器硬件结构;
图1所示,带箭头实线表示软件所辖代码及数据在处理器内部,包括内核内部的传输路线示意;
图1所示,“处理器内部总线控制器”是处理器集成内核及其它硬件部件的硬件控制器;
图1所示,“系统内存”为处理器内部或外部用于大容量随机存储软件代码、用户数据、等其它形式的数据的失忆性存储部件或设备;
图1所示,“指令共享缓存”为处理器内部用于缓存代码的专用缓存,并表示该缓存排除软件层面的访问权限问题,在物理上可以被处理器内部内核(如果存在多个内核)或其它相关设备访问;
图1所示,“指令内核缓存”为处理器内核内部用于缓存代码的专用缓存,并表示该缓存即便排除软件层面的访问权限问题,在物理上除其所在内核以外,其它内核(如果存在多个内核)或硬件设备均不能对该缓存进行访问;
图1所示,“指令耦合缓存”为处理器内部最后一级用于缓存代码的专用缓存,并表示该缓存以外没有其它专用缓存直接与内核流水线在物理上存在连接;
图1所示,“数据共享缓存”为处理器内部用于缓存数据的专用缓存,并表示该缓存排除软件层面的访问权限问题,在物理上可以被处理器内部内核(如果存在多个内核)或其它相关设备访问;
图1所示,“数据内核缓存”为处理器内核内部用于缓存数据的专用缓存,并表示该缓存即便排除软件层面的访问权限问题,在物理上除其所在内核以外,其它内核(如果存在多个内核)或硬件设备均不能对该缓存进行访问;
图1所示,“数据耦合缓存”为处理器内部最后一级用于缓存数据的专用缓存,并表示该缓存以外没有其它专用缓存直接与内核流水线在物理上存在连接;
图1所示,“内核流水线”为具体执行程序代码的内核硬件模块。
图2所示,为本发明方案所实现的,软件在内核流水线中运行示意图。图中示意了NDF0内嵌了3级NDF的应用场景,分别为:
NDF0在进入内核流水线一段时间后内嵌NDF1,如图中虚线L01所示,在经历一段程序运行(如图中所示NSP),随后进入NDF1运行,如图中虚线L1所示;
NDF1在运行一段时间后内嵌NDF2,如图中虚线L12所示,在经历一段程序运行(如图中所示NSP),随后进入NDF2运行,如图中虚线L2所示;
NDF2在运行一段时间后内嵌NDF3,如图中虚线L23所示,在经历一段程序运行(如图中所示NSP),随后进入NDF3运行,如图中虚线L3所示;
NDF3完成既定任务后,欲返回至NDF2,如图中虚线R32所示,在经历一段程序运行(如图中所示NSP),随后进入NDF2继续运行,如图中虚线R2所示;
NDF2完成既定任务后,欲返回至NDF1,如图中虚线R21所示,在经历一段程序运行(如图中所示NSP),随后进入NDF1继续运行,如图中虚线R1所示;
NDF1完成既定任务后,欲返回至NDF0,如图中虚线R10所示,在经历一段程序运行(如图中所示NSP),随后进入NDF0继续运行,如图中虚线R0所示。
图2所示,NSP是NDF Service Program的英文缩写,表示“NDF服务程序”。NSP是NDFm的一部分,虽然不能被定义为NDF,但是NSP同样为动态寻址,即NSP代码中所体现的指令地址以及变量地址均以可以被动态设置的地址为基地址。NSP拥有NDFm或者NDFv的所有权限,在软件运行过程中,NDFm和NDFv都会拥有各自独立的NSP,为了更容易区分NSP的隶属,下文将NDFm中的NSP称之为NSPm,而将NDFv中的NSP称之为NSPv,且将NSPm和NSPv统称为NSP。在软件运行过程中,NSPv虽然与NSPm互为独立的关系,但是NSPv并不是独立的程序,它是NSPm自我克隆的版本,除了对于耦合缓存访问区域的权限有所区别以外,NSPv与NSPm之间并没有其它的区别。
在软件运行过程中,NSP完成所有NDFn链接NDFn+1的请求,并在初始化NDFn+1之后,令软件进入NDFn+1。NSP还具体完成NDFn返回到NDFn-1的请求,并在完成相关数据的维护,以及完成释放NDFn所占硬件资源后,令软件进入NDFn-1。NSPm还需完成NDFn创建NDFv的请求。NSP还可以完成NDFn不具备访问权限的相关操作,比如对于内核总线接口的操作,并在完成相关操作后返回NDFn。
图2所示,“链接返回”是指NDFn在返回之前准备好对于有NDF0所设置的“共享区”的数据写入(当然,如果没有任何输出,或是在NDFn运行中已完成对“共享区”的写入则不需要“链接返回”这一操作)。
图3所示,为在NDF所辖数据内存或缓存中固定位置的固定长度的一段数据,该段数据简称为NLI,表示“NDF链接信息”,英文NDF Link Information的缩写,后文将NDF0所对应的NLI简写为NLI0,NDFn-1、NDFn和NDFn+1所对应的NLI分别简写为NLIn-1、NLIn和NLIn+1,NDFm和NDFv所对应的NLI分别简写为NLIm和NLIv,将NDFx所对应的NLI简写为NLIx。NLI包含如图3所示必要信息项目:
1、线程号,该信息表示当前NDF所隶属线程的线程号。NDFm在创建NDFv时,会为NDFv分配一个唯一的线程号,此后NDFv内嵌的所有NDFx都将继承该线程号,即所有同属一条线程的NDFx,其NLI中的线程号信息相同。线程号信息的主要功能是为了当链接某一NDFx出错时,可以为软件异常处理提供足够充足的问题定位的信息;
2、NDFn-1例化号,该信息表示上一级NDF的例化号。NSP初始化NDFx的过程,即为对NDFx原参考程序文件的例化过程,后文将“原参考程序文件”简称为PRF,即英文ProgramReference File的缩写,将对应于NDFn的PRF简写为PRFn,将对应于NDFx的PRF简写为PRFx,以及将对应于NDFn-1和NDFn+1的PRF分别简写为PRFn-1和PRFn+1。在NSP例化某一NDFx时,会为该NDFx分配一个唯一的例化号,用于对该NDFx的标识符。该标识符会关联到如图4所示的数据结构,图4所示数据结构用于描述为NDFx所分配的内存或缓存信息,以及PRFx的信息。后文将图4所示数据结构简写为NII,即英文NDF Instance Information的缩写,表示“NDF例化信息”, 将NDF0所对应的NII记录项简写为NII0,NDFx、NDFn-1、NDFn和NDFn+1所对应的NII记录项分别简写为NIIx、NIIn-1、NIIn和NIIn+1,NDFm和NDFv所对应的NII记录项分别简写为NIIm和NIIv。NDFn-1例化号信息的功能是当NDFn返回的时候,NSP可以依据该信息检索出上一级NDF的所有必要信息;
3、NDFn例化号,该信息表示当前一级NDF的例化号;
4、DLF文件名,该信息表示记录PRFn所在位置信息的文件的文件名。DLF是DynamicLibrary File的英文缩写,表示“动态链接库文件”。DLF记录某一集合了一个或多个PRF的动态链接库的文件位置信息,以及该动态链接库中所有NDF的PRF的功能描述信息,以及记录所有NDF的PRF的“链接符号”。NDFn链接到NDFn+1时,并不直接完成对PRFn+1的检索,而仅仅是向NSP提供“NDFn+1链接符号”,由NSP完成对PRFn+1的检索,并最终完成将PRFn+1例化为NDFn+1;
5、NS类型,该信息表示NDFn期望NSP所提供的服务类型,NS是NDF Service的英文缩写,即表示“NDF服务”。NS类型可以为:“链接NDF”、“NDF返回”、“创建NDFv”、“NDF1初始化”、以及“用户自定义服务”。其中“链接NDF”、“NDF返回”、“创建NDFv”、和“NDF1初始化”为NSP提供的必要NDF服务,而“用户自定义服务”为可选NDF服务。“链接NDF”表示NDFn希望NSP完成对由“NDFn+1链接符号”所检索出的PRFn+1进行例化,随后进入NDFn+1运行。“NDF返回”表示NDFn希望返回至NDFn-1,希望NSP完成返回过程中对相关数据的维护和对NDFn所占硬件资源的释放。“创建NDFv”完成对NDFv进行内存/缓存空间分配,完成NSPm自我克隆为NSPv。“NDF1初始化”完成载入DLF,并链接“主/副线程”的默认的NDF1。即事实上,“NDF1初始化”覆盖了“链接NDF”的功能,只不过是默认连接“链接符号”为1的NDF,且“NDF1初始化”多出了载入DLF的功能(NDFv事实上只是一个虚拟的NDF,它并不实现软件的具体的用户功能,只完成NSPv的功能。对于NDF0而言,从软件工程的角度出发,只是希望NDF0完成对线程的引导。本质上,或者说为了动态链接库具有更好的扩展性,对于NDFm而言,不应在其中实现软件的具体的用户功能,而应该将具体的用户功能放在以NDF1开始的NDFx中。不过,NDFm具有实现具体的用户功能的权限,但NDFv不具备);
6、NDFn返回地址,该信息表示NDFn在链接NDFn+1之后,NDFn+1完成既定任务返回时,NDFn继续运行的指令地址。NDFn返回地址信息会在NSP例化PRFn+1的过程中写入到用于描述NDFn+1的NIIn+1中的“NDF返回地址”。当某一NDFn需要返回到NDFn-1时,NDFn本身并不能直接通过使用NDFn-1的返回地址来实现跳转,而只能通过向NSP发出“NDF返回”的NDF服务请求,最终由NSP根据NIIn的记录信息完成NDFn的返回过程;
7、NDFn+1链接符号,该信息表示NDFn所期望链接的下一级NDF的“链接符号”。当NSP 执行NDFn发出的“链接NDF”的NDF服务请求时,NSP会依据NDFn+1链接符号这一信息检索出NDFn+1所有相关信息,并完成将PRFn+1例化成为NDFn+1,随后进入NDFn+1。
图4所示,为NSP所维护的在例化NDF时,关于描述NDF所辖内存/缓存信息以及PRF所在位置的检索信息的数据结构,该段数据简称为NII,表示“NDF例化信息”,英文NDFInstance Information的缩写。NSP在将PRFn例化成NDFn的过程中,会为NDFn分配一个唯一的“例化号”,并将该“例化号”与NIIn形成唯一性的关联关系。NIIn包含如图1所示必要信息项目:
1、NDF链接符号,该信息表示用于检索NIIn所关联的NDFn的PRFn所在位置的唯一标识符号。NDF链接符号是由NDFn在初始阶段加载DLF(如图3所示“DLF文件名”信息)时分配的,NDF链接符号关联NDFn加载DLF文件后所建立的数据结构中关于描述NDFn功能及其PRFn等信息;
2、指令非耦合缓存信息,该信息表示NIIn所关联的NDFn所能访问的用于缓存代码的非耦合缓存的范围。“指令非耦合缓存”是指除如图1所示的“指令耦合缓存”以外的其它缓存,如图1所示,“指令非耦合缓存”则可以包括“指令内核缓存”、“指令共享缓存”、以及“系统内存”中用于存储代码的内存区域。指令非耦合缓存信息是NSP在将PRFn例化为NDFn的过程中,分配给NDFn可以使用的用于存储代码的内存和/或缓存区域。当NDFn开始运行,内核流水线硬件会依据指令非耦合缓存信息限制NDFn所能访问的“指令非耦合缓存”的区域;
3、数据非耦合缓存信息,该信息表示NIIn所关联的NDFn所能访问的用于缓存数据的非耦合缓存的范围。“数据非耦合缓存”是指除如图1所示的“数据耦合缓存”以外的其它缓存,如图1所示,“数据非耦合缓存”则可以包括“数据内核缓存”、“数据共享缓存”、以及“系统内存”中用于存储数据的内存区域。数据非耦合缓存信息是NSP在将PRFn例化为NDFn的过程中,分配给NDFn可以使用的用于存储数据的内存和/或缓存区域。当某NDFn开始运行,内核流水线硬件会依据数据非耦合缓存信息限制NDFn所能访问的“数据非耦合缓存”的区域;
4、指令耦合缓存信息,该信息表示NIIn所关联的NDFn所能访问的用于缓存代码的耦合缓存的范围。“指令耦合缓存”是指如图1所示的“指令耦合缓存”。指令耦合缓存信息是NSP在将PRFn例化为NDFn的过程中,分配给NDFn可以使用的用于存储代码的唯一与流水线硬件存在物理连接的缓存区域。当某NDFn开始运行,内核流水线硬件会依据指令耦合缓存信息限制NDFn所能访问的“指令耦合缓存”的区域;
5、数据耦合缓存信息,该信息表示NIIn所关联的NDFn所能访问的用于缓存数据的耦合缓存的范围。“数据耦合缓存”是指如图1所示的“数据耦合缓存”。数据耦合缓存信息是NSP在将PRFn例化为NDFn的过程中,分配给NDFn可以使用的用于存储数据的唯一与流水线硬件存在物理连接的缓存区域。当某NDFn开始运行,内核流水线硬件会依据数据耦合缓存信息限制NDFn所能访问的“数据耦合缓存”的区域;
6、NDF返回地址,该信息表示NIIn所关联的NDFn在NDFn+1返回的时,NDFn将继续运行的指令地址。该信息会在NSP执行NDFn+1的返回服务时被NSP读取,并在完成NDFn+1的所有返回操作后,令软件进入NDFn,并从该信息所指向的指令地址继续运行。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,并获得其它的实时方式。
为了使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构或流程。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
实施例1
本发明的一个实施例,本发明技术方案中所涉及NDFm在启动初始阶段进行对DLF的加载,并调用动态链接库中默认的动态链接函数,即默认链接NDF1,包括步骤:
1、在操作系统或者其它父进程的操作下,创建本实施例进程,进程进入内核流水线,进入NDFm状态的启动初始阶段。在进程进入内核流水线之前,进程的创建者(操作系统或其它父进程)为该进程初始化了如图3所示的NLIm,并且令NLIm中的“线程号”为0,令NLIm中的“NDFn-1例化号”为0,令NLIm中的“NDFn例化号”为0,令NLIm中的“DLF文件名”为记录该进程将需动态链接的动态链接库信息(即动态链接库中所有PRF信息)的文件的文件路径;
2、NDFm执行“NSP设置”指令,该指令以字符“NSPSET”作为指令符号,但不限制仅使用“NSPSET”作为指令符号。NSPSET指令会向NDFm所在流水线硬件写入即将由NSPm所开辟的内存/缓存区域的相关信息,以及写入NSPm程序入口的基地址信息。任何NDFx都不能直接使用内核的跳转指令跳转到NDFx所辖指令内存/缓存区域以外的指令地址,当NDFx需要转入到NSP,执行相关NSP服务时,只能通过“NSP调用”指令(后文其它实施例中将详细阐述“NSP调用”指令),由流水线硬件直接跳转到由NSPSET指令所设置的NSP程序的入口基地址(NDFx会被流水线硬件限制不能执行NSPSET指令),开始NSP的执行。NSPSET指令包含以下必要参数:“NSP所辖内存/指令非耦合缓存信息”、“NSP所辖内存/数据非耦合缓存信息”、“NSP所辖指令耦合缓存基地址”、“NSP所辖指令耦合缓存最大偏移地址”、“NSP数据耦合缓存基地址”、“NSP数据耦合缓存最大偏移地址”;
3、NDFm修改NLIm中的“NS类型”,令“NS类型”为“NDF1初始化”。修改NLIm中的“NDFn返回地址”,令“NDFn返回地址”为NDFm所期望的指令地址(如果NDFm中并不打算包含软件的具体的用户功能,那么该返回地址所对应的指令应该为实现退出进程的指令)。修改NLIm中的“NDFn+1链接符号”,令“NDFn+1链接符号”为NDF1的链接符号。随后,NDFm执行“设置交互区域”指令,该指令以字符“NDFSIO”作为指令符号,但不限制仅使用“NDFSIO”作为指令符号,NDFSIO包含以下必要参数:“数据耦合缓存基地址”、“数据耦合缓存最大偏移地址”。当硬件执行NDFSIO指令时,会依据该指令参数设置一个数据耦合缓存区域,该区域可以被所有NDFx访问。随后,NDFm执行“NSP调用”指令,该指令以字符“NSPCALL”作为指令符号,但不限制仅使用“NSPCALL”作为指令符号,当硬件执行NSPCALL指令时,会将NLIm的所有信息复制到NSPm所辖数据耦合缓存中的固定位置(后文将复制到NSPm所辖数据耦合缓存固定位置中的NLI称之为NLIs),并且令流水线指令地址自动跳转到由NSPSET指令所设置的“NSPm程序入口的基地址”,开始NSPm的执行;
4、NSPm开始执行“NDF1初始化”的服务,NSPm依据NLIs中的“DLF文件名”加载DLF,并建立“链接符号”与PRF的关联数据结构(后文将这一“关联数据结构”简称为PLS,即英文Program Link Structure的缩写)。NSPm依据NLIs中的“NDFn+1链接符号”从所构件的PLS中检索出PRF,并为例化该PRF分配唯一的“例化号”,为例化该PRF创建“指令非耦合缓存(或内存)空间”,为例化该PRF创建“数据非耦合缓存(或内存)空间”,为例化该PRF创建“指令耦合缓存空间”,为例化该PRF创建“数据耦合缓存空间”。NSPm依据所分配的“例化号”,在NSPm所辖的NII中添加与“例化号”相对应的一条信息记录,即为NII1,NII1对应于NDF1。令NII1中的“NDF链接符号”为NLIs中的“NDFn+1链接符号”,令NII1中的“指令非耦合缓存信息”为上述所创建的“指令非耦合缓存(或内存)空间”的具体信息,令NII1中的“数据非耦合缓存信息”为上述所创建的“数据非耦合缓存(或内存)空间”的具体信息,令NII1中的“指令耦合缓存信息”为上述所创建的“指令耦合缓存空间”的具体信息,令NII1中的“数据耦合缓存信息”为上述所创建的“数据耦合缓存空间”的具体信息,令NII1中的“NDF返回地址”为NLIs中的“NDFn返回地址”。NSPm在为NDF1所创建的“数据耦合缓存空间”的固定位置创建NDF1所辖的NLI1,令NLI1中的“线程号”为NLIs中的“线程号”,令NLI1中的“NDFn-1例化号”为0,令NLI1中的“NDFn例化号”为上述NSPm所分配的“例化号”,令NLI1中的“DLF文件名”为PLS中对应于“NDF1链接符号”的DLF文件名,令NLI1中的“NDFn返回地址”为NLIs中的“NDFn返回地址”。随后,NSPm跳转至NDF1程序入口地址,开始NDF1的执行。
实施例2
本发明的一个实施例,在实施例1的基础上,NSPm以新建线程的方式调用动态链接库中的动态链接函数,即NSPm新建NDFv(亦即完成NSPm自我克隆为NSPv,因为NDFv实际上只有NSPv的功能),并将所需调用的动态链接函数在新线程中例化为NDF1,并开始NDF1的执行,包括步骤:
1、“主线程”中NDFn确定以新建线程的方式调用某一已知“链接符号”的动态链接函数,定义为NDFx,其“链接符号”为“NDFx链接符号”。NDFn修改NLIn,令NLIn中的“DLF文件名”为PLS中关联于“NDFx链接符号”的DLF文件名,令NLIn中的“NS类型”为“创建NDFv”,令NLIn中的“NDFn返回地址”为NDFn所需返回的指令地址,令NLIn中的“NDFn+1链接符号”为NDFx的链接符号。NDFn执行NSPCALL指令,当硬件执行NSPCALL指令时,会将NLIn的所有信息复制到NLIs中,并且令流水线指令地址自动跳转到由NSPSET指令所设置的“NSPm程序入口的基地址”,开始NSPm的执行;
2、NSPm为NDFv分配唯一的“线程号”,NSPm将NLIs中的“线程号”修改为上述所分配唯一的“线程号”。NSPm为NSPv创建“指令非耦合缓存(或内存)空间”,为NSPv创建“数据非耦合缓存(或内存)空间”,为NSPv创建“指令耦合缓存空间”,为NSPv创建“数据耦合缓存空间”,为NDFv创建“指令耦合缓存空间”,为NDFv创建“数据耦合缓存空间”。其中NDFv所辖“指令耦合缓存空间”是指“副线程”能够访问的总的指令耦合缓存空间,其包括NSPv所辖的“指令耦合缓存空间”的范围,以及“副线程”中后续所有NDFx所辖的“指令耦合缓存空间”的范围。其中NDFv所辖“数据耦合缓存空间”是指“副线程”能够访问的总的数据耦合缓存空间,其包括NSPv所辖的“数据耦合缓存空间”的范围,以及“副线程”中后续所有NDFx所辖的“数据耦合缓存空间”的范围;
3、NSPm在NSPv所辖“数据耦合缓存空间”中的固定位置为NSPv初始化其NLI,此处简写为NLIsv,并且令NLIsv中的“线程号”为NLIs中的“线程号”,令NLIsv中的“NDFn-1例化号”为0,令NLIsv中的“NDFn例化号”为0,令NLIsv中的“DLF文件名”为NLIs中的“DLF文件名”,令NLIsv中的“NS类型”为“NDF1初始化”,令NLIsv中的“NDFn+1链接符号”为NLIs中的“NDFn+1链接符号”;
4、NSPm执行“NSP获取”指令,该指令以字符“NSPGET”作为指令符号,但不限制仅使用“NSPGET”作为指令符号。NSPGET指令获取由NSPSET指令所设置的保存于流水线硬件寄存器内的“NSPm所辖内存/指令非耦合缓存信息”,并依据“NSPm所辖内存/指令非耦合缓存信息”所指向的内存/指令非耦合缓存中的NSPm的所有程序代码复制到上述由NSPm所创建的隶属于NSPv的“指令非耦合缓存(或内存)空间”中,并完成NSPv必要代码从“指令非耦合缓存(或内存)空间”到NSPv所辖“指令耦合缓存空间”的缓存转换操作;
5、NSPm执行“新建动态线程”指令,该指令以字符“THRDD”作为指令符号,但不限制仅使用“THRDD”作为指令符号。THRDD指令将依据指定的参数创建新的线程,并开始执行新线程,THRDD包含以下必要参数:“副线程号”、“副线程指令耦合缓存信息”、“副线程数据耦合缓存信息”、“NSPv所辖内存/指令非耦合缓存信息”、“NSPv所辖内存/数据非耦合缓存信息”、“NSPv所辖指令耦合缓存基地址”、“NSPv所辖指令耦合缓存最大偏移地址”、“NSPv所辖数据耦合缓存基地址”、“NSPv所辖数据耦合缓存最大偏移地址”。参数“副线程号”为NLIs中的“线程号”。参数“副线程指令耦合缓存信息”为NSPm为NDFv创建“指令耦合缓存空间”,该参数将限制NDFv所能够使用的“指令耦合缓存”的区域,即NDFv不能访问超越该参数所设定的“指令耦合缓存”区域之外的区域。参数“副线程数据耦合缓存信息”为NSPm为NDFv创建“数据耦合缓存空间”,该参数将限制NDFv所能够使用的“数据耦合缓存”的区域,即NDFv不能访问超越该参数所设定的“数据耦合缓存”区域之外的区域。参数“NSPv所辖内存/指令非耦合缓存信息”为NSPm为NSPv创建的“指令非耦合缓存(或内存)空间”。参数“NSPv所辖内存/数据非耦合缓存信息”为NSPm为NSPv创建的“数据非耦合缓存(或内存)空间”。参数“NSPv所辖指令耦合缓存基地址”为NSPm为NSPv创建的“指令耦合缓存空间”的基地址。参数“NSPv所辖指令耦合缓存最大偏移地址”为NSPm为NSPv创建的“指令耦合缓存空间”的最大偏移地址。参数“NSPv所辖数据耦合缓存基地址”为NSPm为NSPv创建的“数据耦合缓存空间”的基地址。参数“NSPv所辖数据耦合缓存最大偏移地址”为NSPm为NSPv创建的“数据耦合缓存空间”的最大偏移地址。THRDD指令的所有参数均为流水线硬件寄存器所寄存,其中“NSPv所辖内存/指令非耦合缓存信息”、“NSPv所辖内存/数据非耦合缓存信息”、“NSPv所辖指令耦合缓存基地址”、“NSPv所辖指令耦合缓存最大偏移地址”、“NSPv所辖数据耦合缓存基地址”、“NSPv所辖数据耦合缓存最大偏移地址”与指令NSPSET所设置的相对应的参数相同,即以流水线硬件中同样的寄存器寄存,所以NSPGET指令所获取的信息与上述THRDD所设置的相关参数的信息一致。NSPm执行完THRDD指令后,依据NLIs中的“NDFn-1例化号”恢复NDFn-1的状态,并依据NLIs中的“NDFn返回地址”跳转到相应指令地址。与此同时,NDFv开始运行,由于此时NDFv的指令耦合缓存中只有NSPv的程序,所以实际上是NSPv开始运行;
6、NSPv依据NLIs中的“NS类型”(此处的NLIs即为步骤3所述NLIsv),开始执行“NDF1初始化”的服务。NSPv依据NLIs中的“DLF文件名”加载DLF,并建立“链接符号”与NDF的PRF的关联数据结构PLS。NSPv依据NLIs中的“NDFn+1链接符号”从所构件的PLS中检索出PRF,并为例化该PRF分配唯一的“例化号”(由于“副线程”独立于“主线程”,因此“副线程”拥有独立的关于“例化号”管理的数据结构),为例化该PRF创建“指令非耦合缓存(或内存)空间”,为例化该PRF创建“数据非耦合缓存(或内存)空间”,为例化该PRF创建“指令耦合缓存空间”,为例化该PRF创建“数据耦合缓存空间”。NSPv依据所分配的“例化号”,在NSPv所辖的NII中添加与“例化号”相对应的一条信息记录,即为NII1,NII1对应于NDF1。令NII1中的“NDF链接符号”为NLIs中的“NDFn+1链接符号”,令NII1中的“指令非耦合缓存信息”为上述所创建的“指令非耦合缓存(或内存)空间”的具体信息,令NII1中的“数据非耦合缓存信息”为上述所创建的“数据非耦合缓存(或内存)空间”的具体信息,令NII1中的“指令耦合缓存信息”为上述所创建的“指令耦合缓存空间”的具体信息,令NII1中的“数据耦合缓存信息”为上述所创建的“数据耦合缓存空间”的具体信息,令NII1中的“NDF返回地址”为NLIs中的“NDFn返回地址”。NSPv在为NDF1所创建的“数据耦合缓存空间”的固定位置创建NDF1所辖的NLI1,令NLI1中的“线程号”为NLIs中的“线程号”,令NLI1中的“NDFn-1例化号”为0,令NLI1中的“NDFn例化号”为上述NSPv所分配的“例化号”,令NLI1中的“DLF文件名”为PLS中对应于“NDF1链接符号”的DLF文件名,令NLI1中的“NDFn返回地址”为NLIs中的“NDFn返回地址”。随后,NSPv跳转至NDF1程序入口地址,开始NDF1的执行。
实施例3
本发明的一个实施例,在实施例1或者实施例2的基础上,完成非NDF0的NDFn链接到NDFn+1,包括步骤:
1、NDFn确定需要链接的NDFn+1的“功能描述”,依据“功能描述”从PRF中检索出对应的“NDF链接符号”;
2、NDFn修改NLIn,令NLIn中的“NS类型”为“链接NDF”,令NLIn中的“NDFn返回地址”为NDFn所期望的返回地址,令NLIn中的“NDFn+1链接符号”为步骤1所检索出的“NDF链接符号”;
3、NDFn执行NSPCALL指令,开始NSP的执行;
4、NSP为NDFn+1分配唯一的“例化号”,NSP将NLIs中的“NDFn-1例化号”修改为NLIs中的“NDFn例化号”,NSP将NLIs中的“NDFn例化号”修改为NSP为NDFn+1分配的“例化号”。NSP为NDFn+1创建“指令内存/非耦合缓存空间”,NSP为NDFn+1创建“数据内存/非耦合缓存空间”,NSP为NDFn+1创建“指令耦合缓存空间”,NSP为NDFn+1创建“数据耦合缓存空间”。NSP在NII中新建一条记录NIIn+1,令NIIn+1中的“NDF链接符号”为NLIs中的“NDFn+1链接符号”,令NIIn+1中的“指令非耦合缓存信息”为上述NSP所创建“指令内存/非耦合缓存空间”的信息,令NIIn+1中的“数据非耦合缓存信息”为上述NSP所创建“数据内存/非耦合缓存空间”的信息,令NIIn+1中的“指令耦合缓存信息”为上述NSP所创建“指令耦合缓存空间”的信息,令NIIn+1中的“数据缓存信息”为上述NSP所创建“数据耦合缓存空间”的信息,令NIIn+1中的“NDF返回地址”为NLIs中的“NDFn返回地址”。NSP将NLIs复制到NSP为NDFn+1所创建的“数据耦合缓存空间”中的固定位置,随后,NSP跳转至NDFn+1程序入口地址,开始NDFn+1的执行。
实施例4
本发明的一个实施例,在实施例1或者实施例2的基础上,以及在实施例3的基础上,完成NDFn返回至NDFn-1,包括步骤:
1、NDFn完成既定任务,修改NLIn,令NLIn中的“NS类型”为“NDF返回”,随后执行“NSP返回”指令,该指令以字符“NSPBACK”作为指令符号,但不限制仅使用“NSPBACK”作为指令符号。流水线在执行NSPBACK指令时,会将NLIn的内容复制到NLIs,并依据由指令NSPSET或THRDD所设置的寄存于流水线硬件寄存器当中的“NSP程序入口的基地址信息”跳转至NSP程序入口,开始NSP的执行;
2、NSP依据NLIs中的“NS类型”为“NDF返回”的信息,执行NDF返回的NSP服务。NSP判断NLIs中的“线程号”是否为0,如果“线程号”为0表示当前NSP为NSPm,否则NSP为NSPv。当NSP为NSPv时,NSPv判断NLIs中的“NDFn-1例化号”是否为0,如果为0,则表示当前“副线程”结束。否则,NSPv依据NLIs中的“NDFn-1例化号”从NIIn中读出出NDFn-1的“指令非耦合缓存信息”、“数据非耦合缓存信息”、“指令耦合缓存信息”、“数据耦合缓存信息”、以及“NDF返回地址”,依据上述关于非耦合缓存信息及耦合缓存信息恢复NDFn-1的缓存状态,恢复流水线硬件关于内存/缓存访问区域范围设定的寄存器状态,NSPv删除NIIn,随后令指令地址跳转至“NDF返回地址”,开始NDFn-1的执行。当NSP为NSPm时,NSPm依据NLIs中的“NDFn-1例化号”从NIIn中读出NDFn-1的“指令非耦合缓存信息”、“数据非耦合缓存信息”、“指令耦合缓存信息”、“数据耦合缓存信息”、以及“NDF返回地址”,依据上述关于非耦合缓存信息及耦合缓存信息恢复NDFn-1的缓存状态,恢复流水线硬件关于内存/缓存访问区域范围设定的寄存器状态,NSPm删除NIIn,随后令指令地址跳转至“NDF返回地址”,开始NDFn-1的执行。
Claims (10)
1.实现新建被约束权限的动态线程的方法,其特征在于:
软件程序在处理器内核流水线硬件中执行THRDD指令。
2.实现在线程中不同函数之间数据交互的方法,其特征在于:
软件程序在处理器内核流水线硬件中执行NDFSIO指令。
3.实现对NSP程序所辖内存/缓存设置以及对NSP程序入口的基地址设置的方法,其特征在于:
软件程序在处理器内核流水线硬件中执行NSPSET指令。
4.实现NSP程序获取其所辖内存/缓存信息的方法,其特征在于:
软件程序在处理器内核流水线硬件中执行NSPGET指令。
5.实现函数调用NSP程序的方法,其特征在于:
软件程序在处理器内核流水线硬件中执行NSPCALL指令。
6.实现NSP程序返回到函数的方法,其特征在于:
软件程序在处理器内核流水线硬件中执行NSPBACK指令。
7.实现动态函数链接及返回的数据结构,其特征在于:
软件程序在其所辖内存/缓存中构建如图3所示,或者比图3所示更多内容的数据结构。
8.实现动态函数链接及返回时进行相关信息检索的数据结构,其特征在于:
软件程序在其所辖内存/缓存中构建如图4所示,或者比图4所示更多内容的数据结构。
9.根据权利要求1至权利要求8,在线程中实现能自我克隆的动态运行程序依据对不同函数的调用而达到线程所辖权限不同的方法,其特征在于,包括步骤:
在线程中实现如图2所示NSP功能的可动态运行的程序;
在线程中实现如图2所示L01、L1、L12、L2、L23、L3、R32、R2、R21、R1、R10、R0相同或相似的关于调用函数,以及关于函数返回的流程。
10.根据权利要求1至权利要求9,实现一种对于在处理器内核流水线硬件中运行于不同状态下的软件程序的权限约束的方法,其特征在于,包括以下必要条件:
条件1、只有NDFm能够创建NDFv;
条件2、只有NDF0能够初始化NDFx,即只有NDF0能够为NDFx指定或者分配其所辖内存或缓存区域;
条件3、处于任何层级的NDFx所能访问的内存或缓存的区域范围在与其同属一个“线程”内的NDF0所能访问的内存或缓存范围之内;
条件4、NDFm可以访问NDFv所辖的内存或缓存范围,但NDFv不能访问NDFm所辖的但不属于NDFv所辖的内存或缓存范围;
条件5、NDF0可以访问与其同属一个“线程”内的NDFx所辖的内存或缓存范围,但同属一个“线程”内的NDFx不能访问NDF0所辖的但不属于NDFx所辖的内存或缓存范围;
条件6、不同NDFv之间不能互相访问对方所辖内存或缓存范围;
条件7、同属一个“线程”内的任意NDFx之间不能相互访问对方所辖内存或缓存范围;
条件8、NDFv不能访问除其所辖内存或缓存设备以外的其它任何设备,即NDFv只能通过内核的系统总线接口访问其所辖内存或缓存设备,而不能通过内核的系统总线接口访问其它设备;
条件9、NDFx不能访问除其所辖内存或缓存设备以外的其它任何设备,即NDFx只能通过内核的系统总线接口访问其所辖内存或缓存设备,而不能通过内核的系统总线接口访问其它设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011346107.3A CN112363779A (zh) | 2020-11-25 | 2020-11-25 | 一种动态链接程序的安全控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011346107.3A CN112363779A (zh) | 2020-11-25 | 2020-11-25 | 一种动态链接程序的安全控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112363779A true CN112363779A (zh) | 2021-02-12 |
Family
ID=74533593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011346107.3A Pending CN112363779A (zh) | 2020-11-25 | 2020-11-25 | 一种动态链接程序的安全控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363779A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022155937A1 (zh) * | 2021-01-23 | 2022-07-28 | 王志平 | 一种动态链接程序的安全控制方法 |
CN117520387A (zh) * | 2022-07-27 | 2024-02-06 | 慧与发展有限责任合伙企业 | 检测违反约束的函数链 |
CN117875264A (zh) * | 2024-03-13 | 2024-04-12 | 江苏中威科技软件系统有限公司 | 一种dlf文件动态标示的方法 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570855A (zh) * | 2004-04-30 | 2005-01-26 | 浙江大学 | Arm处理器架构的微内核设计方法 |
CN1728106A (zh) * | 2004-07-26 | 2006-02-01 | 中兴通讯股份有限公司 | 一种应用程序故障的定位方法 |
US20070113291A1 (en) * | 2005-11-17 | 2007-05-17 | Juin-Jia Dai | Method for administrating the function access |
CN101556545A (zh) * | 2009-05-22 | 2009-10-14 | 北京星网锐捷网络技术有限公司 | 一种实现进程支持的方法、装置和多线程系统 |
US20100186015A1 (en) * | 2009-01-22 | 2010-07-22 | International Business Machines Corporation | Method and apparatus for implementing a transactional store system using a helper thread |
CN103020498A (zh) * | 2012-11-19 | 2013-04-03 | 广东亚仿科技股份有限公司 | 一种智能化动态权限控制方法和系统 |
CN103761089A (zh) * | 2014-01-14 | 2014-04-30 | 清华大学 | 基于寄存器传输语言确定动态函数调用关系的方法 |
CN104636259A (zh) * | 2015-03-18 | 2015-05-20 | 厦门雅迅网络股份有限公司 | 一种基于运行期动态跟踪的函数执行超时与死锁检测方法 |
CN105094953A (zh) * | 2014-05-09 | 2015-11-25 | 华为技术有限公司 | 数据访问方法及装置 |
US20160034397A1 (en) * | 2013-04-16 | 2016-02-04 | Huawei Technologies Co., Ltd. | Method and Apparatus for Processing Data and Computer System |
CN105426221A (zh) * | 2015-12-16 | 2016-03-23 | 广州华多网络科技有限公司 | 通过jvm安全上下文实现缓存的方法和系统 |
WO2016154115A1 (en) * | 2015-03-20 | 2016-09-29 | Mill Computing, Inc. | Cpu security mechanisms employing thread-specific protection domains |
CN106406972A (zh) * | 2016-11-04 | 2017-02-15 | 珠海市杰理科技股份有限公司 | 程序编译方法和编译器 |
CN106648749A (zh) * | 2016-11-11 | 2017-05-10 | 广州华多网络科技有限公司 | 一种可执行程序动态调用方法及系统 |
CN107818023A (zh) * | 2017-11-06 | 2018-03-20 | 深圳市雷鸟信息科技有限公司 | 基于线程的消息处理方法、智能设备及存储介质 |
CN107992344A (zh) * | 2016-10-25 | 2018-05-04 | 腾讯科技(深圳)有限公司 | 一种协程实现方法及装置 |
CN111190692A (zh) * | 2019-12-26 | 2020-05-22 | 山东乾云启创信息科技股份有限公司 | 一种基于鲲鹏处理器的监控方法、系统及可读介质 |
CN111506438A (zh) * | 2020-04-03 | 2020-08-07 | 华夏龙晖(北京)汽车电子科技股份有限公司 | 一种共享资源访问方法及装置 |
CN111771188A (zh) * | 2018-03-16 | 2020-10-13 | Arm有限公司 | 带链接分支指令的分支目标变体 |
US10831884B1 (en) * | 2019-09-16 | 2020-11-10 | International Business Machines Corporation | Nested function pointer calls |
-
2020
- 2020-11-25 CN CN202011346107.3A patent/CN112363779A/zh active Pending
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570855A (zh) * | 2004-04-30 | 2005-01-26 | 浙江大学 | Arm处理器架构的微内核设计方法 |
CN1728106A (zh) * | 2004-07-26 | 2006-02-01 | 中兴通讯股份有限公司 | 一种应用程序故障的定位方法 |
US20070113291A1 (en) * | 2005-11-17 | 2007-05-17 | Juin-Jia Dai | Method for administrating the function access |
US20100186015A1 (en) * | 2009-01-22 | 2010-07-22 | International Business Machines Corporation | Method and apparatus for implementing a transactional store system using a helper thread |
CN101556545A (zh) * | 2009-05-22 | 2009-10-14 | 北京星网锐捷网络技术有限公司 | 一种实现进程支持的方法、装置和多线程系统 |
CN103020498A (zh) * | 2012-11-19 | 2013-04-03 | 广东亚仿科技股份有限公司 | 一种智能化动态权限控制方法和系统 |
US20160034397A1 (en) * | 2013-04-16 | 2016-02-04 | Huawei Technologies Co., Ltd. | Method and Apparatus for Processing Data and Computer System |
CN103761089A (zh) * | 2014-01-14 | 2014-04-30 | 清华大学 | 基于寄存器传输语言确定动态函数调用关系的方法 |
CN105094953A (zh) * | 2014-05-09 | 2015-11-25 | 华为技术有限公司 | 数据访问方法及装置 |
CN104636259A (zh) * | 2015-03-18 | 2015-05-20 | 厦门雅迅网络股份有限公司 | 一种基于运行期动态跟踪的函数执行超时与死锁检测方法 |
WO2016154115A1 (en) * | 2015-03-20 | 2016-09-29 | Mill Computing, Inc. | Cpu security mechanisms employing thread-specific protection domains |
CN105426221A (zh) * | 2015-12-16 | 2016-03-23 | 广州华多网络科技有限公司 | 通过jvm安全上下文实现缓存的方法和系统 |
CN107992344A (zh) * | 2016-10-25 | 2018-05-04 | 腾讯科技(深圳)有限公司 | 一种协程实现方法及装置 |
CN106406972A (zh) * | 2016-11-04 | 2017-02-15 | 珠海市杰理科技股份有限公司 | 程序编译方法和编译器 |
CN106648749A (zh) * | 2016-11-11 | 2017-05-10 | 广州华多网络科技有限公司 | 一种可执行程序动态调用方法及系统 |
CN107818023A (zh) * | 2017-11-06 | 2018-03-20 | 深圳市雷鸟信息科技有限公司 | 基于线程的消息处理方法、智能设备及存储介质 |
CN111771188A (zh) * | 2018-03-16 | 2020-10-13 | Arm有限公司 | 带链接分支指令的分支目标变体 |
US10831884B1 (en) * | 2019-09-16 | 2020-11-10 | International Business Machines Corporation | Nested function pointer calls |
CN111190692A (zh) * | 2019-12-26 | 2020-05-22 | 山东乾云启创信息科技股份有限公司 | 一种基于鲲鹏处理器的监控方法、系统及可读介质 |
CN111506438A (zh) * | 2020-04-03 | 2020-08-07 | 华夏龙晖(北京)汽车电子科技股份有限公司 | 一种共享资源访问方法及装置 |
Non-Patent Citations (2)
Title |
---|
秋华: "python 并发专题(十三):asyncio (二) 协程中的多任务", 《PYTHON 并发专题(十三):ASYNCIO (二) 协程中的多任务》 * |
秋华: "python 并发专题(十三):asyncio (二) 协程中的多任务", 《PYTHON 并发专题(十三):ASYNCIO (二) 协程中的多任务》, 10 May 2020 (2020-05-10), pages 1 - 4 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022155937A1 (zh) * | 2021-01-23 | 2022-07-28 | 王志平 | 一种动态链接程序的安全控制方法 |
CN117520387A (zh) * | 2022-07-27 | 2024-02-06 | 慧与发展有限责任合伙企业 | 检测违反约束的函数链 |
CN117875264A (zh) * | 2024-03-13 | 2024-04-12 | 江苏中威科技软件系统有限公司 | 一种dlf文件动态标示的方法 |
CN117875264B (zh) * | 2024-03-13 | 2024-05-24 | 江苏中威科技软件系统有限公司 | 一种dlf文件动态标示的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112363779A (zh) | 一种动态链接程序的安全控制方法 | |
US9176713B2 (en) | Method, apparatus and program storage device that provides a user mode device interface | |
JP3454808B2 (ja) | コンピュータ処理システム及びコンピュータで実行される処理方法 | |
JP4489399B2 (ja) | プロセッサでのデータ処理方法及びデータ処理システム | |
US5956507A (en) | Dynamic alteration of operating system kernel resource tables | |
US7031989B2 (en) | Dynamic seamless reconfiguration of executing parallel software | |
JP3546678B2 (ja) | マルチos構成方法 | |
US7478390B2 (en) | Task queue management of virtual devices using a plurality of processors | |
US6411983B1 (en) | Mechanism for managing the locking and unlocking of objects in Java | |
US20080168443A1 (en) | Virtual Devices Using a Plurality of Processors | |
US20080235679A1 (en) | Loading Software on a Plurality of Processors | |
US9063805B2 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
US4562538A (en) | Microprocessor having decision pointer to process restore position | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
WO2018133713A1 (zh) | 一种线程管理方法及装置 | |
WO2024098888A1 (zh) | 模型存储优化方法及电子设备 | |
WO2022155937A1 (zh) | 一种动态链接程序的安全控制方法 | |
US9418175B2 (en) | Enumeration of a concurrent data structure | |
JPS5856277A (ja) | 情報処理装置ならびに方法 | |
JP3304928B2 (ja) | バリア同期方法およびバリア同期用プログラムを記録した記録媒体 | |
WO2012119380A1 (zh) | 一种复位向量的代码实现方法、系统及设备 | |
US5926835A (en) | Method of isolating a memory location containing an obsolete value | |
CN117667408B (zh) | 一种gpu资源共享管理调度方法及系统 | |
WO2024103258A1 (zh) | 代码执行方法、装置及设备 | |
JP2002520731A (ja) | 微細粒子分散仮想共有メモリ |
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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20240802 |