一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

MMIO处理方法及装置与流程

2022-11-19 06:20:56 来源:中国专利 TAG:
mmio处理方法及装置
技术领域
:1.本技术涉及计算机应用
技术领域
:,特别是涉及一种mmio(memorymappedio,内存映射输入输出)处理方法及装置。
背景技术
::2.mmio是pci(peripheralcomponentinterconnect,外设组件互连标准)规范的一部分。i/o设备被放置于内存空间,mmio就是通过将外围设备映射到内存空间,便于cpu的访问。3.存在一些pci设备直通场景,诸如gpu直通场景,所谓pci设备直通指的是将承载虚拟机的物理机上的pci设备绑定分配给用户虚拟机,终端用户(在公有云场景下称为“租户”)可以通过终端设备远程接入用户虚拟机,直接访问pci设备的相关寄存器。例如gpu设备的mmio(memorymappedio,内存映射输入输出)寄存器透传给guest(运行在虚拟机内的软件)后,guest可以随意访问这些mmio寄存器。然而在实际生产环境中发现,guest对mmio的非预期访问可能会导致pci设备异常,甚至host(宿主机)异常。在公有云这种多租户的服务场景中,一台host上可能同时运行着多个虚拟机实例。为了防止guest对gpu设备的非预期操作影响到host,进而影响到其他guest,需要对pci设备的一些敏感mmio操作进行拦截过滤。对pci设备来说,mmio写操作相对于mmio读操作更加容易导致pci设备异常,需要重点关注。因此需要对mmio写操作进行拦截过滤,mmio读操作通常不会导致设备异常,不应该对其进行拦截过滤。为了实现对mmio操作的拦截需要用到vmm(virtualmachinemonitor,虚拟机管理器)提供的mmio虚拟化机制,但现有vmm提供的mmio虚拟化机制并不具备区分mmio读写的能力,使得会对mmio读操作和写操作都进行拦截。然而在一些服务场景下,mmio读操作比mmio写操作更为频繁,这就意味着存在大量不必要的mmio读操作拦截过滤而产生较大的开销浪费。技术实现要素:4.有鉴于此,本技术提供了一种mmio处理方法及装置,以便于降低mmio操作产生的开销。5.本技术提供了如下方案:6.第一方面,提供了一种mmio处理方法,由vmm执行,该方法包括:7.接收来自客户机guest的内存访问指令,所述内存访问指令携带客户机物理地址gpa;8.查询所述gpa对应的虚拟化页表表项,若不存在所述gpa对应的虚拟化页表表项且确认所述内存访问指令为预设的mmio访问,则设置所述gpa对应的虚拟化页表表项,其中设置所述gpa对应的虚拟化页表表项的位域,以指示允许mmio读操作但不允许mmio写操作。9.根据本技术实施例中一可实现的方式,设置所述gpa对应的虚拟化页表表项的位域以指示允许mmio读操作但不允许mmio写操作包括:10.设置所述gpa对应的虚拟化页表表项的位域后三位为0b101。11.根据本技术实施例中一可实现的方式,确认所述内存访问指令为预设的mmio访问包括:12.查询所述gpa对应的地址空间为预设的mimo内存空间,则确定所述内存访问指令为预设的mmio访问;或者,13.根据预先存储的预设的mmio访问的信息,确定所述内存访问指令是否为预设的mmio访问,其中,所述预设的mmio访问的信息是由虚拟机模拟器调用预设的第一接口传递给vmm的。14.根据本技术实施例中一可实现的方式,设置所述gpa对应的虚拟化页表表项包括:15.获取预先存储的所述gpa对应的hva信息,所述gpa及其对应的hva信息是由虚拟机模拟器调用预设的第二接口传递给vmm的;16.从页表中查询hva信息对应的主机物理地址hpa信息;17.将所述hpa的信息设置于所述gpa对应的虚拟化页表表项中。18.根据本技术实施例中一可实现的方式,在设置所述gpa对应的虚拟化页表表项之后,还包括:19.若所述内存访问指令为读指令,则确定所述gpa对应的hpa后,调用相关读处理函数对所述hpa对应的内存空间进行读操作;20.若所述内存访问指令为写指令,则触发虚拟化页表异常的退出事件以对所述内存访问指令进行拦截过滤。21.根据本技术实施例中一可实现的方式,所述方法还包括:22.若存在所述gpa对应的虚拟化页表表项,且所述gpa对应的虚拟化页表表项的位域指示允许mmio读操作但不允许mmio写操作,且确认所述内存访问指令为读指令,则确定所述gpa对应的hpa后,调用相关读处理函数对所述hpa对应的内存空间进行读操作;或者,23.若存在所述gpa对应的虚拟化页表表项,且所述gpa对应的虚拟化页表表项的位域指示允许mmio读操作但不允许mmio写操作,且确认所述内存访问指令为写指令,则触发虚拟化页表violation异常的退出事件以对所述内存访问指令进行拦截过滤。24.根据本技术实施例中一可实现的方式,所述预设的mmio访问为pci设备直通场景下对所述pci设备的mmio访问。25.第二方面,提供了一种mmio处理装置,设置于vmm,该装置包括:指令接收单元、表项查询单元、第一异常处理单元和表项设置单元;26.所述指令接收单元,被配置为接收来自客户机guest的内存访问指令,所述内存访问指令携带gpa;27.所述表项查询单元,被配置为查询所述gpa对应的虚拟化页表表项,若不存在所述gpa对应的虚拟化页表表项,则触发异常处理单元;28.所述异常处理单元,被配置为受到所述表项查询单元的触发后,确认所述内存访问指令是否为预设的mmio访问,如果是,则触发表项设置单元;29.所述表项设置单元,被配置为受到所述第一异常处理单元的触发后,设置所述gpa对应的虚拟化页表表项,其中设置所述gpa对应的虚拟化页表表项的位域以指示允许mmio读操作但不允许mmio写操作。30.根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。31.根据第四方面,提供了一种电子设备,其特征在于,包括:32.一个或多个处理器;以及33.与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述第一方面中任一项所述的方法的步骤。34.根据第五方面,本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。35.根据本技术提供的具体实施例,本技术可以具备以下技术效果:36.1)本技术中对于预设的mmio访问,若不存在对应的虚拟化页表表项,则设置该gpa对应的虚拟化页表表项的位域以指示允许mmio读操作但不允许mmio写操作。也就是说,对于首次的预设mmio访问,对ept表项的域位设置进行更改,设置为指示允许mmio读操作但不允许mmio写操作,使得后续仅对同一地址的mmio写操作触发异常而进行拦截处理,对同一地址的mmio读操作则不会触发异常而进行拦截处理,从而从整体上降低了mmio操作产生的开销。37.2)本技术中虚拟机模拟器通过新增接口的方式将预设的mmio访问的信息传递给vmm,从而方便vmm确定内存访问指令为预设的mmio访问,以与传统mmio访问进行有效区分。38.3)本技术中虚拟机模拟器还通过新增接口的方式将gpa的信息对应的hpa的信息传递给vmm,以方便vmm进行虚拟化页表表项的设置。39.4)本技术可以应用于pci设备直通场景,在保证对mmio写指令拦截过滤的基础上,放行mmio读指令,在保证安全直通的前提下尽可能降低了mmio处理所产生的开销,同时兼顾了安全和性能。40.当然,实施本技术的任一产品并不一定需要同时达到以上所述的所有优点。附图说明41.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。42.图1是本技术实施例提供的系统架构图;43.图2为本技术实施例提供的qemu&kvm框架的示意图;44.图3为本技术实施例提供的主要方法流程图;45.图4为本技术实施例提供的一种优选方法流程图;46.图5示出根据一个实施例的mmio处理装置的示意性框图;47.图6为本技术实施例提供的电子设备的示意性框图。具体实施方式48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本技术保护的范围。49.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。50.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。51.取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。52.为了方便对本技术实施例的理解,首先对本技术实施例所基于的系统架构进行简单描述。如图1所示,在该系统架构中,vmm(virtualmachinemonitor,虚拟机管理器)位于虚拟机与底层硬件设备之间的虚拟层,直接运行于硬件设备上,负责对硬件资源进行抽象,为生成虚拟机vm(virtualmachine,虚拟机)即客户机(guest)提供运行环境所需要的资源,并使得每个vm都不互相干扰。其中,vm指运行在宿主机上的通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。53.虚拟机模拟器负责硬件设备的模拟,包括处理器、内存、pci设备等。其中pci设备可以是诸如网卡、显卡、存储控制器和硬盘等。54.该系统架构可以采用多种具体的实现架构,在本技术实施例中以qemu(quickemulator,一种开源的系统虚拟化实现)&kvm(kernelvirtualmachine,内核虚拟机)为例,如图2中所示。55.kvm模块是vmm的核心部分,kvm除了初始化硬件系统,打开虚拟化模式,然后将各vm(virtualmachine,虚拟机)即客户机(guest)运行在虚拟机模式之外,主要负责cpu虚拟化和内存虚拟化。qemu可以模拟所有的硬件设备,包括处理器、内存、pci设备等,并提供一系列的硬件模型,使guest认为自己和硬件直接打交道,其实是和qemu模拟出来的硬件打交道。硬件设备的模拟一般不由kvm模块负责,一般来说,只有对性能要求比较高的虚拟设备才会由kvm内核模块来直接负责,比如虚拟中断控制器和虚拟时钟。56.在qemu-kvm中,kvm运行在内核空间,qemu运行在用户空间,实际模拟创建、管理各种虚拟硬件。57.处理器对设备的访问主要是通过io指令和mmio,其中io指令会被处理器直接截获,mmio会通过配置内存虚拟化来捕捉。本技术实施例中涉及的是在此系统架构下的mmio处理。58.为了方便对传统mmio虚拟化机制以及本技术的理解,首先对ept机制进行简单介绍。59.vmx(virtualmachineextension,虚拟机扩展)引入了ept(extendedpagetable,扩展页表)这种虚拟化页表机制来实现vm物理地址空间的隔离。当guest访问内存时,生成gpa(guest-physicaladdress,客户机物理地址),cpu接收到guest传来的gpa后,通过ept转换为hpa(host-physicaladdress,主机物理地址),从而访问主机上的物理地址。60.ept异常包括eptviolation和eptmisconfiguration两种。eptmisconfiguration是指访问的ept表项内容是现有体系中不支持的内容,eptviolation是指除了eptmisconfiguration之外的异常,包括访问ept的页表项表示的页是不存在的、访问权限与页表项中设置的访问权项不一致等。61.传统mmio虚拟化的实现机制为:62.当guest首次访问一个mmio地址时,由于该mmio访问所对应的ept表项尚未建立,kvm会去检查该mmio访问的gpa对应的vm地址空间以确认本次访问是mmio访问,并开始设置ept中的表项。mmio对应的ept表项与一般的系统内存页不同,表项的域位(bitpositon)最低三位被设置为0b110。其中0b用以指示c语言中的二进制数据。63.经过观察和研究后发现,最低三位为0b110的组合使得后续guest在访问ept页表项对应的mmio地址时,无论是mmio读操作还是mmio写操作,都会产生vm-exit(退出事件),这是qemu&kvm提供的mmio机制无法做到只拦截mmio写操作的根本原因。有鉴于此,本技术提供了一种新的mmio处理方法来实现只拦截mmio写操作。64.图3为本技术实施例提供的主要方法流程图,该方法可以由图1所示系统架构中的vmm执行,对应图2所示架构时,可以由kvm执行。如图3中所示,该方法可以包括以下步骤:65.步骤302:接收来自guest的内存访问指令,该内存访问指令携带gpa。66.步骤304:查询该gpa对应的ept表项。67.步骤306:若不存在gpa对应的ept表项且确认上述内存访问指令为预设的mmio访问,则设置该gpa对应的ept表项,其中设置该gpa对应的ept表项的位域以指示允许mmio读操作但不允许mmio写操作。68.由上面流程可以看出,本技术中对于预设的mmio访问,若不存在对应的ept表项,则设置该gpa对应的ept表项的位域以指示允许mmio读操作但不允许mmio写操作。也就是说,对于首次的预设mmio访问,对ept表项的域位设置进行更改,设置为指示允许mmio读操作但不允许mmio写操作,使得后续仅对同一地址的mmio写操作触发ept异常而进行拦截处理,对同一地址的mmio读操作则不会触发ept异常而进行拦截处理,从而从整体上降低了mmio操作产生的开销。69.下面结合实施例对上述方法进行详细描述。图4为本技术实施例提供的一种优选方法流程图,如图4中所示,该方法可以包括以下步骤:70.步骤402:接收来自guest的内存访问指令,该内存访问指令携带gpa。71.当guest需要进行一个mmio访问时,会发送内存访问指令。由于mmio就是通过将外围设备映射到内存空间便于cpu的访问,因此对于mmio访问发送的指令与访问内存时发送的指令是类似的。另外,起初guest发送的内存访问指令携带的是gva,经过guestos的页表转换后,将gva(guest-virtualaddress,客户机虚拟地址)转换为gpa携带在内存访问指令中。因此kvm接收到的内存访问指令中携带gpa,并且该内存访问指令中会存在指示读操作或写操作的信息用以指示该指令是读指令还是写指令。72.步骤404:查询该gpa对应的ept表项,如果不存在该gpa对应的ept表项,则执行步骤406;如果存在,执行步骤410。73.每个ept页面大小是4kb,每个ept页表项为64位的位域。ept表项中包含的主要内容是gpa对应的hpa信息,通常存储于位域的第12到第n-1位,其中n为物理地址最高位数,通常取48。74.步骤406:触发eptviolation异常,确认该内存访问指令是否为预设的mmio访问,如果是,执行步骤408(图中仅示出该分支);否则按照已有的传统方式进行处理。75.若尚未建立gpa对应的ept表项则会触发eptviolation异常的vm-exit事件,切换到根模式,由kvm进行干预,确定该内存访问指令的类型。76.作为其中一种可实现的方式,kvm可以查询gpa对应的地址空间是否为预设的mmio内存空间,如果是则确定该内存访问指令为预设的mmio访问。77.硬件设备初始化时,qemu在注册一个内存区域时会区分两种不同的类型:系统内存和mmio区域。针对系统内存区域,会为其在kvm中注册对应的存储区间(memoryslot)。而针对mmio区域,则不会为其在kvm中注册对应的memoryslot,而是io类型(不是ram类型)的memoryregion(存储区域)。因此kvm可以通过查询gpa对应的地址空间来区分是否为mmio访问。78.更进一步地,因为只有在一些特定情形下才需要采用本技术实施例中的方式仅对mmio写操作进行拦截过滤,例如在gpu直通场景下。而在其他情形下仍需要采用传统mmio处理方式。因此,为了实现本技术所提供的mmio处理与传统mmio处理方式的兼容,可以对需要采用本技术所提供的mmio处理方式的guest所对应硬件设备的mmio区域进行特别区分,将访问该mmio区域的访问作为预设的mmio访问。79.作为另一种可实现的方式,kvm可以查询预先存储的预设的mmio访问的信息,以确定内存访问指令是否为预设的mmio访问,其中,预设的mmio访问的信息是由qemu调用预设的第一接口传递给vmm的。80.qemu本身负责硬件设备的模拟,知晓所有mmio的信息,包括预设的mmio访问的信息(例如gpu直通场景的访问)以及传统的mmio访问。在本技术实施例中新增加了一个接口,该接口可供qemu调用以将预设的mmio访问的信息传递给kvm,以供kvm进行预先存储。其中预设的mmio访问的信息可以包括诸如mmio在设备文件中的offset(偏移)、所在内存区域的大小、对应的gpa等等。这样kvm就能够通过查询预先存储的预设的mmio访问的信息来确认本次内存访问指令是否为预设的mmio访问,例如,本次内存访问指令携带的gpa包含于预设的mimo访问的信息,则认为本次内存访问指令为预设的mmio访问,从而与传统mmio访问进行有效区分。81.步骤408:设置gpa对应的ept表项,其中设置gpa对应的ept表项的位域以指示允许mmio读操作但不允许mmio写操作。82.对于一个mmio地址的初次访问,在设置gpa对应的ept表项时,重点就是设置gpa对应的hpa以及位域后三位。83.为了方便kvm获取gpa对应的hpa来构建ept表项,可以新增加一个接口,本技术实施例称为第二接口。qemu预先通过调用该第二接口将gpa及其对应的hva信息传递给kvm,以使得kvm能够获取预先存储的gpa对应的hva信息,由于之前内核已经将hva对应的hpa信息存储于页表中,因此kvm能够查询页表获取hva信息对应的hpa信息,从而设置ept表项,即将hpa的信息设置于该gpa对应的ept表项中。84.其中,上述第一接口和第二接口可以采用同一个预设接口,也可以采用不同的预设接口。若采用同一个预设接口,则可以通过一次接口调用同时传递预设的mmio访问信息和gpa对应的hva的信息。85.上面实施例中已经提及,gpa对应的hpa信息,通常存储于位域的第12位到第n-1位,其中n为物理地址最高位数,通常取36。该第12位到第n-1位指向该表项控制的4k比特的页表。本步骤中,将获取的hpa信息填至gpa对应的ept表项的第12位到第n-1位。具体来说,就是将hpa的地址右移12位后得到的数值放在第12位到第n-1位。86.ept表项的位域后三位通常定义如下表所示:87.表188.位域内容0用以指示是否允许读操作1用以指示是否允许写操作2用以指示是否允许从该表项控制的页表进行指令获取。89.本步骤中,针对预设的mmio访问,设置其gpa对应的ept表项的位域后三位为0b101。其中第2位未进行修改,仍用1指示允许从该表项控制的页表进行指令获取,但修改了第0位和第1位,指示允许读操作但禁止写操作。这样在后续接收到针对同一mmio(即携带同一gpa)的mmio读指令时,不会触发eptviolation异常的退出事件,只有接收到针对同一mmio(即携带同一gpa)的mmio写指令时,才会触发eptviolation异常的退出事件,从而对mmio写指令进行拦截过滤。90.在设置完ept表项之后,退出根模式,执行步骤412。91.步骤410:确定gpa对应的ept表项的位域指示允许mmio读操作但不允许mmio写操作,则执行步骤412。92.步骤412:确定当前内存访问指令是mmio读指令还是mmio写指令,如果是mmio读指令,则执行步骤414;如果是mmio写指令,则执行步骤416。93.本步骤实际上对应的是内存访问指令为非首次访问mmio的情况,因为首次访问时已经设置了ept表项,若设置的ept表项的位域指示允许mmio读操作但不允许mmio写操作,例如位域后三位设置为0b101,则说明当前内存访问指令为预设的mmio访问。此时可以进一步区分当前的内存访问指令是读指令还是写指令。94.步骤414:确定gpa对应的hpa后,调用读处理函数对hpa对应的内存空间进行读操作。95.如果在上面步骤中判断为读指令,即mmio读指令,则按照ept表项的后三位位域的指示,是允许读指令的,因此可以依据ept表项中的页表将gpa转换为hpa,然后调用读处理函数对hpa对应的内存空间进行读操作。96.步骤416:触发eptviolation异常的退出事件以对该mmio写指令进行拦截过滤。97.如果在步骤412中判断为写指令,即mmio写指令,则按照ept表项的后三位位域的指示,是不允许写指令的,因此触发eptviolation异常的vm-exit,由kvm对该mmio写指令进行拦截。kvm对该mmio写指令进行拦截后,依据预设的策略进行过滤处理。如果依据预设的策略需要过滤掉该mmio写指令,则丢弃该mmio写指令,还可以进一步返回相应的报错消息。如果依据预设的策略允许该mmio写指令,则将该mmio写指令发送给qemu进行后续处理,即进行mmio写模拟。即qemu根据gpa和pcibar的信息,计算出mmio在设备文件中的偏移,其中设备文件是设备驱动提供的,pcibar用以存储各设备驱动提供的设备文件,设备文件包括设备的地址配置信息。然后通过设备文件的偏移对设备进行写操作。实际操作设备的动作将在设备驱动中完成。98.其中过滤处理所采用的策略可以根据服务需要进行服务层面的设置,该部分可以采用现有技术,在此不做详述。99.下面对上述方法流程的应用场景举一个例子:100.在gpu直通场景下,guest需要读取gpu的设备状态时,可以发送包含gpa的mmio读指令,该gpa是存储gpu设备状态信息的hpa对应的gpa,对于guest而言仅能够获知经过虚拟化后暴露给guest的gpa地址。然后kvm采用上述实施例中的方式,能够保证该mmio读指令不会被拦截,能够正常地被执行,读取到gpu的设备状态。101.若guest需要通过gpu处理数据,可以将要处理的数据通过mmio写指令携带,该mmio写指令携带gpa。然后kvm采用上述实施例中的方式,mmio写指令因为其敏感性会被拦截,然后基于预设的过滤策略执行过滤判断,如果被过滤掉,则可以向guest返回相关错误消息。如果未被过滤掉,则可以提交给qemu进行模拟写操作。102.可以看出,在上述gpu直通场景下能够实现仅对gpu的mmio写指令进行拦截过滤,而对于更为频繁的mmio读指令则不进行拦截过滤,降低了mmio操作产生的开销以及对主机性能所产生的影响。103.需要说明的是,本技术上述实施例虽然以kvm&qemu架构为例进行描述,但本技术所提供的方法和装置也能够适用于其他vmm实现架构。另外,在其他实现架构中,虚拟化页表除了上述ept之外,还可以采用诸如npt(nestedpagetables,嵌套页表)等其他形式。104.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。105.根据另一方面的实施例,提供了一种mmio处理装置。图5示出根据一个实施例的mmio处理装置的示意性框图,该装置设置于图1所示架构中的vmm中。如图5所示,该装置500可以包括:指令接收单元501、表项查询单元502、异常处理单元503和表项设置单元504,还可以进一步包括指令处理单元505。其中各组成单元的主要功能如下:106.指令接收单元501,被配置为接收内存访问指令,内存访问指令携带gpa。107.表项查询单元502,被配置为查询gpa对应的虚拟化页表表项,若不存在gpa对应的虚拟化页表表项,则触发异常处理单元503。108.异常处理单元503,被配置为受到表项查询单元的触发后,确认内存访问指令是否为预设的mmio访问,如果是,则触发表项设置单元504。109.表项设置单元504,被配置为受到第一异常处理单元的触发后,设置gpa对应的虚拟化页表表项,其中设置gpa对应的虚拟化页表表项的位域以指示允许mmio读操作但不允许mmio写操作。110.其中,上述虚拟化页表可以包括ept或npt等。111.作为其中一种可实现的方式,表项设置单元504可以设置gpa对应的虚拟化页表表项的位域后三位为0b101。112.作为其中一种可实现的方式,第一异常处理单元503在确认内存访问指令为预设的mmio访问时,可以查询gpa对应的地址空间为预设的mimo内存空间,则确定内存访问指令为预设的mmio访问。113.作为另一种可实现的方式,第一异常处理单元503在确认内存访问指令为预设的mmio访问时,还可以查询预先存储的预设的mmio访问的信息,以确定该内存访问指令是否为预设的mmio访问,其中,上述预设的mmio访问的信息是由虚拟机模拟器调用预设的第一接口传递给vmm的。114.更进一步地,上述表项设置单元504还可以被配置为:获取预先存储的gpa对应的hva信息,上所述gpa及其对应的hva信息是由虚拟机模拟器调用预设的第二接口传递给vmm的;从页表中查询hva信息对应的hpa信息;将hpa的信息设置于gpa对应的虚拟化页表表项中。115.更进一步地,上述表项设置单元504设置gpa对应的虚拟化页表表项之后,触发指令处理单元505。116.指令处理单元505,被配置为受到表项设置单元504的触发后,若内存访问指令为读指令,则确定gpa对应的hpa后,调用相关读处理函数对该hpa对应的内存空间进行读操作;若内存访问指令为写指令,则触发虚拟化页表异常的退出事件以对内存访问指令进行拦截过滤。117.作为其中一种可实现的方式,若表项查询单元502确定存在gpa对应的虚拟化页表表项,且gpa对应的虚拟化页表表项的位域指示允许mmio读操作但不允许mmio写操作,则触发指令处理单元505。118.指令处理单元505,被配置为受到表项查询单元502的触发后,若内存访问指令为读指令,则确定gpa对应的hpa后,调用相关读处理函数对该hpa对应的内存空间进行读操作;若内存访问指令为写指令,则触发虚拟化页表异常的退出事件以对内存访问指令进行拦截过滤。119.作为一种典型的应用场景,上述预设的mmio访问可以为pci设备直通场景下对该pci设备的mmio访问。上述vmm可以为kvm,上述虚拟机模拟器可以为qemu。120.另外,本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。121.以及一种电子设备,包括:122.一个或多个处理器;以及123.与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述方法实施例中任一项所述的方法的步骤。124.本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。125.其中,图6示例性的展示出了电子设备的架构,具体可以包括处理器610,视频显示适配器611,磁盘驱动器612,输入/输出接口613,网络接口614,以及存储器620。上述处理器610、视频显示适配器611、磁盘驱动器612、输入/输出接口613、网络接口614,与存储器620之间可以通过通信总线630进行通信连接。126.其中,处理器610可以采用通用的cpu、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本技术所提供的技术方案。127.存储器620可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器620可以存储用于控制电子设备600运行的操作系统621,用于控制电子设备600的低级别操作的基本输入输出系统(bios)622。另外,还可以存储网页浏览器623,数据存储管理系统624,以及mmio处理装置625等等。上述mmio处理装置625就可以是本技术实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本技术所提供的技术方案时,相关的程序代码保存在存储器620中,并由处理器610来调用执行。128.输入/输出接口613用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。129.网络接口614用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。130.总线630包括一通路,在设备的各个组件(例如处理器610、视频显示适配器611、磁盘驱动器612、输入/输出接口613、网络接口614,与存储器620)之间传输信息。131.需要说明的是,尽管上述设备仅示出了处理器610、视频显示适配器611、磁盘驱动器612、输入/输出接口613、网络接口614,存储器620,总线630等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本技术方案所必需的组件,而不必包含图中所示的全部组件。132.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序产品的形式体现出来,该计算机程序产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。133.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。134.以上对本技术所提供的技术方案进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本技术的限制。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献