CN117608756A - 请求处理方法、装置、电子设备及存储介质 - Google Patents
请求处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117608756A CN117608756A CN202311641143.6A CN202311641143A CN117608756A CN 117608756 A CN117608756 A CN 117608756A CN 202311641143 A CN202311641143 A CN 202311641143A CN 117608756 A CN117608756 A CN 117608756A
- Authority
- CN
- China
- Prior art keywords
- kernel
- input
- virtual machine
- program
- request
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 84
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 61
- 230000008569 process Effects 0.000 claims abstract description 37
- 230000006870 function Effects 0.000 claims description 87
- 238000012795 verification Methods 0.000 claims description 70
- 238000004590 computer program Methods 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
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/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
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
本公开实施例提供一种请求处理方法、装置、电子设备及存储介质,通过在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定输入输出请求对应的目标处理程序,其中,目标处理程序中包含有用于实现输入输出请求对应的指令处理流程的钩子函数,钩子函数映射至内核可执行的内核本地代码;通过在内核空间内执行目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。通过调用内核空间的内核虚拟机模块,在内核空间中执行钩子函数映射的内核本地代码,实现对输入输出请求的响应,该过程可以避免了处理器线程的上下文切换和数据拷贝,从而提高输入输出请求的响应速度和执行效率。
Description
技术领域
本公开实施例涉及云计算技术领域,尤其涉及一种请求处理方法、装置、电子设备及存储介质。
背景技术
当前,云计算技术和业务场景的快速发展,作为云计算底层实现的虚拟化技术,也随之受到更多的关注,其中,输入/输出虚拟化(Input/Output Virtualization,IOV)技术是用于实现虚拟机与输入输出设备之间的数据交互的技术,虚拟机与输入输出设备之间的数据交互性能,直接影响虚拟机的性能表现。
现有虚拟化技术中,针对客户机(Guest)一侧发送的输入输出请求,存在输入输出请求响应速度慢、执行效率低的问题。
发明内容
本公开实施例提供一种请求处理方法、装置、电子设备及存储介质,以克服输入输出请求的响应速度慢、执行效率低的问题。
第一方面,本公开实施例提供一种请求处理方法,包括:
在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
第二方面,本公开实施例提供一种请求处理装置,包括:
处理单元,用于在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;
控制单元,用于通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
第三方面,本公开实施例提供一种电子设备,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的请求处理方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的请求处理方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的请求处理方法。
本实施例提供的请求处理方法、装置、电子设备及存储介质,通过在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。通过调用内核空间的内核虚拟机模块,获取并执行输入输出请求对应的目标处理程序,并利用目标处理程序中的钩子函数,在内核空间中执行钩子函数所述映射的内核本地代码,实现对输入输出请求的响应,该过程可以避免了处理器线程的上下文切换,以及内核空间与用户空间之间的数据拷贝,从而提高输入输出请求的响应速度和执行效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的请求处理方法的一种系统架构图;
图2为本公开实施例提供的请求处理方法的流程示意图一;
图3为图2所示实施例中步骤S102的具体实现方式的流程图;
图4为本公开实施例提供的一种输入输出请求的处理过程示意图;
图5为图3所示实施例中步骤S1022的具体实现方式的流程图;
图6为本公开实施例提供的请求处理方法的流程示意图二;
图7为图6所示实施例中步骤S202的具体实现方式的流程图;
图8为本公开实施例提供的一种扩展伯克利包过滤器模块的结构示意图;
图9为本公开实施例提供的请求处理装置的结构框图;
图10为本公开实施例提供的一种电子设备的结构示意图;
图11为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
下面对本公开实施例的应用场景进行解释:
图1为本公开实施例提供的请求处理方法的一种系统架构图,本公开实施例提供的请求处理方法,可以应用于云计算、云服务等应用场景中,本实施例的执行主体,可以为运行虚拟机的服务器,或服务器内的中央处理器(Central Processing Unit,CPU)。或者其他起到类似功能的电子设备。更具体地,可以应用于利用基于内核的虚拟机(Kernel-basedVirtual Machine,KVM)技术进行输入输出(Input/Output,I/O或IO)设备操作的场景中。其中,基于内核的虚拟机技术一种基于内核(Kernel)的虚拟化技术,通过在操作系统(Linux)中嵌入内核虚拟机模块(KVM模块),从而使操作系统实现虚拟化(hypervisor)软件的功能。同时,虚拟机基于操作系统自身的调度器进行管理,通过划分独立的运行空间,来执行不同权限的功能,其中包括空间包括内核空间(Kernel space)和用户空间(User space),其中,内核空间是操作系统内核的运行空间,内核虚拟机模块运行在内核空间,通过驱动内核来实现虚拟化功能,而用户空间是用户程序的运行空间,用于实现虚拟机客户端(Guest)的功能。参考图1中所示,服务器外挂有输入输出设备,通过内核空间中的内核虚拟机模块,对由用户空间的虚拟机客户端发送的输入输出请求进行响应和处理,最终实现对输入输出设备的操作。
现有技术中,基于如上图所示的KVM技术架构,当虚拟机客户端发出针对映射至物理输入输出设备的输入输出请求指令,例如向磁盘设备中写入数据时,服务器的CPU进程需要反复在用户空间和内核空间之间进行特权级切换和数据拷贝,从而造成了输入输出请求的响应速度慢、执行效率低的问题,影响虚拟输入输出设备的性能。
本公开实施例提供一种请求处理方法以解决上述问题。
参考图2,图2为本公开实施例提供的请求处理方法的流程示意图一。本实施例的方法可以应用在服务器中,该请求处理方法包括:
步骤S101:在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定输入输出请求对应的目标处理程序,其中,目标处理程序中包含有用于实现输入输出请求对应的指令处理流程的钩子函数,钩子函数映射至内核可执行的内核本地代码。
步骤S102:通过在内核空间内执行目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
示例性地,参考图1所示的系统架构示意图,虚拟机客户端(guest)即是提供给用户使用的虚拟机,运行有独立的操作系统、软件程序。虚拟机客户端在响应于用户指令或者程序执行逻辑,需要操作输入输出设备时,会向虚拟机主机端(host)发送请求指令,即输入输出请求。该输入输出请求会经虚拟队列(virtqueue)进入到内核空间内进行处理。运行在内核空间的内核虚拟机模块,接收到该输入输出请求后,基于预设的协议,对该输入输出请求进行解析,确定用于实现该输入输出请求对应的请求目的的程序,即目标处理程序。在一种可能的实现方式中,当虚拟机客户端(虚机)想要写入一个IO数据,即操作数据时,将操作数据对应的内存区域地址写入虚拟输入输出队列(virtio)。在后续的处理步骤中,通过执行目标处理程序,从虚拟输入输出队列中的取出操作数据,并写入对应的物理输入输出设备中,或者,读出物理输入输出设备中的数据。
进一步地,目标处理程序中包含有用于实现输入输出请求对应的指令处理流程的钩子(Hook)函数,钩子函数映射至内核可执行的内核本地代码(native code)。具体地,钩子函数是一种在系统传递和处理消息、指令的过程中,对消息、指令进行截取,并触发与其映射的其他处理流程的功能函数。本实施例步骤中,钩子函数用于实现输入输出请求对应的指令处理流程的,即通过在目标处理程序中设置钩子函数,对目标处理程序中原有的指令处理流程进行屏蔽,而执行钩子函数所映射的指令处理流程,从而实现对输入输出请求的响应过程和方式的控制。进一步地,钩子函数所映射的内核本地代码,也称为原生码、机器码,是经过预先转换,并内置于内核空间内的程序代码,服务器(的CPU线程)可以直接在内核空间内执行,即内核可执行的内核本地代码。
现有技术中的方案,内核虚拟机模块会直接执行输入输出请求所对应的原始处理程序,在执行过程中,需要CPU进程切换回用户空间(应用态)下的用户态应用程序进程来执行相应处理步骤,同时需要对操作数据在用户空间和内核空间之间进行拷贝,造成了额外的计算资源消耗和耗时。而本申请实施例中,通过确定包含钩子函数的目标处理程序,利用钩子函数所映射的内核本地代码,完成对输入输出请求的响应,整个执行过程在内核态(内核空间中)完成,不需要CPU进行额外的上下文切换以及用户层与内核层之间的数据拷贝,提高了指令执行的效率,降低耗时。
进一步的,在一种可能的实现方式中,如图3所示,步骤S102的具体实现方式包括:
步骤S1021:通过内核虚拟机模块调用目标处理程序中的钩子函数,得到钩子函数对应的目标内核本地代码;
步骤S1022:通过内核虚拟机模块对应的处理器进程执行目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
示例性地,图4为本公开实施例提供的一种输入输出请求的处理过程示意图,如图4所示,内核虚拟机模块内设置有映射至物理输入输出设备(图中示为物理IO设备)的虚拟输入输出设备(图中示为虚拟IO设备),输入输出请求(IO请求)用于对该虚拟输入输出设备进行操作,当内核虚拟机模块内接收到虚拟机客户端发送的输入输出请求后,内核虚拟机模块确定该输入输出请求所对应的目标处理程序,其中,目标处理程序中通过钩子函数(图中示为Hook),映射至基于预生成的内核本地代码。其中,该内核本地代码是由扩展伯克利包过滤器(extended Berkely Packet Filter,ebpf)模块生成的,利用扩展伯克利包过滤器生成内核本地代码的具体实现过程,在后续实施例中详细介绍,此处暂不赘述。
之后,服务器通过内核虚拟机模块执行目标处理程序,并在执行到目标处理程序中的目标钩子函数时,映射至该目标执行钩子所对应的目标内核本地代码,之后通过内核虚拟机模块对应的处理器进程执行目标内核本地代码,由于此时处理器进程处于内核态(位于内核空间中),对内核空间中的数据进行处理时,不需要进行上下文切换,从而可以实现指令的高效执行。
进一步地,在一种可能的实现方式中,如图5所示,步骤S1022的具体实现方式包括:
步骤S1022A:读取虚拟输入输出队列,获得输入输出请求对应的操作数据的虚拟内存区域;
步骤S1022B:将虚拟机客户端的处理器进程退回到内核空间;
步骤S1022C:通过处理器进程执行目标内核本地代码,将虚拟内存区域对应的操作数据写入虚拟输入输出设备,或者,将虚拟输入输出设备内的数据写入虚拟内存区域。
示例性地,虚拟输入输出队列是设置于用户空间内的数据队列,由虚拟机客户端发出的输入输出请求,并存储至该虚拟输入输出队列中,之后,处理器线程从虚拟输入输出队列中,读取出输入输出请求,并获得该输入输出请求对应的操作数据的虚拟内存区域,由于虚拟输入输出队列处理用户空间内,此时处理器线程处于用户态下。之后,将虚拟机客户端(host)的处理器线程退(exit)回到内核空间,即转换至内核态下,并在内核空间中,通过处理器进程执行基于目标钩子函数获得的目标内核本地代码,进而实现对虚拟输入输出设备的操作,即将虚拟内存区域对应的操作数据写入虚拟输入输出设备,或者,将虚拟输入输出设备内的数据写入虚拟内存区域。之后,虚拟输入输出设备与物理输入输出设备之间可以通过直通连接的方式进行交互,最终实现将操作数据写入物理输入输出设备或者从物理输入输出设备中读取该操作数据的目的,其具体实现步骤,此处不再赘述。
本实施例中,通过在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定输入输出请求对应的目标处理程序,其中,目标处理程序中包含有用于实现输入输出请求对应的指令处理流程的钩子函数,钩子函数映射至内核可执行的内核本地代码;通过在内核空间内执行目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。通过调用内核空间的内核虚拟机模块,获取并执行输入输出请求对应的目标处理程序,并利用目标处理程序中的钩子函数,在内核空间中执行钩子函数映射的内核本地代码,实现对输入输出请求的响应,该过程可以避免了处理器线程的上下文切换,以及内核空间与用户空间之间的数据拷贝,从而提高输入输出请求的响应速度和执行效率。
参考图6,图6为本公开实施例提供的请求处理方法的流程示意图二。本实施例在图2所示实施例的基础上,进一步增加了在响应输入输出请求之前,配置目标处理程序的步骤,该请求处理方法包括:
步骤S201:通过用户态应用程序,加载伯克利包过滤器程序,伯克利包过滤器程序用于表征钩子函数的设置位置,以及钩子函数对应的指令处理流程。
示例性地,首先,用户态应用程序是运行在用户空间的应用程序。由于内核虚拟机模块运行在内核空间,当内核虚拟机模块其本身不具备模拟设备的能力时,需要借助运行在用户空间的用户态应用程序,来模拟和组装出各类虚拟输入输出设备。其中,示例性地,用户态应用程序包括Qemu。进一步地,伯克利包过滤器(Berkely Packet Filter,bpf),是Linux内核中用于过滤数据包的内核引擎,它提供了一套规定的语言供用户层的普通进程来过滤指定数据包,基于伯克利包过滤器编辑的程序,即伯克利包过滤器程序(bpfprogram),通过伯克利包过滤器程可以实现用户自定义的指令处理流程。
进一步地,伯克利包过滤器程序可以是在用户态应用程序内编写、或者外部导入至用户态应用程序的程序文件,该伯克利包过滤器程序中记录有用于实现钩子函数对应的指令处理流程的实现代码,以及指示钩子函数在目标处理程序中的设置位置的实现代码,通过伯克利包过滤器程序中的上述代码,即可实现向目标处理程序中插入钩子函数,以对指定功能函数进行替换、执行用户自定义的指令处理流程的目的。进一步地,针对不同的用户态应用程序,提高相应的操作接口来加载伯克利包过滤器程序,具体实现方式可灵活设置,此处不再赘述。
步骤S202:将伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,并经扩展伯克利包过滤器模块处理后,生成内核本地代码。
示例性地,之后,将伯克利包过滤器程序由用户空间发送至内核空间的扩展伯克利包过滤器(ebpf)模块。扩展伯克利包过滤器模块对该伯克利包过滤器程序进一步处理后,生成内核本地代码。
在一种可能的实现方式中,在用户空间中,设置有用于对伯克利包过滤器程序进行编码的编译模块,或者,用户态应用程序具有编译功能,通过上述编译模块或用户态应用程序所提供的编译功能,将伯克利包过滤器程序转换为字节码(bytecode),之后,将字节码发送至内核空间中扩展伯克利包过滤器模块。而另一种实现方式中,可以将伯克利包过滤器程序直接发送至扩展伯克利包过滤器模块中,由扩展伯克利包过滤器模块将伯克利包过滤器程序转换为字节码,并进行后续处理。
示例性地,如图7所示,步骤S202的具体实现方式包括:
步骤S2021:通过扩展伯克利包过滤器模块编译伯克利包过滤器程序,得到对应的字节码。
步骤S2022:通过扩展伯克利包过滤器模块对字节码进行验证,得到验证结果,若验证结果为验证通过,则将字节码转换为内核本地代码。
示例性地,基于之前步骤中介绍,扩展伯克利包过滤器模块在接收到伯克利包过滤器程序并进行编译后,得到字节码,之后扩展伯克利包过滤器模块通过内置的验证模块对字节码进行安全验证,得到验证结果。之后根据验证结果,若字节码通过验证,则进一步将字节码转换为内核本地代码,以在后续步骤中,调用处理器线程在内核空间中执行相应指令处理流程。由于字节码是在用户空间内生成、由用户态应用程序发送并在内核中执行的程序,因此无法保证其安全性,若其存在安全性问题,则可能导致内核系统的崩溃。为了保证安全性,扩展伯克利包过滤器模块在得到字节码后,首先对字节码进行验证,在确认其安全性后,则进行代码转换,生成能够在内核空间中运行的内核本地代码,以保证内核系统的安全性和稳定性。
进一步地,扩展伯克利包过滤器模块中包括验证器子模块和即时编译子模块,相应的,步骤S2021的具体实现方式包括:通过验证器子模块对字节码的运行安全性进行验证,得到验证结果。步骤S2022的具体实现方式包括:通过扩展伯克利包过滤器模块对字节码进行验证,得到验证结果,若验证结果为验证通过,则通过即时编译子模块,在内核空间中将字节码转换为内核本地代码。
图8为本公开实施例提供的一种扩展伯克利包过滤器模块的结构示意图,如图8所示,处于用户空间的用户态应用程序向扩展伯克利包过滤器模块(图中示为ebpf模块)发送伯克利包过滤器程序(图中示为bpf程序)后,首先,一种可能的实现方式中,由扩展伯克利包过滤器模块对伯克利包过滤器程序进行处理,生成字节码,之后,将字节码送入验证器子模块进行处理,验证器子模块基于预设的安全规则对字节码进行验证后,得到验证结果,当验证结果表征验证通过时(图中示为Y),再将字节码送入即时编译子模块,即时编译子模块,用于它将eBPF字节码编译成本地机器指令,即内核本地代码,以便更高效地在内核中执行。
进一步地,上述实施例步骤中还包括:
步骤S2023:若验证结果为验证未通过,则将验证信息返回给用户态应用程序,其中,验证信息表征验证结果和/或导致验证结果的原因。
示例性地,参考图8中所示,在将字节码送入验证器子模块进行处理,验证器子模块基于预设的安全规则对字节码进行验证后,若得到的验证结果表征验证未通过(图中示为N),即表征字节码程序所对应的处理逻辑或字节码程序本身存在异常,其可能导致系统崩溃或执行错误。此种情况下,获取通过验证器子模块抛出的错误/异常信息,并基于该错误/异常信息,生成说明性的验证信息,例如包括基于自然语言表述的文本,该验证信息表征验证结果和/或导致验证结果的原因。之后将该验证信息返回给用户态应用程序,并在用户态应用程序内进行显示,或者生成相应的日志文件进行记录,从而实现对用户空间内生成的伯克利包过滤器程序的安全性反馈。
步骤S203:将内核本地代码映射至对应的钩子函数,并将钩子函数设置于初始处理程序中,生成至少一个处理程序。
进一步地,在生成内核本地代码后,由扩展伯克利包过滤器模块对钩子函数进行替换,伯克利包过滤器程序中记录的指令处理流程放在钩子函数中执行,从而实现对虚机的输入输出请求对应的指令处理流程的替换,使输入输出请求的处理流程,能够按照用户(通过伯克利包过滤器程序)设置的方式来执行。
其中,具体地,扩展伯克利包过滤器模块将钩子函数设置于初始处理程序中,生成至少一个处理程序,该至少一个处理程序中,包括后续步骤中所确定和使用的目标处理程序。因此,在后续执行目标处理程序时,当处理器进程在执行到钩子函数时,由于钩子函数已经完成了替换\映射,因此处理器进程能够直接运行对应的内核本地代码,无需进行上下文切换,提高处理器线程的数据处理效率。
步骤S204:在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定输入输出请求对应的目标处理程序。
步骤S205:通过在内核空间内执行目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
本实施例中,步骤S204-步骤S205的实现方式与本公开图2所示实施例中的步骤S101-步骤S102的实现方式相同,在此不再一一赘述。
对应于上文实施例的请求处理方法,图9为本公开实施例提供的请求处理装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。
参照图9,请求处理装置3包括:
处理单元31,用于在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定输入输出请求对应的目标处理程序,其中,目标处理程序中包含有用于实现输入输出请求对应的指令处理流程的钩子函数,钩子函数映射至内核可执行的内核本地代码;
控制单元32,用于通过在内核空间内执行目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
在本公开的一个实施例中,控制单元32在通过在内核空间内执行目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果时,具体用于:通过内核虚拟机模块调用目标处理程序中的钩子函数,得到钩子函数对应的目标内核本地代码;通过内核虚拟机模块对应的处理器进程执行目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
在本公开的一个实施例中,控制单元32在通过内核虚拟机模块对应的处理器进程执行目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果时,具体用于:读取虚拟输入输出队列,获得输入输出请求对应的操作数据的虚拟内存区域;将虚拟机客户端的处理器进程退回到内核空间;通过处理器进程执行目标内核本地代码,将虚拟内存区域对应的操作数据写入虚拟输入输出设备,或者,将虚拟输入输出设备内的数据写入虚拟内存区域。
在本公开的一个实施例中,在在接收到位于用户空间的虚拟机客户端发送的输入输出请求之前,处理单元31,还用于:通过用户态应用程序,加载伯克利包过滤器程序,伯克利包过滤器程序用于表征钩子函数的设置位置,以及钩子函数对应的指令处理流程;将伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,并经扩展伯克利包过滤器模块处理后,生成内核本地代码;将内核本地代码映射至对应的钩子函数,并将钩子函数设置于初始处理程序中,生成目标处理程序。
在本公开的一个实施例中,处理单元31在将伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块时,具体用于:对伯克利包过滤器程序进行编译,生成伯克利包过滤器程序对应的字节码;将字节码发送至内核空间的扩展伯克利包过滤器模块。
在本公开的一个实施例中,处理单元31在经扩展伯克利包过滤器模块处理后,生成内核本地代码时,具体用于:通过扩展伯克利包过滤器模块加载伯克利包过滤器程序对应的字节码;通过扩展伯克利包过滤器模块对字节码进行验证,得到验证结果,若验证结果为验证通过,则将字节码转换为内核本地代码。
在本公开的一个实施例中,处理单元31,还用于:若验证结果为验证未通过,则将验证信息返回给用户态应用程序,其中,验证信息表征验证结果和/或导致验证结果的原因。
在本公开的一个实施例中,扩展伯克利包过滤器模块中包括验证器子模块和即时编译子模块;处理单元31在通过扩展伯克利包过滤器模块对字节码进行验证,得到验证结果时,具体用于:通过验证器子模块对字节码的运行安全性进行验证,得到验证结果;处理单元31在将字节码转换为内核本地代码时,具体用于:通过即时编译子模块,在内核空间中将字节码转换为内核本地代码。
其中,处理单元31和控制单元32连接。本实施例提供的请求处理装置3可以执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图10为本公开实施例提供的一种电子设备的结构示意图,如图10所示,该电子设备4包括:
处理器41,以及与处理器41通信连接的存储器42;
存储器42存储计算机执行指令;
处理器41执行存储器42存储的计算机执行指令,以实现如图2-图8所示实施例中的请求处理方法。
其中,可选地,处理器41和存储器42通过总线43连接。
相关说明可以对应参见图2-图8所对应的实施例中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
本公开实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现本公开图2-图8所对应的实施例中任一实施例提供的请求处理方法。
本公开实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本公开图2-图8所对应的实施例中任一实施例提供的请求处理方法。
为了实现上述实施例,本公开实施例还提供了一种电子设备。
参考图11,其示出了适于用来实现本公开实施例的电子设备900的结构示意图,该电子设备900可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图11示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图11所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(Read Only Memory,简称ROM)902中的程序或者从存储装置908加载到随机访问存储器(Random Access Memory,简称RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图11示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM 902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种请求处理方法,包括:
在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
根据本公开的一个或多个实施例,所述通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果,包括:通过所述内核虚拟机模块调用所述目标处理程序中的钩子函数,得到所述钩子函数对应的目标内核本地代码;通过所述内核虚拟机模块对应的处理器进程执行所述目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
根据本公开的一个或多个实施例,所述通过所述内核虚拟机模块对应的处理器进程执行所述目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果,包括:读取虚拟输入输出队列,获得所述输入输出请求对应的操作数据的虚拟内存区域;将所述虚拟机客户端的处理器进程退回到内核空间;通过所述处理器进程执行所述目标内核本地代码,将所述虚拟内存区域对应的操作数据写入所述虚拟输入输出设备,或者,将所述虚拟输入输出设备内的数据写入所述虚拟内存区域。
根据本公开的一个或多个实施例,在在接收到位于用户空间的虚拟机客户端发送的输入输出请求之前,还包括:通过用户态应用程序,加载伯克利包过滤器程序,所述伯克利包过滤器程序用于表征所述钩子函数的设置位置,以及所述钩子函数对应的指令处理流程;将所述伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,并经所述扩展伯克利包过滤器模块处理后,生成所述内核本地代码;将所述内核本地代码映射至对应的钩子函数,并将所述钩子函数设置于初始处理程序中,生成所述目标处理程序。
根据本公开的一个或多个实施例,所述将所述伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,包括:对所述伯克利包过滤器程序进行编译,生成所述伯克利包过滤器程序对应的字节码;将所述字节码发送至内核空间的扩展伯克利包过滤器模块。
根据本公开的一个或多个实施例,所述经所述扩展伯克利包过滤器模块处理后,生成所述内核本地代码,包括:通过所述扩展伯克利包过滤器模块加载所述伯克利包过滤器程序对应的字节码;通过所述扩展伯克利包过滤器模块对所述字节码进行验证,得到验证结果,若所述验证结果为验证通过,则将所述字节码转换为内核本地代码。
根据本公开的一个或多个实施例,所方法还包括:若所述验证结果为验证未通过,则将验证信息返回给所述用户态应用程序,其中,所述验证信息表征所述验证结果和/或导致所述验证结果的原因。
根据本公开的一个或多个实施例,所述扩展伯克利包过滤器模块中包括验证器子模块和即时编译子模块;所述通过所述扩展伯克利包过滤器模块对所述字节码进行验证,得到验证结果,包括:通过所述验证器子模块对所述字节码的运行安全性进行验证,得到验证结果;所述将所述字节码转换为内核本地代码,包括:通过所述即时编译子模块,在内核空间中将所述字节码转换为内核本地代码。
第二方面,根据本公开的一个或多个实施例,提供了一种请求处理装置,包括:
处理单元,用于在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;
控制单元,用于通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
根据本公开的一个或多个实施例,所述控制单元在通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果时,具体用于:通过所述内核虚拟机模块调用所述目标处理程序中的钩子函数,得到所述钩子函数对应的目标内核本地代码;通过所述内核虚拟机模块对应的处理器进程执行所述目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
根据本公开的一个或多个实施例,所述控制单元在通过所述内核虚拟机模块对应的处理器进程执行所述目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果时,具体用于:读取虚拟输入输出队列,获得所述输入输出请求对应的操作数据的虚拟内存区域;将所述虚拟机客户端的处理器进程退回到内核空间;通过所述处理器进程执行所述目标内核本地代码,将所述虚拟内存区域对应的操作数据写入所述虚拟输入输出设备,或者,将所述虚拟输入输出设备内的数据写入所述虚拟内存区域。
根据本公开的一个或多个实施例,在在接收到位于用户空间的虚拟机客户端发送的输入输出请求之前,所述处理单元,还用于:通过用户态应用程序,加载伯克利包过滤器程序,所述伯克利包过滤器程序用于表征所述钩子函数的设置位置,以及所述钩子函数对应的指令处理流程;将所述伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,并经所述扩展伯克利包过滤器模块处理后,生成所述内核本地代码;将所述内核本地代码映射至对应的钩子函数,并将所述钩子函数设置于初始处理程序中,生成所述目标处理程序。
根据本公开的一个或多个实施例,所述处理单元在将所述伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块时,具体用于:对所述伯克利包过滤器程序进行编译,生成所述伯克利包过滤器程序对应的字节码;将所述字节码发送至内核空间的扩展伯克利包过滤器模块。
根据本公开的一个或多个实施例,所述处理单元在经所述扩展伯克利包过滤器模块处理后,生成所述内核本地代码时,具体用于:通过所述扩展伯克利包过滤器模块加载所述伯克利包过滤器程序对应的字节码;通过所述扩展伯克利包过滤器模块对所述字节码进行验证,得到验证结果,若所述验证结果为验证通过,则将所述字节码转换为内核本地代码。
根据本公开的一个或多个实施例,所述处理单元,还用于:若所述验证结果为验证未通过,则将验证信息返回给所述用户态应用程序,其中,所述验证信息表征所述验证结果和/或导致所述验证结果的原因。
根据本公开的一个或多个实施例,所述扩展伯克利包过滤器模块中包括验证器子模块和即时编译子模块;所述处理单元在通过所述扩展伯克利包过滤器模块对所述字节码进行验证,得到验证结果时,具体用于:通过所述验证器子模块对所述字节码的运行安全性进行验证,得到验证结果;所述处理单元在将所述字节码转换为内核本地代码时,具体用于:通过所述即时编译子模块,在内核空间中将所述字节码转换为内核本地代码。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的请求处理方法。
第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的请求处理方法。
第五方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的请求处理方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (12)
1.一种请求处理方法,其特征在于,包括:
在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;
通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
2.根据权利要求1所述的方法,其特征在于,所述通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果,包括:
通过所述内核虚拟机模块调用所述目标处理程序中的钩子函数,得到所述钩子函数对应的目标内核本地代码;
通过所述内核虚拟机模块对应的处理器进程执行所述目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
3.根据权利要求2所述的方法,其特征在于,所述通过所述内核虚拟机模块对应的处理器进程执行所述目标内核本地代码,以对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果,包括:
读取虚拟输入输出队列,获得所述输入输出请求对应的操作数据的虚拟内存区域;
将所述虚拟机客户端的处理器进程退回到内核空间;
通过所述处理器进程执行所述目标内核本地代码,将所述虚拟内存区域对应的操作数据写入所述虚拟输入输出设备,或者,将所述虚拟输入输出设备内的数据写入所述虚拟内存区域。
4.根据权利要求1所述的方法,其特征在于,在在接收到位于用户空间的虚拟机客户端发送的输入输出请求之前,还包括:
通过用户态应用程序,加载伯克利包过滤器程序,所述伯克利包过滤器程序用于表征所述钩子函数的设置位置,以及所述钩子函数对应的指令处理流程;
将所述伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,并经所述扩展伯克利包过滤器模块处理后,生成所述内核本地代码;
将所述内核本地代码映射至对应的钩子函数,并将所述钩子函数设置于初始处理程序中,生成所述目标处理程序。
5.根据权利要求4所述的方法,其特征在于,所述将所述伯克利包过滤器程序发送至内核空间的扩展伯克利包过滤器模块,包括:
对所述伯克利包过滤器程序进行编译,生成所述伯克利包过滤器程序对应的字节码;
将所述字节码发送至内核空间的扩展伯克利包过滤器模块。
6.根据权利要求4所述的方法,其特征在于,所述经所述扩展伯克利包过滤器模块处理后,生成所述内核本地代码,包括:
通过所述扩展伯克利包过滤器模块加载所述伯克利包过滤器程序对应的字节码;
通过所述扩展伯克利包过滤器模块对所述字节码进行验证,得到验证结果,若所述验证结果为验证通过,则将所述字节码转换为内核本地代码。
7.根据权利要求6所述的方法,其特征在于,所方法还包括:
若所述验证结果为验证未通过,则将验证信息返回给所述用户态应用程序,其中,所述验证信息表征所述验证结果和/或导致所述验证结果的原因。
8.根据权利要求6所述的方法,其特征在于,所述扩展伯克利包过滤器模块中包括验证器子模块和即时编译子模块;
所述通过所述扩展伯克利包过滤器模块对所述字节码进行验证,得到验证结果,包括:
通过所述验证器子模块对所述字节码的运行安全性进行验证,得到验证结果;
所述将所述字节码转换为内核本地代码,包括:
通过所述即时编译子模块,在内核空间中将所述字节码转换为内核本地代码。
9.一种请求处理装置,其特征在于,包括:
处理单元,用于在接收到位于用户空间的虚拟机客户端发送的输入输出请求后,通过调用内核空间的内核虚拟机模块,确定所述输入输出请求对应的目标处理程序,其中,所述目标处理程序中包含有用于实现所述输入输出请求对应的指令处理流程的钩子函数,所述钩子函数映射至内核可执行的内核本地代码;
控制单元,用于通过在所述内核空间内执行所述目标处理程序,对虚拟机主机端的虚拟输入输出设备进行操作,得到请求结果。
10.一种电子设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至8任一项所述的请求处理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至8任一项所述的请求处理方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311641143.6A CN117608756A (zh) | 2023-12-01 | 2023-12-01 | 请求处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311641143.6A CN117608756A (zh) | 2023-12-01 | 2023-12-01 | 请求处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117608756A true CN117608756A (zh) | 2024-02-27 |
Family
ID=89944118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311641143.6A Pending CN117608756A (zh) | 2023-12-01 | 2023-12-01 | 请求处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608756A (zh) |
-
2023
- 2023-12-01 CN CN202311641143.6A patent/CN117608756A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984174B (zh) | 跨平台的应用创建方法、装置、服务器和存储介质 | |
US20190087212A1 (en) | Android simulator and method for implementing android simulator | |
EP3123315B1 (en) | Hierarchical directives-based management of runtime behaviors | |
ES2886760T3 (es) | Redirección de API para sistemas operativos de capacidad limitada | |
US10963267B2 (en) | Bootstrapping profile-guided compilation and verification | |
CN109726067B (zh) | 一种进程监控方法以及客户端设备 | |
JP2017146966A (ja) | パッケージファイルに対する機能拡張方法およびシステム | |
US10713139B2 (en) | System level testing of multi-threading functionality including building independent instruction streams while honoring architecturally imposed common fields and constraints | |
CN110362371B (zh) | 视图层级的控制方法、装置及系统、计算机设备及介质 | |
CN111736838A (zh) | 一种跨语言编译方法及设备 | |
CN110704833A (zh) | 数据权限配置方法、设备、电子设备及存储介质 | |
WO2022017242A1 (zh) | 在第一系统运行第二系统应用的方法、装置、设备及介质 | |
WO2023123850A1 (zh) | 一种固件可信根的实现方法、装置、设备和可读存储介质 | |
US10810105B2 (en) | Logging stored information for identifying a fix for and/or a cause of an error condition | |
CN110489162A (zh) | 安装包so文件精简方法、装置、介质和设备 | |
CN112416303B (zh) | 软件开发工具包热修复方法、装置及电子设备 | |
US11249760B2 (en) | Parameter management between programs | |
CN110908882A (zh) | 一种应用程序的性能分析方法、装置、终端设备及介质 | |
CN117608756A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN112528273B (zh) | 医疗数据的探测方法、装置、介质及电子设备 | |
US9697018B2 (en) | Synthesizing inputs to preserve functionality | |
CN113296876B (zh) | 虚拟机的设备直通方法、设备及存储介质 | |
CN116263824A (zh) | 资源访问方法、装置、存储介质以及电子设备 | |
CN113448585A (zh) | 一种对线程池的优化方法、装置、电子设备和存储介质 | |
US20160224258A1 (en) | Generating computer programs for use with computers having processors with dedicated memory |
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 |