CN113064697B - 利用多硬件特性加速微内核进程间通信的方法 - Google Patents
利用多硬件特性加速微内核进程间通信的方法 Download PDFInfo
- Publication number
- CN113064697B CN113064697B CN202110356366.2A CN202110356366A CN113064697B CN 113064697 B CN113064697 B CN 113064697B CN 202110356366 A CN202110356366 A CN 202110356366A CN 113064697 B CN113064697 B CN 113064697B
- Authority
- CN
- China
- Prior art keywords
- system service
- service module
- authority
- user
- microkernel
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 201
- 230000008569 process Effects 0.000 title claims abstract description 162
- 238000004891 communication Methods 0.000 title claims abstract description 33
- 238000002955 isolation Methods 0.000 claims abstract description 22
- 238000005516 engineering process Methods 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 28
- 230000007246 mechanism Effects 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/547—Remote procedure calls [RPC]; Web services
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种利用多硬件特性加速微内核进程间通信的方法,涉及微内核进程通信技术领域,该方法包括:用户与系统步骤:在用户程序与系统服务之间,利用VMFUNC指令实现进程间通讯;系统服务步骤:在系统服务之间,将多个关联性强的系统服务模块放在同一个进程中,利用MPK技术保证不同系统服务模块组之间的隔离。本发明能够在不破坏微内核系统服务模块间隔离特性的基础上,大大提高微内核架构下进程间通信的效率,且能够结合使用VMFUNC,从而能够高效扩展Intel MPK能够支持隔离内存域的数量,从而满足更多进程内部隔离的场景需要。
Description
技术领域
本发明涉及微内核进程通信技术领域,具体地,涉及一种利用多硬件特性加速微内核进程间通信的方法。
背景技术
微内核架构是相对于宏内核架构而言的一种新兴的内核架构设计模式。不同于宏内核中所有的系统服务都运行在内核态的模式,微内核架构中的大多数系统服务模块都运行在不同的用户态进程中,例如内存管理,文件系统,设备驱动等。而内核态中只保留一些关键的系统服务,例如进程管理,进程间通信等服务。相比于宏内核的设计模式,微内核大大减少了运行在内核态代码的数量,从而减少了由于内核代码错误导致系统崩溃,内核代码漏洞被恶意攻击者利用等高风险事件发生的可能性。因此微内核具有更强的错误隔离性,容错性与鲁棒性。
EPT:Extended Page Tables,虚拟化拓展页表,记录虚拟机物理地址到宿主机物理地址映射的信息。VMFUNC:为虚拟机切换EPT页表的指令;MPK:Memory Protection Keys,一种内存隔离技术。
VMFUNC是Intel提出的在X86架构虚拟化技术下的一条指令。Intel可支持虚拟机管理器为一台虚拟机配置多个EPT页表,以及相应的索引数组。MPK技术是Intel提出的内存管理硬件支持。
目前微内核架构在学术界与工业界被广泛地应用。由于宏内核的所有系统服务都运行在内核态的同一个地址空间中,因此系统服务模块之间的请求与通信通过函数调用就可以完成。而在微内核中,大多数用户与系统服务模块以及系统服务模块之间的通信需要使用进程间的通信机制,同时涉及到用户态与内核态上下文切换的操作,因此微内核中系统服务的效率与宏内核的相比更低。此外用户程序对系统服务的请求往往需要内核中的多个模块之间协同完成,例如用户程序关于文件的操作需要文件系统模块、文件存储介质的驱动模块协同完成,涉及到多次进程间通信以及内核态与用户态切换上下文的操作。这些是微内核系统服务性能瓶颈的主要原因之一。
发明内容
针对现有技术中的不足,本发明提供一种利用多硬件特性加速微内核进程间通信的方法。
根据本发明提供的一种利用多硬件特性加速微内核进程间通信的方法,所述方案如下:
用户与系统步骤:在用户程序与系统服务之间,利用VMFUNC指令实现进程间通讯;
系统服务步骤:在系统服务之间,将多个关联的系统服务模块作为一个系统服务模块组,放在同一个进程中,利用MPK技术保证不同系统服务模块之间的隔离。
优选的,所述用户与系统步骤包括:
设置地址空间快速切换机制:利用虚拟化技术,为虚拟机配置多张EPT页表,利用EPT页表的映射关系,在不修改虚拟机页表映射以及相应页表根寄存器值的前提下,通过VMFUNC指令,将地址空间切换到系统服务进程的地址空间。
优选的,所述为虚拟机配置多张EPT页表具体如下:
虚拟机监控器为虚拟机配置多张EPT页表,对于每个系统服务模块组,都另外配置了一张EPT页表;
在这张EPT页表中,用户进程页表根在虚拟机中物理地址映射到系统服务模块组所在进程的页表根在宿主机中的物理地址;
当使用这张EPT页表进行虚拟机物理地址到宿主机物理地址翻译时,虚拟机中用户进程的虚拟地址会自动地使用其所调用的系统服务模块组所在进程的页表进行翻译,实现地址空间的切换。
优选的,所述用户与系统步骤还包括:
设置地址空间切换安全检查机制:使用二进制检查以及跳板函数检查的方式,应对存在恶意的用户程序非法地调用VMFUNC指令,绕过内核检查,随意地切换到系统服务模块运行的安全问题。
优选的,具体包括:为每个系统服务模块组进程维护一个调用权限表,记录哪些进程能够通过VMFUNC指令切换到本程序的地址空间运行;
同时用户进程在调用系统服务时需要提供服务器的通行证,在调用VMFUNC执行切换地址空间时,通行证的值会作为参数传递给切换后的进程,切换后的系统服务模块能够通过查表得知请求切换的程序是否是合法的。
优选的,所述系统服务步骤包括:
设置程序权限域:利用Intel MPK硬件支持,通过设置PKRU寄存器,将程序的地址空间分成多个权限域,每个系统服务模块执行的过程中只能执行权限域中的代码,访问其中的数据,实现进程内部的隔离,维持原始微内核系统服务模块之间的隔离性;且PRKU寄存器能够在不陷入内核态以及退出虚拟机的情况下快速修改。
优选的,所述系统服务步骤还包括:
设置权限域切换检查机制:保证系统服务模块只能在与请求其他系统服务模块服务时切换到合法的权限域。
优选的,所述设置权限域切换检查机制具体包括:在系统服务模块和用户进程模块代码加载进内存空间时代码进行检查,只允许在程序权限域切换处出现WRPKRU指令;
在WRPKRU指令修改PRKU寄存器的值切换权限域前时检查,判断切换者是否非法,以及切换到的权限域是否正确。
优选的,当用户进程请求系统服务时,具体过程如下:
步骤S1:用户进程在预留的区域内保留进程上下文的寄存器以及相应信息,并设置好向系统服务模块请求的参数,以及向指定区域写入系统服务模块组的通行证信息;
步骤S2:用户进程进入跳板函数区域,并调用VMFUNC指令切换到目标系统服务模块组进程的地址空间中的跳板函数区域;
步骤S3:目标系统服务模块组进程的跳板函数获取调用进程的进程号,通过进程调用权限表判断调用进程是否有权限调用该系统服务模块,同时检查所输入的通行证是否正确;
步骤S4:在权限域切换函数中,会根据调用者的权限域是否能够访问判断调用者的合法性,然后通过WRPKRU指令切换当前进程的权限域,进入到下一个系统服务模块的权限域内执行。
优选的,所述步骤S3中检查所输入的通行证是否正确包括:如果输入的通行证正确则调用权限域的切换函数跳转到目标系统服务模块组,处理用户进程的请求;
在处理请求的过程中,如果请求其他进程中系统服务模块组的服务,请求过程与步骤S1-步骤S3相同;
如果请求到同一进程下的其他系统服务模块组提供的服务,与步骤S1相同,设置好向其他系统服务模块请求的参数,然后调用权限域切换函数。
与现有技术相比,本发明具有如下的有益效果:
1、本发明将微内核架构中用户态下具有链式调用关系的各个系统服务模块集成到一个进程中,并利用Intel MPK和Intel VMFUNC的硬件支持实现安全高效的模块隔离效果;
2、本发明使用权限域检查机制,保证每次非法的权限域切换都会引发错误;地址空间切换的认证机制,包括为每一个系统服务模块组进程维护进程调用权限表,以及检查通行证的方法,保证程序只能在进程间通信时进行合法的地址空间切换;
3、对于各个系统服务模块组之间,用户与系统模块组之间的进程间通信,采用虚拟化中地址翻译的特性,通过配置特定页表,实现利用VMFUNC指令进行快速地址空间切换的机制;
4、利用Intel VMFUNC拓展Intel MPK能够支持的隔离内存域的数量。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是虚拟机监控器为虚拟机配置EPT页表的示意图;
图2是系统服务模块组进程示意图;
图3是系统服务模块组进程初始化过程示意图;
图4是用户进程初始化与注册系统服务的过程示意图;
图5是用户进程请求系统服务示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种利用多硬件特性加速微内核进程间通信的方法,其中,VMFUNC是Intel提出的在X86架构虚拟化技术下的一条指令。Intel可支持虚拟机管理器为一台虚拟机配置多个EPT页表,以及相应的索引数组。虚拟机能够通过运行VMFUNC指令,输入相应的索引,为自己切换EPT页表。由于VMFUNC指令的调用不会使得程序执行流下陷到虚拟机管理器,因此该切换过程是高效的。通过配置特殊的EPT页表,能够实现运行VMFUNC指令高效切换进程间的地址空间。目前大量的用户使用云服务平台对数据进行计算处理,往往会使用到虚拟化的技术,这给利用VMFUNC优化微内核进程间通讯提供了机会。
MPK技术是Intel提出的内存管理硬件支持。利用MPK技术,进程的内存能够以页的粒度划分成多个不同的区域。在程序运行的过程中,CPU中PKRU寄存器的值指定进程当前上下文对每个内存区域的访问权限。利用MPK技术,能够在进程内部为不同系统服务模块划分不同的可访问区域。程序在系统服务模块间切换的过程中,可通过运行WRPKRU指令可修改PKRU寄存器的值,改变当前上下文对各个内存区域的访问权限,而不需要进行昂贵的修改页表的操作。此外相比于使用不同进程页表划分内存权限的方法,MPK技术将能够在保证系统服务模块间隔离特性的基础上,将关联性强的系统服务模块集成到了同一个进程内,省去了大量的进程间同步、进程上下文切换的开销。
针对微内核进程间通讯效率的问题,使用VMFUNC和MPK两种硬件特性进行优化。从微内核环境下用户程序调用系统服务过程中的行为分析,我们能够发现微内核中的系统服务模块往往需要为系统中的所有用户提供服务;同时为了完成某个系统服务,系统服务模块之间需要进行链状的系统服务模块调用,即某个系统服务模块在运行过程中只调用其他某些特定的系统服务模块。
本发明根据以上特点,对于用户程序与系统服务之间,利用VMFUNC指令实现进程间高效通讯;对于系统服务之间,将多个关联性强的系统服务模块放在同一个进程中,利用MPK技术保证不同系统服务之间的隔离,具体如下:
提出地址空间快速切换的机制:本发明中利用虚拟化技术,为虚拟机配置多张EPT页表。利用EPT页表的映射关系,能够在不修改虚拟机页表映射以及相应页表根寄存器值的前提下,通过VMFUNC指令,将地址空间切换到系统服务进程的地址空间实现高效进程间通信。
提出地址空间切换安全检查机制:由于VMFUNC指令能够被任意程序在用户态被调用,因此可能存在恶意的用户程序非法地调用VMFUNC指令,绕过内核检查,随意地切换到系统服务模块运行。本发明提出了使用二进制检查以及跳板函数检查的方式,解决上述的安全问题。
提出程序权限域的概念:本发明利用MPK硬件支持,通过设置PKRU寄存器,将程序的地址空间分成多个权限域,每个系统服务模块执行的过程中只能执行权限域中的代码,访问其中的数据,以此实现了进程内部的隔离,维持了原始微内核系统服务模块之间的隔离性。同时PRKU寄存器能够在不陷入内核态以及退出虚拟机的情况下快速修改,因此本发明中程序权限域的切换是高效的。
提出权限域切换检查机制:由于在执行的过程中,用户程序能够在虚拟机操作系统以及虚拟机监控器不知情的情况下,通过调用WRPKRU指令修改PKRU寄存器的值。因此本发明中提出了权限域切换检查机制,能够保证系统服务模块只能在与请求其他系统服务模块服务时切换到合法的权限域。
参照图1所示,虚拟机监控器为虚拟机配置多张EPT页表。其中的一张EPT页表用于用户程序和系统服务模块在自己本身的地址空间中执行。这张EPT页表的虚拟机物理地址到宿主机物理地址的映射中,页表索引项的值等于地址翻译值,则虚拟机所看到的物理地址空间和宿主机物理地址空间相同。对于每个系统服务模块组,都另外配置了一张EPT页表。其中在这张EPT页表中,用户进程页表根在虚拟机中物理地址映射到系统服务模块组所在进程的页表根在宿主机中的物理地址。当使用这张EPT页表进行虚拟机物理地址到宿主机物理地址翻译时,虚拟机中用户进程的虚拟地址会自动地使用其所调用的系统服务模块组所在进程的页表进行翻译,实现了地址空间的切换。本发明中通过运行VMFUNC指令实现上述EPT页表的切换。
为了防止VMFUNC指令在被非法地调用切换EPT页表,本发明中提出为每个系统服务模块组进程维护一个调用权限表,记录了哪些进程可以通过VMFUNC指令切换到本程序的地址空间运行。同时用户进程在调用系统服务时需要提供服务器的通行证。在调用VMFUNC执行切换地址空间时,通行证的值会作为参数传递给切换后的进程。切换后的系统服务模块可以通过查表得知请求切换的程序是否是合法的。上述过程实现在跳板函数中。
对于系统服务模块组进程而言,本发明中采用Intel MPK技术将它们在同一个进程内隔离开。参照图2所示,通过设置系统服务模块所在内存页的页表项以及PKRU寄存器的值,为每个系统服务模块分隔出不同的权限域。参照图2所示,权限域由可执行代码段与可访问的数据区域所组成。其中系统服务模块1代码在执行的过程中只能访问系统服务模块1数据区域内的数据。对于系统服务模块2而言同理。不同的权限域之间能够通过特定函数进行切换。
由于修改PKRU寄存器值的指令WRPKRU能在用户态被任意地调用,同时WRPKRU的参数是调用者所指定的。因此本发明中为了保证权限域只能在指定的地方被指定的调用者正确地被切换,提出了权限域切换检查机制。本发明中需要在系统服务模块和用户进程模块代码加载进内存空间时代码进行检查,只允许在程序权限域切换处出现WRPKRU指令。在WRPKRU指令修改PRKU寄存器的值切换权限域前时检查,判断切换者是否非法,以及切换到的权限域是否正确。
参照图3和图4所示,在虚拟机启动的时候内核会初始化一系列的系统服务。如流程(a)所示,当这些系统服务模块的代码和原始数据加载到对应地址空间后,虚拟机内核会根据配置设置正确的页表项以及正确的PRKU值,生成多个权限域。接着将跳板函数代码映射到该系统服务模块组进程的特定区域中。与此同时,虚拟机为每个系统服务模块组进程生成一组通行证以及空的进程调用权限表,然后结束初始化过程。流程(b)是用户进程初始化与注册系统服务的过程。首先用户进程向虚拟机监控器发起注册系统服务的请求,并传输需要注册的系统服务的信息。虚拟机监控器首先检查用户的请求是否合法,如果合法则为用户进程设置EPT页表。虚拟机监控器将先前生成的通行证传递给用户程序,然后更新对应的系统服务模块组进程中的进程调用权限表。
参照图5所示,当用户进程请求系统服务时,主要涉及以下过程:
步骤S1:用户进程在预留的区域内保留进程上下文的寄存器以及相应信息,并设置好向系统服务请求的参数,以及向指定区域写入系统服务模块组的通行证信息。
步骤S2:用户进程进入跳板函数区域,并调用VMFUNC指令切换到目标系统服务模块组进程的地址空间中的跳板函数区域。
步骤S3:目标系统服务模块组进程的跳板函数获取调用进程的进程号,通过进程调用权限表判断调用进程是否有权限调用该系统服务,同时检查所输入的通行证是否正确。
如果正确则调用权限域的切换函数跳转到目标系统服务模块组,处理用户进程的请求。在处理请求的过程中,可能会请求其他进程中系统服务模块组的服务,请求过程与步骤S1-S3相同。也可能会请求到同一进程下的其他系统服务模块组提供的服务,与步骤S1类似,设置好向其他系统服务模块请求的参数,然后调用权限域切换函数。
步骤S4:在权限域切换函数中,会根据调用者的权限域是否可访问判断调用者的合法性,然后通过WRPKRU指令切换当前进程的权限域,进入到下一个系统服务模块的权限域内执行。
系统服务模块完成相应的请求后,返回过程与调用的过程类似。
本发明根据云应用平台下,微内核架构中用户程序调用系统服务的行为特点,对于各个系统服务模块之间,将存在链状调用关系的系统服务模块集成到同一个进程中,利用Intel MPK硬件支持提供高效灵活的隔离机制。对于用户程序与系统服务模块组之间,利用虚拟化支持下VMFUNC指令实现用户进程与系统服务模块组进程地址空间的高效切换,在不破坏微内核系统服务模块间隔离特性的基础上,大大提高了微内核架构下进程间通信的效率。
本发明除了可应用于微内核操作系统中,还可以应用在进程内部隔离的场景中。Intel MPK硬件的功能是在进程内部提供至多16个隔离内存域,但是无法支持更多的隔离内存域数量,因此在使用上受到限制。本发明结合使用VMFUNC,从而能够高效扩展IntelMPK能够支持隔离内存域的数量,从而满足更多进程内部隔离的场景需要。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (9)
1.一种利用多硬件特性加速微内核进程间通信的方法,其特征在于,包括:
用户与系统步骤:在用户程序与系统服务之间,利用VMFUNC指令实现进程间通讯;
系统服务步骤:在系统服务之间,将多个关联的系统服务模块作为一个系统服务模块组,放在同一个进程中,利用MPK技术保证不同系统服务模块组之间的隔离;
当用户进程请求系统服务时,具体过程如下:
步骤S1:用户进程在预留的区域内保留进程上下文的寄存器以及相应信息,并设置好向系统服务模块请求的参数,以及向指定区域写入系统服务模块组的通行证信息;
步骤S2:用户进程进入跳板函数区域,并调用VMFUNC指令切换到目标系统服务模块组进程的地址空间中的跳板函数区域;
步骤S3:目标系统服务模块组进程的跳板函数获取调用进程的进程号,通过进程调用权限表判断调用进程是否有权限调用该系统服务模块,同时检查所输入的通行证是否正确;
步骤S4:在权限域切换函数中,会根据调用者的权限域是否能够访问判断调用者的合法性,然后通过WRPKRU指令切换当前进程的权限域,进入到下一个系统服务模块的权限域内执行。
2.根据权利要求1所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述用户与系统步骤包括:
设置地址空间快速切换机制:利用虚拟化技术,为虚拟机配置多张EPT页表,利用EPT页表的映射关系,在不修改虚拟机页表映射以及相应页表根寄存器值的前提下,通过VMFUNC指令,将地址空间切换到系统服务进程的地址空间。
3.根据权利要求2所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述为虚拟机配置多张EPT页表具体步骤如下:
虚拟机监控器为虚拟机配置多张EPT页表,对于每个系统服务模块组,都另外配置了一张EPT页表;
在这张EPT页表中,用户进程页表根在虚拟机中物理地址映射到系统服务模块组所在进程的页表根在宿主机中的物理地址;
当使用这张EPT页表进行虚拟机物理地址到宿主机物理地址翻译时,虚拟机中用户进程的虚拟地址会自动地使用其所调用的系统服务模块组所在进程的页表进行翻译,实现地址空间的切换。
4.根据权利要求1所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述用户与系统步骤还包括:
设置地址空间切换安全检查机制:使用二进制检查以及跳板函数检查的方式,应对存在恶意的用户程序非法地调用VMFUNC指令,绕过内核检查,随意地切换到系统服务模块运行的安全问题。
5.根据权利要求4所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,具体包括:为每个系统服务模块组进程维护一个调用权限表,记录哪些进程能够通过
VMFUNC指令切换到本程序的地址空间运行;
同时用户进程在调用系统服务时需要提供服务器的通行证,在调用VMFUNC执行切换地址空间时,通行证的值会作为参数传递给切换后的进程,切换后的系统服务模块能够通过查表得知请求切换的程序是否是合法的。
6.根据权利要求1所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述系统服务步骤包括:
设置程序权限域:利用Intel MPK硬件支持,通过设置PKRU寄存器,将程序的地址空间分成多个权限域,每个系统服务模块执行的过程中只能执行权限域中的代码,访问其中的数据,实现进程内部的隔离,维持原始微内核系统服务模块之间的隔离性;且PRKU寄存器能够在不陷入内核态以及退出虚拟机的情况下快速修改。
7.根据权利要求1所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述系统服务步骤还包括:
设置权限域切换检查机制:保证系统服务模块只能在与请求其他系统服务模块服务时切换到合法的权限域。
8.根据权利要求7所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述设置权限域切换检查机制具体包括:在系统服务模块和用户进程模块代码加载进内存空间时代码进行检查,只允许在程序权限域切换处出现WRPKRU指令;
在WRPKRU指令修改PRKU寄存器的值切换权限域前时检查,判断切换者是否非法,以及切换到的权限域是否正确。
9.根据权利要求1所述的利用多硬件特性加速微内核进程间通信的方法,其特征在于,所述步骤S3中检查所输入的通行证是否正确包括:如果输入的通行证正确则调用权限域的切换函数跳转到目标系统服务模块组,处理用户进程的请求;
在处理请求的过程中,如果请求其他进程中系统服务模块组的服务,请求过程与步骤S1-步骤S3相同;
如果请求到同一进程下的其他系统服务模块组提供的服务,与步骤S1相同,设置好向其他系统服务模块请求的参数,然后调用权限域切换函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110356366.2A CN113064697B (zh) | 2021-04-01 | 2021-04-01 | 利用多硬件特性加速微内核进程间通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110356366.2A CN113064697B (zh) | 2021-04-01 | 2021-04-01 | 利用多硬件特性加速微内核进程间通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113064697A CN113064697A (zh) | 2021-07-02 |
CN113064697B true CN113064697B (zh) | 2022-09-23 |
Family
ID=76565402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110356366.2A Active CN113064697B (zh) | 2021-04-01 | 2021-04-01 | 利用多硬件特性加速微内核进程间通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113064697B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115774574B (zh) * | 2021-09-06 | 2024-06-04 | 华为技术有限公司 | 一种操作系统内核切换方法和装置 |
CN113704007B (zh) * | 2021-09-14 | 2023-11-07 | 上海交通大学 | 利用硬件特性的无服务器计算平台加速系统 |
CN115878210B (zh) * | 2021-09-29 | 2024-08-27 | 华为技术有限公司 | 一种系统配置处理方法及相关设备 |
CN113886105B (zh) * | 2021-09-30 | 2023-07-21 | 抖音视界有限公司 | 跨进程的调用方法、装置、存储介质及电子设备 |
CN114020330B (zh) * | 2021-11-04 | 2023-11-03 | 苏州睿芯集成电路科技有限公司 | Risc-v处理器验证中模式切换的方法、电子设备以及存储介质 |
CN114168936A (zh) * | 2021-11-24 | 2022-03-11 | 浙江大学 | 一种基于Intel MPK与单步模式的Enclave沙盒系统 |
CN117827417A (zh) * | 2022-09-28 | 2024-04-05 | 华为技术有限公司 | 一种内存管理方法和相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201646A (zh) * | 2014-08-15 | 2016-12-07 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的技术 |
CN106970823A (zh) * | 2017-02-24 | 2017-07-21 | 上海交通大学 | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 |
CN109933441A (zh) * | 2019-02-28 | 2019-06-25 | 上海交通大学 | 微内核进程间通讯方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060019945A1 (en) * | 2002-02-04 | 2006-01-26 | Chapman Kevin T | Granzyme b inhibitors |
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
CN107391225A (zh) * | 2017-07-13 | 2017-11-24 | 北京航空航天大学 | 一种基于多ept列表的监控方法和系统 |
CN111949596A (zh) * | 2020-08-05 | 2020-11-17 | 上海交通大学 | 基于mpk技术的微内核模块间通讯方法、系统及介质 |
-
2021
- 2021-04-01 CN CN202110356366.2A patent/CN113064697B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201646A (zh) * | 2014-08-15 | 2016-12-07 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的技术 |
CN106970823A (zh) * | 2017-02-24 | 2017-07-21 | 上海交通大学 | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 |
CN109933441A (zh) * | 2019-02-28 | 2019-06-25 | 上海交通大学 | 微内核进程间通讯方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113064697A (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113064697B (zh) | 利用多硬件特性加速微内核进程间通信的方法 | |
US20220091911A1 (en) | Method and apparatus for inter-process communication, and computer device | |
US9454676B2 (en) | Technologies for preventing hook-skipping attacks using processor virtualization features | |
CN109840410A (zh) | 一种进程内数据隔离与保护的方法和系统 | |
CN104866762B (zh) | 安全管理程序功能 | |
CN100489782C (zh) | 一种虚拟机系统及硬件设备的访问控制方法 | |
US20170329618A1 (en) | Modification of write-protected memory using code patching | |
CN104036185B (zh) | 基于虚拟化的宏内核操作系统载入模块权能隔离方法 | |
JP2021532468A (ja) | メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット | |
CN104424034A (zh) | 硬件资源访问方法及装置 | |
CN110058921B (zh) | 客户虚拟机内存动态隔离和监控方法及系统 | |
CN111949369B (zh) | 面向图形处理器的可信执行环境构建方法及系统 | |
CN112182560B (zh) | 针对Intel SGX内部高效的隔离方法、系统及介质 | |
CN112749397A (zh) | 一种系统和方法 | |
CN111949596A (zh) | 基于mpk技术的微内核模块间通讯方法、系统及介质 | |
WO2021055290A1 (en) | Controlled access to data stored in a secure partition | |
CN105550014A (zh) | 灵活高效的跨权限级与域的调用方法 | |
CN110276214B (zh) | 一种基于从机访问保护的双核可信soc架构及方法 | |
WO2023123850A1 (zh) | 一种固件可信根的实现方法、装置、设备和可读存储介质 | |
CN107203716B (zh) | 一种Linux内核轻量级结构化保护方法及装置 | |
CN115422554B (zh) | 请求处理方法、编译方法和可信计算系统 | |
CN114741740B (zh) | 基于risc-v的物理内存保护方法、系统和相关设备 | |
WO2023045744A1 (zh) | 加固方法、注册方法、运行方法、电子设备和存储介质 | |
US20240045679A1 (en) | Method for control flow isolation with protection keys and indirect branch tracking | |
US11586727B2 (en) | Systems and methods for preventing kernel stalling attacks |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240731 Address after: Room 301, No. 8, Lane 101, Guonian Road, Yangpu District, Shanghai, 200433 Patentee after: Zang Binyu Country or region after: China Patentee after: Gu Jinyu Address before: 200240 No. 800, Dongchuan Road, Shanghai, Minhang District Patentee before: SHANGHAI JIAO TONG University Country or region before: China |
|
TR01 | Transfer of patent right |