CN111666579B - 计算机设备及其访问控制方法和计算机可读介质 - Google Patents

计算机设备及其访问控制方法和计算机可读介质 Download PDF

Info

Publication number
CN111666579B
CN111666579B CN202010558828.4A CN202010558828A CN111666579B CN 111666579 B CN111666579 B CN 111666579B CN 202010558828 A CN202010558828 A CN 202010558828A CN 111666579 B CN111666579 B CN 111666579B
Authority
CN
China
Prior art keywords
access
hardware
virtual machine
resource
execution environment
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
Application number
CN202010558828.4A
Other languages
English (en)
Other versions
CN111666579A (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.)
ARM Technology China Co Ltd
Original Assignee
ARM Technology China 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 ARM Technology China Co Ltd filed Critical ARM Technology China Co Ltd
Priority to CN202010558828.4A priority Critical patent/CN111666579B/zh
Publication of CN111666579A publication Critical patent/CN111666579A/zh
Application granted granted Critical
Publication of CN111666579B publication Critical patent/CN111666579B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/107Network architectures or network communication protocols for network security for controlling access to devices or network resources wherein the security policies are location-dependent, e.g. entities privileges depend on current location or allowing specific operations only from locally connected terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及计算机***领域,公开了一种计算机设备的访问控制的方法,计算机设备、及其计算机可读介质。本发明的访问控制的方法包括:计算机设备的硬件访问控制器获取到计算机设备的第一执行环境通过计算机设备的第一硬件设备向计算机设备的第二资源发起的直接内存访问请求,其中,第一执行环境对第一硬件设备上的第一资源具有初始访问权限,第二执行环境对第二资源具有初始访问权限;硬件访问控制器判断出第一执行环境对第二资源不具有访问权限后;硬件访问控制器拦截第一执行环境通过第一硬件设备对第二资源的直接内存访问。本方法能够拦截执行环境对不具有访问权限的计算机设备的资源发起的直接内存访问请求,能够避免产生安全性问题。

Description

计算机设备及其访问控制方法和计算机可读介质
技术领域
本发明涉及计算机***领域,特别涉及一种计算机设备及其访问控制方法和计算机可读介质。
背景技术
通常,CPU(Central Processing Unit,中央处理器)控制硬件设备之间的访问,CPU通过运行程序来执行CPU、内存与硬件设备之间的访问,实现硬件设备之间的数据传送。CPU通过总线与硬件设备通信连接,并且CPU基于总线对硬件设备的资源分配一个地址空间,地址空间是硬件设备在总线上的物理地址区域,分配了物理地址区域的硬件设备就可以被CPU或者是其他硬件设备访问。
这里,能够获得总线的控制权的硬件设备可以称为主设备,被主设备通过物理地址寻址进行访问的设备称为从设备,这里的物理地址寻址就是向物理地址发出访问请求。主设备可以通过总线与被它寻址的从设备进行数据交换,例如,执行环境(ExecutionEnvironment,EE)驱动主设备通过DMA(Direct Memory Access,直接内存访问)访问的方式抢占了总线的控制权后,访问从设备。
这里的执行环境,是一种模拟的计算机设备并且具有硬件可执行单元、易失和非易失存储,可以运行独立软件栈的体系。其中,最典型的执行环境就是虚拟机,在有多个虚拟机同时访问硬件设备的情况下,如果其中一个访问主设备的虚拟机驱动主设备抢占了总线的控制权后,该虚拟机就可以通过物理地址寻址的方式访问其他的资源,也就是一个虚拟机可以读取/写入未分配给它的资源,这种情况叫做虚拟机溢出。
例如,***包含有第一执行环境,第二执行环境,第一执行环境使用GPU。这里,第一执行环境访问的GPU就是主设备。如果第一执行环境通过主设备GPU向第二执行环境使用的内存区域进行DMA访问,则可能访问到第二执行环境正在使用的内存区域。
发明内容
本发明的目的在于提供一种计算机设备及其访问控制方法和计算机可读介质,能够判断执行环境通过硬件设备发出的直接内存访问中包含的物理地址是否属于该执行环境具有访问权限的物理地址区域内,在判断出该执行环境具有访问权限的情况下,允许执行环境对物理地址进行直接内存访问,能够避免产生安全性问题。
本发明的第一方面提供了一种计算机设备,其特征在于,包括第一执行环境和第二执行环境、第一硬件设备、第一硬件访问控制器、以及总线;其中,第一执行环境对第一硬件设备上的第一资源具有初始访问权限,第二执行环境对第二资源具有初始访问权限;第一硬件访问控制器分别与第一硬件设备和总线连接,并且第一硬件访问控制器能够获取到第一执行环境通过第一硬件设备向第二资源发起的直接内存访问请求,并在判断出第一执行环境对第二资源不具有访问权限的情况下,拦截第一执行环境通过第一硬件设备对第二资源的直接内存访问。
即在该方案中,第一执行环境被分配访问第一硬件设备的第一资源,也就是第一执行环境具有访问该第一资源对应的物理地址区域的权限。第一硬件访问控制器,设置于第一硬件设备和总线之间,能够监听第一硬件设备经过总线发出的数据或者指令。在第一执行环境通过第一硬件设备向第二资源发出直接内存访问请求的情况下,第一硬件访问控制器通过直接验证物理地址的方式,也就是,第一硬件访问控制器获取第一执行环境发出的直接内存访问请求中的物理地址后,第一硬件访问控制器判断该物理地址是否属于该第一执行环境具有访问权限的物理地址区域内,在判断出该第一执行环境具有访问权限的情况下,允许第一执行环境对物理地址进行直接内存访问。在判断出该第一执行环境不具有访问权限的情况下,阻止该直接内存访问经过第一硬件访问控制器,也就是第一硬件访问控制器拦截该直接内存访问。
在上述第一方面的一种可能的实现中,还包括第二硬件设备,并且第二资源位于第二硬件设备上。
即在该方案中,第二执行环境被分配访问第二硬件设备的第二资源,也就是第二执行环境具有访问该第二资源对应的物理地址区域的权限。
在上述第一方面的一种可能的实现中,还包括第二硬件访问控制器,第二硬件访问控制器分别与第二硬件设备和总线连接,能够获取到第二执行环境通过第二硬件设备向第一资源发起的直接内存访问请求,并在判断出第二执行环境对第一资源不具有访问权限的情况下,拦截第二执行环境通过第二硬件设备对第一资源的直接内存访问。
即在该方案中,第二硬件访问控制器,设置于第二硬件设备和总线之间,能够监听第二硬件设备经过总线发出的数据或者指令。在第二执行环境通过第二硬件设备向第一资源发出直接内存访问请求的情况下,第二硬件访问控制器通过直接验证物理地址的方式,也就是,第二硬件访问控制器获取第二执行环境发出的直接内存访问请求中的物理地址后,第二硬件访问控制器判断该物理地址是否属于该第二执行环境具有访问权限的物理地址区域内,在判断出该第二执行环境具有访问权限的情况下,允许第二执行环境对物理地址进行直接内存访问。在判断出该第二执行环境不具有访问权限的情况下,阻止该直接内存访问经过第二硬件访问控制器,也就是第二硬件访问控制器拦截该直接内存访问。
在上述第一方面的一种可能的实现中,还包括内存,第二资源为内存上存储的资源。
即在该方案中,第二执行环境启动后未分配访问第二硬件设备,也就是说第二执行环境占用内存。
在上述第一方面的一种可能的实现中,第一硬件访问控制器上存储有第一访问控制表,并且第一访问控制表上存储有第一执行环境具有访问权限的资源的物理地址。
在上述第一方面的一种可能的实现中,第一硬件访问控制器在确定第一访问控制表包括第二资源的物理地址的情况下,判断出第一执行环境对第二资源具有访问权限;并且,
第一硬件访问控制器在确定第一访问控制表不包括第二资源的物理地址的情况下,判断出第一执行环境对第二资源不具有访问权限,并拦截第一执行环境通过第一硬件设备对第二资源的直接内存访问。
即在该方案中,第一硬件访问控制器获取第一执行环境发出的直接内存访问请求中的物理地址后,在第一访问控制表中查询是否存在该物理地址,如果存在,允许第一执行环境对第二资源进行直接内存访问。如果不存在,阻止第一执行环境对第二资源进行直接内存访问,也就是第一硬件访问控制器拦截该直接内存访问。
在上述第一方面的一种可能的实现中,第一执行环境为虚拟机。
在上述第一方面的一种可能的实现中,还包括虚拟机监视器,用于为第一执行环境设置第一访问控制表。
在上述第一方面的一种可能的实现中,第一硬件访问控制器为微控制单元。
在上述第一方面的一种可能的实现中,第一硬件设备为GPU,第二硬件设备为VPU。
本发明的第二方面提供了一种计算机设备的访问控制方法,其特征在于,包括:
计算机设备的硬件访问控制器获取到计算机设备的第一执行环境通过计算机设备的第一硬件设备向计算机设备的第二资源发起的直接内存访问请求,其中,第一执行环境对第一硬件设备上的第一资源具有初始访问权限,第二执行环境对第二资源具有初始访问权限;
硬件访问控制器判断出第一执行环境对第二资源不具有访问权限;
硬件访问控制器拦截第一执行环境通过第一硬件设备对第二资源的直接内存访问。
在上述第二方面的一种可能的实现中,计算机设备还包括第二硬件设备,并且第二资源位于第二硬件设备上。
在上述第二方面的一种可能的实现中,计算机设备还包括内存,第二资源为内存上存储的资源。
即在该方案中,第一执行环境被分配访问第一硬件设备的第一资源,也就是第一执行环境具有访问该第一资源对应的物理地址区域的权限。第二执行环境被分配访问第二硬件设备的第二资源,也就是第二执行环境具有访问该第二资源对应的物理地址区域的权限。第一硬件访问控制器,设置于第一硬件设备和总线之间,能够监听第一硬件设备经过总线发出的数据或者指令。在第一执行环境对第二资源不具有访问权限,并且第一执行环境对第二资源发出直接内存访问的情况下,第一硬件访问控制器获取第一执行环境发出的直接内存访问请求中的物理地址后判断该物理地址是否属于该第一执行环境具有访问权限的物理地址区域内,在判断出该第一执行环境不具有访问权限的情况下,阻止该直接内存访问经过第一硬件访问控制器,也就是第一硬件访问控制器拦截该直接内存访问。
在上述第二方面的一种可能的实现中,其特征在于,第一硬件访问控制器上存储有第一访问控制表,并且第一访问控制表上存储有第一执行环境具有访问权限的资源的物理地址,其中,第一访问控制表不包括第二资源的物理地址。
在上述第二方面的一种可能的实现中,第一执行环境为虚拟机。
在上述第二方面的一种可能的实现中,计算机设备还包括虚拟机监视器,用于为第一执行环境设置第一访问控制表。
在上述第二方面的一种可能的实现中,第一硬件访问控制器为微控制单元。
在上述第二方面的一种可能的实现中,第一硬件设备为GPU,第二硬件设备为VPU。
本发明的第三方面提供了一种机器可读介质,该机器可读介质中可以存储有指令,该指令被机器运行时,机器可以执行如前述第二方面提供的方法。
本发明的方案不同于使用内存管理单元(Memory Management Unit,MMU),不需要通过虚拟地址与物理地址之间的转换,即不需要通过MMU将虚拟地址映射成对应的物理地址,而是直接验证物理地址,例如对执行环境发出的直接内存访问请求中的物理地址,本发明判断该物理地址是否属于该执行环境具有访问权限的物理地址区域内,在判断出该执行环境具有访问权限的情况下,允许执行环境对物理地址进行直接内存访问。
附图说明
在附图各图中通过示例而不是限制说明了本发明,其中相同标记指示相同元件,且其中:
图1a,1b根据本发明的一些实施例,示出了一种访问控制***的中的架构图;
图2根据本发明的一些实施例,示出了一种硬件访问控制器的结构图;
图3根据本发明的一些实施例,示出了一种访问控制的场景图;
图4根据本发明的一些实施例,示出了一种访问控制方法的流程图;
图5根据本发明的一些实施例,示出了一种访问控制方法中发出提示信息的结构图;
图6根据本发明的一些实施例,示出了一种访问控制的场景图;
图7a,7b根据本发明的一些实施例,示出了一种访问控制的场景图;
图8根据本发明的一些实施例,示出了一种访问控制的场景图;
图9根据本发明的一些实施例,示出了一种配置硬件访问控制器中的访问控制表的流程图;
图10根据本发明的一些实施例,示出了一种***的框图;
图11根据本发明的一些实施例,示出了一种片上***(SoC)的框图。
图12根据本发明的一些实施例,示出了另一种片上***(SoC)的框图。
具体实施例
本发明的说明实施例包括但不限于一种计算机设备的访问控制方法、计算机设备、及其计算机可读介质。
可以理解,如本文所使用的,术语“模块”可以指代或者包括专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用、或群组)和/或存储器、组合逻辑电路、和/或提供所描述的功能的其他适当硬件组件,或者可以作为这些硬件组件的一部分。
本发明的各实施例中,以执行环境是虚拟机为例进行说明。可以理解,虚拟机是执行环境的一种,本发明的实施例并不排除其他类型的执行环境,例如:TrustZone(TrustZone一种访问控制的方法,TrustZone通过将***的软件和硬件分为安全区域和正常区域,其中,正常区域内的软件或者硬件不可访问安全区域内的软件或是硬件),TrustZone通过将物理CPU虚拟化为两个虚拟CPU,两个虚拟CPU以基于时间片的方式分别运行在安全区域和正常区域,根据需要实时占用物理CPU,并可以相互切换。这里的时间片,是每个虚拟CPU可以占用物理CPU的一段时间,两个虚拟CPU各自配置有各自的操作***并执行各自的程序。
下面将结合附图对本发明的实施例作进一步地详细描述。
本发明对由虚拟机监视器分配给虚拟机,并且可以发起DMA访问的硬件设备配置一个硬件访问控制器,即,通过虚拟机驱动获得总线的控制权的硬件设备配置一个硬件访问控制器。同时,虚拟机监视器对正在访问该硬件设备的虚拟机预先配置一个访问控制表,该访问控制表与虚拟机的虚拟机标识(如虚拟机的hostId(虚拟机ID))一一对应,该访问控制表中记录着虚拟机可以访问的物理地址区域,这里的虚拟机可以访问的该硬件设备的物理地址区域可以是该硬件设备的物理地址区域的全部或者一部分。当虚拟机通过硬件设备发出DMA访问请求时,硬件访问控制器会监听并获取该DMA访问请求中包含的虚拟机标识和物理地址,根据虚拟机标识找到相应的访问控制表,如果该物理地址在该虚拟机对应的访问控制表中可以访问的物理地址区域内,则允许虚拟机访问,否则,拒绝该虚拟机的访问请求。可以理解,访问控制表可以通过白名单或者黑名单的方式记录物理地址区域。在白名单的情况下,访问控制表中包含的物理地址区域为虚拟机有权限访问的区域;在黑名单的情况下,访问控制表中包含的物理地址区域为虚拟机无权限访问的区域。
本发明的实施例中,硬件访问控制器的数量与配置的执行环境也就是虚拟机的主设备的数量可以是相同的。
本发明的实施例,相较于传统的基于虚拟地址隔离的设备,提供了一个直接基于物理地址隔离的计算机设备的访问控制方法,可以运用于物理地址寻址的执行环境。通过本发明的实施方法,能够检测并拒绝虚拟机通过硬件设备访问其他虚拟机的资源,避免对该资源产生安全性问题,例如,数据篡改、数据泄露。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。本发明的实施例中,以共享GPU作为主设备和内存作为从设备为例,其他可以作为主设备以及从设备的硬件设备也都属于本发明保护的范围。
为了使本发明的实施例的描述便于理解,下面先对本发明涉及的一些概念进行介绍。
DMA访问,执行环境通过正在访问的硬件设备,也就是主设备,发出访问从设备的DMA请求,执行环境通过总线,实现与从设备之间的访问操作。
具体地,下面以***100为例说明本发明的计算机设备的访问控制方法,并且下文以执行环境为虚拟机为例进行说明。根据本发明的实施例。图1a,1b示出了一种访问控制***100的结构示意图。如图1a所示,***100包括:虚拟机200(例如,包括虚拟机200-1至200-3)等,硬件设备300(例如,包括:图形处理器300-1(Graphics Processing Unit,GPU)、视频处理单元300-2(Video Processing Unit,VPU等)、用于管理虚拟机的虚拟机监视器400。如图1b所示,***100还包括硬件访问控制器500(例如,包括硬件访问控制器500-1,硬件访问控制器500-2)以及中央处理器(central processing unit,CPU)600和总线700。
继续参考图1a,虚拟机(Virtual Machine,VM)200作为一种执行环境,可以是一种设置于***中的虚拟装置。这里的虚拟机可以是通过软件模拟的具有完整硬件***功能的、可以运行在***100的操作***上的完整计算机***。虚拟机200可以安装有操作***(Operation System,OS)以及其他应用程序。
在本发明的实施例中,硬件设备(Hardware,缩写为HW)300可以是任何计算机硬件设备。此外,对于分配了至少一个虚拟机的硬件设备300,在该硬件设备300通过DMA方式访问其他硬件设备时,该硬件设备300被称为主设备。
可以理解,此处图1a,1b中虽然仅示出了***100仅具有2个硬件设备和安装了3个虚拟机,但是,此处硬件设备和虚拟机的数量和类型仅仅是示例性的,在此不做限制,***100可以包括任意类型和数量的虚拟机和硬件设备。
虚拟机监视器(Virtual Machine Monitor,简称VMM)400用来创建以及管理虚拟机。在本发明的实施例中,虚拟机监视器400可以对硬件设备300分配至少一个虚拟机200,也就是说,虚拟机监视器400将硬件设备300的资源中的部分或者全部分配给至少一个虚拟机200使用。虚拟机监视器也可以称为Hypervisor。
硬件访问控制器500,设置于硬件设备300和总线700之间,用于监听硬件设备300经过总线700发出的数据或者指令,在检测到虚拟机通过正在访问的硬件设备300发出的DMA访问请求的情况下,硬件访问控制器500验证发出上述DMA访问请求的虚拟机是否有访问权限,允许具有访问权限的访问请求通过硬件访问控制器500访问对应的物理地址。在本发明中,对配置了虚拟机并且可以发起DMA访问并获得总线的控制权的硬件设备,也就是主设备,配置硬件访问控制器500。例如,在***100是片上***(System on Chip,SOC)的情况下,硬件访问控制器500可以是片上***中的一个组成部分。
CPU600,用于在***100中运行虚拟机监视器400以及虚拟机200。
总线700是***100中的各种硬件设备之间传送信息的通信干线,传送的信息包括数据信息、地址信息、控制信息等。例如,在本发明的一些实施例中,***100的总线700,可以包括AXI(Advanced eXtensible Interface,高级可扩展接口)总线以及APB(AdvancedPeripheral Bus,***总线)总线。
图2示出了一种硬件访问控制器500的结构示意图。如图2所示,硬件访问控制器500包括:访问控制表模块501,寄存器模块502以及访问控制模块503。
访问控制表模块501用于保存与虚拟机的虚拟机标识(如虚拟机的hostId)一一对应的访问控制表,该访问控制表中记录着包含物理地址区域的访问控制项。在本发明的实施例中,访问控制表模块501可以是硬件访问控制器900中其他存储区域,例如的静态随机存储器。
寄存器模块502用于从虚拟机监视器400接收指令,该指令用于配置访问控制表模块501中的访问控制表,例如,虚拟机监视器400向寄存器模块502发送新增指令,在访问控制表模块501中新增一个与虚拟机的虚拟机标识对应的访问控制表。可以理解,寄存器模块502还可以用于获取硬件访问控制器500的状态。例如,在访问控制表模块501中新增一个访问控制表时发生错误的情况下,寄存器模块502可以读取该错误信息并将该错误信息返回给虚拟机监视器400。这里,虚拟机监视器400可以通过CPU600基于APB总线向寄存器模块502发送指令。
访问控制模块503,访问控制模块503用于监听虚拟机通过硬件设备发出DMA访问请求,获取该DMA访问请求中包含的hostId和物理地址,根据hostId找到相应的访问控制表,如果该物理地址在该虚拟机对应的访问控制表中可以访问的物理地址区域内,则允许虚拟机访问,否则,拒绝该虚拟机的访问请求。
下面结合具体的场景说明本发明的访问控制的技术方案。图3示出了一个虚拟机向另一个虚拟机所属的资源发出的DMA访问请求被硬件访问控制器拦截的场景。具体地,在图3所示的场景中,虚拟机监视器400分配虚拟机200-1和虚拟机200-2分别访问GPU 300-1的资源1和VPU300-2的资源2后,对虚拟机200-1和虚拟机200-2配置了各自的访问控制表,其中,虚拟机200-1和虚拟机200-2都没有访问对方所属的资源的权限。也就是说,虚拟机200-1没有访问虚拟机200-2所属的资源2的权限,同时,虚拟机200-2也没有访问虚拟机200-1的资源1的权限。
如图3所示,虚拟机200-1对虚拟机200-2所属的资源2进行DMA访问的具体过程如下:
1)虚拟机监视器400分配虚拟机200-1和200-2分别访问GPU 300-1和VPU300-2后,虚拟机监视器400获取虚拟机200-1和200-2的虚拟机标识。这里的GPU 300-1和VPU300-2分别与总线700连接,并且在GPU 300-1和VPU300-2与总线700之间,设置有硬件访问控制器500-1和硬件访问控制器500-2。
这里的虚拟机200-1和200-2分别具有虚拟机标识,虚拟机标识可以是虚拟机的hostId(主机ID),hostId是一台虚拟机的唯一标识符,可以用一个二进制数值来表示,在本发明的一个实施例中,可以采用一个十六位的二进制数值来表示hostId,例如:虚拟机200-1的hostId可以是0000000000000001。
2)虚拟机监视器400在硬件访问控制器500-1中为虚拟机200-1配置访问控制表,在硬件访问控制器500-2中为虚拟机200-2配置访问控制表,虚拟机200-1和虚拟机200-2的访问控制表中分别记录了虚拟机200-1和虚拟机200-2有权限访问的物理地址区域。硬件访问控制器500-1和硬件访问控制器500-2可以基于访问控制表中的物理地址区域,校验虚拟机200-1和虚拟机200-2发出的DMA访问请求中包含的物理地址是否包含在虚拟机200-1和虚拟机200-2的访问控制表中,如果是的话,则允许该DMA访问请求,否则,则拒绝该DMA访问请求。
在本发明的实施例中,该访问控制表使用虚拟机标识(hostId)作为索引,使得该访问控制表与虚拟机的虚拟机标识(hostId)一一对应,也就是对每一个可以访问硬件设备的虚拟机维护一个访问控制表。该访问控制表的访问控制项中记录着的虚拟机200-1有权限访问或者是无权访问的物理地址区域。例如,为了便于说明,表1示出了虚拟机200-1的访问控制表,访问控制表中保存了虚拟机200-1有权限访问的物理地址区域。访问控制表中可以包括多条访问控制项,每条访问控制项,包括:物理地址、长度等。这里的物理地址是硬件设备在总线700上的物理地址;长度是指,从该物理地址开始在***100的总线700上的范围。表1示出的访问控制表,包括:物理地址0x00001000,长度0x1000,表示物理地址区域(0x00001000~0x00001FFF),也就是说虚拟机监视器400分配给虚拟机200-1有权限访问的物理地址区域在***100的总线700上是(0x00001000~0x00001FFF)。可以理解,此处只是为了便于说明,实际的访问控制表的内容以及形式,可以与下表中示出的不同。
物理地址 长度
0x00001000 0x1000
表1(hostId:0000000000000001)
访问控制表可以保存在硬件访问控制器500-1中,例如,访问控制表可以保存硬件访问控制器500-1的访问控制表模块501中,再如,访问控制表也可以保存在硬件访问控制器500-1的存储区域中,比如硬件访问控制器500-1的静态随机存储器(Static Random-Access Memory,SRAM)。
在本发明的一些实施例中,一个访问控制表中可以包括多条访问控制项,例如,为了便于说明,表2示出了另一种访问控制表的内容以及形式,包括:物理地址0x00001000,长度0x1000,表示物理地址区域(0x00001000~0x00001FFF),以及物理地址0x00004000,长度0x2000,表示物理地址区域(0x00004000~0x00005FFF),也就是说分配给虚拟机200-1可以访问的在***100的总线700上的物理地址区域是(0x00001000~0x00001FFF)和(0x00004000~0x00005FFF)。可以理解,此处只是为了便于说明,实际的访问控制表的内容以及形式,可以与下表中示出的不同。
物理地址 长度
0x00001000 0x1000
0x00004000 0x2000
表2(hostId:0000000000000001)
在虚拟机监视器400分配完虚拟机以及配置完访问控制表后,下面介绍分配了硬件设备的一个虚拟机200-1向另一个虚拟机200-2所属的资源2发出的DMA访问请求被硬件访问控制器500-1拦截的场景。
首先,虚拟机监视器400分配虚拟机200-1和200-2分别访问GPU 300-1和VPU300-2,虚拟机200-1和虚拟机200-2分别访问GPU 300-1和VPU300-2的资源1和资源2,这里的资源1和资源2分别是GPU 300-1和VPU300-2所属的物理地址区域中保存的数据或者指令。
例如,分配给虚拟机200-1的资源1的物理地址区域是(0x00002000~0x00002FFF);虚拟机监视器400分配给虚拟机200-2的资源2的物理地址区域是(0x00005000~0x00005FFF)。这里的资源1可以是GPU 300-1的物理地址区域的一部分。为了便于说明,表3示出了虚拟机监视器400分配给虚拟机200-1至200-2的资源1和资源2在***100的总线700上的物理地址区域分别是(0x00001000~0x00002FFF)和(0x00005000~0x00005FFF)。这里的资源1和资源2可以包括物理地址区域中存储的数据或者指令。可以理解,此处只是为了便于说明,实际的资源1和资源2的物理地址区域的内容以及形式,可以与下表中示出的不同。
物理地址区域
资源1 0x00001000~0x00002FFF
资源2 0x00005000~0x00005FFF
表3
其次,当虚拟机200-1通过正在访问的GPU 300-1向虚拟机200-2所属的资源2发出DMA访问请求时,可以通过硬件访问控制器500-1验证虚拟机200-1是否有访问虚拟机200-2所属的资源2的权限,在虚拟机200-1没有访问权限的情况下,硬件访问控制器500-1拦截虚拟机200-1发出的DMA访问请求。
具体地,如图4所示,包括:
S41:虚拟机200-1通过正在访问的GPU 300-1向虚拟机200-2所属的资源2发出DMA访问请求。
在本发明的实施例中,虚拟机200-1通过GPU 300-1以DMA访问的方式向虚拟机200-2所属的资源2发送DMA访问请求,也就是虚拟机200-1访问资源2的物理地址区域中保存的数据或者指令。该访问请求中包含发出请求的虚拟机200-1的hostId以及请求访问的资源2的物理地址,例如:0x00005001。具体来说,虚拟机200-1向虚拟机200-2所属的资源2发送DMA访问请求是指,虚拟机200-1可以驱动GPU 300-1抢占了总线700的控制权,之后,通过DMA访问的方式直接获取虚拟机200-2所属的资源2。
S42:硬件访问控制器500-1监听并获取DMA访问请求。
在本发明的实施例中,设置GPU 300-1和总线700之间的硬件访问控制器500-1,监听GPU 300-1经过总线700发出的数据或者指令。在硬件访问控制器500-1检测到该DMA访问请求时,硬件访问控制器500-1可以从该DMA访问请求中获取包含的虚拟机200-1的hostId,例如,该hostId可以是0000000000000001,之后,硬件访问控制器500-1查询其保存的虚拟机200-1的hostId对应的访问控制表。在获取了虚拟机200-1对应的访问控制表后,硬件访问控制器500-1获取该访问请求中包含的物理地址的地址信息。
S43:硬件访问控制器500-1根据DMA访问请求中的hostId和物理地址判断虚拟机200-1是否具有访问权限。
在本发明的实施例中,硬件访问控制器500-1在虚拟机200-1的hostId对应的访问控制表中查询是否有包含DMA访问请求中的物理地址的访问控制项。例如,在DMA访问请求中的物理地址是0x00005001的情况下,查找虚拟机200-1的hostId对应的访问控制表中,是否有包含上述物理地址的访问控制项。为了便于说明,表4示出了虚拟机200-1的访问控制表,该访问控制表中包括虚拟机200-1有权限访问的物理地址区域是0x00001000~0x00001FFF,DMA访问请求的包含的物理地址0x00005001不在该范围内。因此,硬件访问控制器500-1可以判断虚拟机200-1没有通过GPU 300-1以DMA访问的方式访问虚拟机200-2所属的资源2的权限并拒绝虚拟机200-1的访问请求。
物理地址 长度
0x00001000 0x1000
表4
可以理解,虚拟机200-2也可以对虚拟机200-1所属的资源1发出DMA访问请求,硬件访问控制器500-2监听该DMA访问请求并判断虚拟机200-2是否具有访问权限的方法与图4所示的方法相似,这里不再赘述。
对于上述拒绝虚拟机200-1的访问请求,硬件访问控制器500-1可以将虚拟机200-1不具有访问权限通过提示信息的方式返回给虚拟机200-1,这里的提示信息的内容可以包括虚拟机200-1的虚拟机标识,如hostId以及虚拟机200-1执行的操作,如发送DMA访问请求。如图5所示,硬件访问控制器500可以将该提示信息的内容记录在虚拟机200-1的运行日志中。这里的运行日志记录了的运行状态信息,例如可以包括:虚拟机200-1和200-2的启动/关闭时间,虚拟机200-1和200-2访问的硬件设备等,通过查询该执行日志的内容来获取提示信息在一些实施例中,硬件访问控制器500-1也将可以将该提示信息的内容发送给虚拟机监视器400。
图6示出了分配了硬件设备的一个虚拟机200-1有权向另一个虚拟机200-3所属的资源3发出的DMA访问请求的场景。在GPU 300-1和VPU300-3与总线700之间,设置有硬件访问控制器500-1和硬件访问控制器500-3。
首先,虚拟机监视器400为虚拟机200-1以及虚拟机200-2配置访问控制表的步骤与图3中所描述的相同,为了便于说明,表5示出了虚拟机200-1的访问控制表中的部分内容。可以理解,此处只是为了便于说明,实际的访问控制表的内容以及形式,可以与下表中示出的不同。
物理地址 长度
0x00001000 0x5000
表5(hostId:0000 0000 0000 0001)
其次,虚拟机监视器400分配虚拟机200-1和200-3分别访问GPU 300-1和VPU300-3,虚拟机200-1和虚拟机200-3分别访问GPU 300-1和VPU300-3的资源1和资源3,为了便于说明,表6示出了资源1和资源3的物理地址区域。可以理解,此处只是为了便于说明,实际的资源1和资源3的物理地址区域的内容以及形式,可以与下表中示出的不同。
物理地址区域
资源1 0x00002000~0x00002FFF
资源3 0x00004000~0x00004FFF
表6
最后,当虚拟机200-1通过正在访问的GPU 300-1向另一虚拟机200-3所属的资源3发出DMA访问请求时,与GPU 300-1连接的硬件访问控制器500-1验证虚拟机200-1是否有访问虚拟机200-3所属的资源3的权限,这里的验证步骤与图3中所描述的相同,在虚拟机200-1发出的DMA访问请求中的物理地址是0x00004001的情况下,虚拟机200-1的hostId对应的访问控制表中的访问控制项包含上述物理地址。因此,虚拟机200-1可以通过GPU 300-1以DMA访问的方式访问虚拟机200-3所属的资源3。
图7a-7b示出了分配了同一个硬件设备的两个虚拟机200-1和200-4中的一个虚拟机向另一个虚拟机所属的资源发出的DMA访问请求被硬件访问控制器拦截的场景。
虚拟机监视器400分配虚拟机200-1和虚拟机200-4同时访问GPU 300-1,GPU 300-1与硬件访问控制器500-1连接。为了便于说明,表7示出了虚拟机监视器400分配给虚拟机200-1的资源1的物理地址区域是(0x00002000~0x00002FFF),虚拟机监视器400分配给虚拟机200-2的资源4的物理地址区域是(0x00006000~0x00006FFF)。可以理解,此处只是为了便于说明,实际的资源1和资源4的物理地址区域的内容以及形式,可以与下表中示出的不同。这里的资源1和资源4分别是GPU 300-1所属的物理地址区域中保存的数据或者指令。虚拟机200-1和虚拟机200-4的hostId分别为0000 0000 0000 0001和0000 0000 00000010。
表7
虚拟机监视器400在硬件访问控制器500-1为虚拟机200-1和虚拟机200-4配置的访问控制表,为了便于说明,表8和表9示出了虚拟机200-1和虚拟机200-4的访问控制表。可以理解,此处只是为了便于说明,实际的访问控制表的内容以及形式,可以与下表中示出的不同。
物理地址 长度
0x00002000 0x1000
表8(hostId:0000 0000 0000 0001)
物理地址 长度
0x00006000 0x1000
表9(hostId:0000 0000 0000 0010)
如图7a所示,虚拟机200-1通过GPU 300-1以DMA访问的方式向虚拟机200-4所属的资源4发送访问请求,该访问请求中包含发出请求的虚拟机200-1的hostId以及请求访问的资源4的物理地址,例如:0x00006001。硬件访问控制器500-1基于虚拟机200-1的hostId对应的访问控制表中,查找是否有包含上述物理地址的访问控制项。如表8所示,访问控制表中虚拟机200-1有权限访问的物理地址区域是0x00002000~0x00002FFF,访问请求的包含的物理地址0x00006001不在该范围内。因此,硬件访问控制器500-1可以判断虚拟机200-1没有通过GPU 300-1以DMA访问的方式访问虚拟机200-4所属的资源4的权限并拒绝虚拟机200-1的访问请求。
如图7b所示,虚拟机200-4通过GPU 300-1以DMA访问的方式向虚拟机200-1所属的资源1发送访问请求,该访问请求中包含发出请求的虚拟机200-4的hostId以及请求访问的资源1的物理地址,例如:0x00002001。这里,硬件访问控制器500-1采用与图7a中类似的方式,基于虚拟机200-4的hostId对应的访问控制表中,查找是否有包含上述物理地址的访问控制项。如表9所示,访问控制表中虚拟机200-1有权限访问的物理地址区域是0x00006000~0x00006FFF,访问请求的包含的物理地址0x00002001不在该范围内。因此,硬件访问控制器500-1可以判断虚拟机200-1没有通过GPU 300-1以DMA访问的方式访问虚拟机200-4所属的资源4的权限并拒绝虚拟机200-1的访问请求。
图8示出了一个虚拟机200-1向另一个虚拟机200-5所属的资源发出的DMA访问请求被硬件访问控制器拦截的场景,其中虚拟机监视器400分配虚拟机200-1访问GPU 300-1,分配虚拟机200-5访问硬盘300-5,在GPU 300-1和VPU300-2与总线700之间,设置有硬件访问控制器500-1。硬盘300-5不是一个能够获得总线的控制权的硬件设备,虚拟机200-5无法通过驱动硬盘300-5发出DMA访问请求,在硬盘300-5与总线700之间没有设置硬件访问控制器。
首先,虚拟机监视器400为虚拟机200-1配置访问控制表,其中配置的过程与图3中所描述的相同,在此不再赘述。为了便于说明,表10示出了虚拟机200-1的访问控制表。可以理解,此处只是为了便于说明,实际的访问控制表的内容以及形式,可以与下表中示出的不同。
物理地址 长度
0x00003000 0x1000
表10(hostId:0000 0000 0000 0001)
其次,虚拟机监视器400分配虚拟机200-1和200-5分别访问GPU 300-1和硬盘300-5,虚拟机200-1和虚拟机200-5分别访问GPU 300-1和硬盘300-5的资源1和资源5。为了便于说明,表11示出了资源1和资源5的物理地址区域。可以理解,此处只是为了便于说明,实际的资源1和资源5的物理地址区域的内容以及形式,可以与下表中示出的不同。
物理地址区域
资源1 0x00003000~0x00003FFF
资源5 0x00007000~0x00007FFF
表11
最后,当虚拟机200-1通过正在访问的GPU 300-1向另一虚拟机200-3所属的资源5发出DMA访问请求时,硬件访问控制器500-1验证虚拟机200-1是否有访问虚拟机200-3所属的资源5的权限,这里的验证步骤与图3中所描述的相同,在虚拟机200-1发出的DMA访问请求中的物理地址是0x00007001的情况下,虚拟机200-1的hostId对应的访问控制表中的访问控制项不包含上述物理地址。因此,硬件访问控制器500-1拒绝虚拟机200-1通过GPU300-1以DMA访问的方式访问虚拟机200-3所属的资源5。
在一些实施例中,虚拟机监视器400分配虚拟机200-1访问GPU 300-1后,还在硬件访问控制器500中对虚拟机200-1配置了访问控制表。虚拟机监视器400没有分配虚拟机200-6访问硬件设备,这时,在虚拟机200-6启动并运行在***100上后,会占用***100的内存的物理地址区域。在硬件访问控制器500检测到虚拟机200-1通过GPU 300-1向虚拟机200-6所占用的内存的物理地址区域发出DMA访问请求时,硬件访问控制器500可以采用与图3中描述的相同方式,硬件访问控制器500根据DMA访问请求中的虚拟机200-1的hostId和物理地址判断虚拟机200-1是否具有访问权限,在虚拟机200-1没有访问权限的情况下,拒绝虚拟机200-1访问虚拟机200-6所占用的内存的物理地址区域,在虚拟机200-1有访问权限的情况下,允许虚拟机200-1访问虚拟机200-6所占用的内存的物理地址区域。
在另一些实施例中,在虚拟机监视器400分配虚拟机200-1访问GPU 300-1并在硬件访问控制器500中对虚拟机200-1配置了访问控制表后,虚拟机200-1还可以通过GPU300-1向虚拟机监视器400在***100的总线700上的物理地址区域发出DMA访问请求。虚拟机监视器400用来创建以及管理虚拟机200-1,虚拟机监视器400的权限高于虚拟机200-1,为了避免虚拟机200-1对虚拟机监视器400所属的物理地址区域发出DMA访问,可以在虚拟机监视器400启动后,在***100的存储区域内存储虚拟机监视器400所属的物理地址区域。这时,硬件访问控制器500可以采用与图3中描述的相同方式,硬件访问控制器500根据DMA访问请求中的虚拟机200-1的hostId和物理地址判断虚拟机200-1是否试图访问虚拟机监视器400所属的物理地址区域,在确认虚拟机200-1向虚拟机监视器400所属的物理地址区域发出DMA访问请求的情况,拒绝虚拟机200-1访问。
下面介绍虚拟机监视器400在启动和运行两种情况下,对虚拟机200-1和200-2配置访问控制表的流程。
在本发明的一个实施例中,如图9所示,在虚拟机200-1和200-2启动前,虚拟机监视器400分配虚拟机200-1和200-2分别访问的硬件设备300-1和300-2,将虚拟机200-1至200-2有权限访问的物理地址区域添加至访问控制表。
S91:虚拟机监视器400读取访问控制配置信息中的记录。
在一些实施例中,配置信息可以是配置文件的形式,虚拟机监视器400可以通过读取配置文件的方式,在虚拟机200-1至200-2启动前,将虚拟机200-1至200-2有权限访问的物理地址区域添加至访问控制表中,该配置文件可以存储于***100包含的存储器中,虚拟机监视器400从存储器中加载该配置文件后,读取配置文件中的每一条记录,获取记录中对应的值,为了便于说明,表12示出了一种配置文件的内容和形式。可以理解,此处只是为了便于说明,实际的配置文件的内容以及形式,可以与下表中示出的不同。
表12
S92:虚拟机监视器400根据访问控制配置信息中的记录,修改访问控制表。
虚拟机监视器400读取了配置文件中的三条记录,其中,基于虚拟机200-1至200-2的hostId以hostId为索引创建两个访问控制表后,虚拟机监视器400将这三条记录作为访问控制项添加至虚拟机200-1至200-2对应的访问控制表中。为了便于说明,表13和表14示出了虚拟机200-1至200-2对应的访问控制表。可以理解,此处只是为了便于说明,实际的访问控制表的内容以及形式,可以与下表中示出的不同。
物理地址 长度
0x00002000 0x1000
0x00003000 0x2000
表13(索引0000 0000 0000 0001)
物理地址 长度
0x00005000 0x1000
表14(索引0000 0000 0000 0010)
这里的配置文件可以是管理虚拟机监视器400的用户在虚拟机200-1至200-2启动前预先在***100中配置好的,也可以是在虚拟机200-1至200-2启动前,由***100从云端下载后获取的。其中,配置文件中的所有记录包含的hostId可以与设置于***100上的虚拟机的hostId一一对应。虚拟机监视器400可以采用新增、更新以及删除等不同方式修改访问控制表以及访问控制表中包含的访问控制项。例如,虚拟机监视器400通过比较现有的访问控制表中包含的访问控制项与配置文件中包含的记录,当配置文件中包含的记录与访问控制表中包含的访问控制项不同时,将不同的记录更新至访问控制表。再如,当虚拟机监视器400删除虚拟机200-1时,可以同时删除虚拟机200-1对应的访问控制表。
这里,虚拟机监视器400除了通过配置文件的方式来维护访问控制表,还可以通过设备树(device tree),或者硬编码等配置信息的方式来维护访问控制表。其中,硬编码的方式是指直接将设置虚拟机的访问控制表对应的数据写在虚拟机监视器400的程序代码中,在虚拟机监视器400启动时通过执行程序代码来设置虚拟机的访问控制表。设备树的方式是指,将每一个虚拟机的访问控制表作为一节点保存在一个树形结构的设备树上,该设备树存储***100包含的存储器中,当虚拟机监视器400启动时,虚拟机监视器400加载该设备树中包含的虚拟机的访问控制表的信息。
在本发明的另一个实施例中,在虚拟机200-1启动后,即在虚拟机200-1的运行状态下,虚拟机200-1向虚拟机监视器400发送DMA访问的注册请求,该注册请求包含发送注册请求的虚拟机200-1的虚拟机标识以及虚拟机200-1请求访问的物理地址区域,虚拟机监视器400查询是否有虚拟机200-1对应的访问控制表,也就是虚拟机监视器400可以对本次请求进行权限判定,如果允许,则虚拟机监视器400新建与虚拟机200-1对应的访问控制表,在虚拟机200-1对应的访问控制表中添加包含物理地址区域的访问控制项。
此外,可以理解,虽然上述实施例以***100来说明本发明的计算机设备的访问控制的技术方案,但是,本发明的技术方案适用于各种终端设备,包括但不限于手机、平板电脑、膝上型计算机、车载导航仪、台式计算机、可穿戴设备、头戴式显示器、移动电子邮件设备、便携式游戏机、便携式音乐播放器、阅读器设备、个人数字助理、虚拟现实或者增强现实设备、其中嵌入或耦接有一个或多个处理器的各种服务器,台式计算机,超级计算机等电子设备。
现在参考图10,所示为根据本发明的一个实施例的***1000的框图。图10示意性地示出了根据多个实施例的示例***1000。在一个实施例中,***1000可以包括一个或多个处理器1004,与处理器1004中的至少一个连接的***控制逻辑1008,与***控制逻辑1008连接的***内存1012,与***控制逻辑1008连接的非易失性存储器(NVM)1016,以及与***控制逻辑1008连接的网络接口1020。
在一些实施例中,处理器1004可以包括一个或多个单核或多核处理器。在一些实施例中,处理器1004可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。处理器1004可以被配置为执行各种符合的实施例,例如,如图1-9所示的多个实施例中的一个或多个。
在本发明的实施例中,处理器1004可以用于验证虚拟机向硬件设备发送的访问请求,是否为DMA访问请求。
在一些实施例中,***控制逻辑1008可以包括任意合适的接口控制器,以向处理器1004中的至少一个和/或与***控制逻辑1008通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,***控制逻辑1008可以包括一个或多个存储器控制器,以提供连接到***内存1012的接口。***内存1012可以用于加载以及存储数据和/或指令。在一些实施例中***1000的内存1012可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM/存储器1016可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器1016可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器),CD(Compact Disc,光盘)驱动器,DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM/存储器1016可以包括安装***1000的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口1020通过网络访问NVM/存储1016。
特别地,***内存1011和NVM/存储器1016可以分别包括:指令1024的暂时副本和永久副本。指令1024可以包括:由处理器1004中的至少一个执行时导致***1000实施如图1-9所示的功能的指令。在一些实施例中,指令1024、硬件、固件和/或其软件组件可另外地/替代地置于***控制逻辑1008,网络接口1020和/或处理器1004中。
网络接口1020可以包括收发器,用于为***1000提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口1020可以集成于***1000的其他组件。例如,网络接口1020可以集成于处理器1004的,***内存1012,NVM/存储器1016,和具有指令的固件设备(未示出)中的至少一种,当处理器1004中的至少一个执行所述指令时,***1000实现如图1-9所示的功能。
网络接口1020可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口1020可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器1004中的至少一个可以与用于***控制逻辑1008的一个或多个控制器的逻辑封装在一起,以形成***封装(SiP)。在一个实施例中,处理器1004中的至少一个可以与用于***控制逻辑1008的一个或多个控制器的逻辑集成在同一管芯上,以形成片上***(SoC)。
***1000可以进一步包括:输入/输出(I/O)设备1032。I/O设备1032可以包括用户界面,使得用户能够与***1000进行交互;***组件接口的设计使得***组件也能够与***1000交互。在一些实施例中,***1000还包括传感器,用于确定与***1000相关的环境条件和位置信息的至少一种。
根据本发明的实施例,图11示出了一种适用于ARM产品的SoC(System on Chip,片上***)1100的框图。在图11中,相似的部件具有同样的附图标记。在图11中,SoC 1100包括:AHB总线单元1102,用于SoC 1100中的单元(如处理器1101、DMA等)之间的连接,其被耦合至应用处理器1101,用于控制与SoC1100连接的硬件设备的访问;只读存储器单元1103,用于存储固定不变的内容;默认从属1104;随机存储器单元1105,用于存储能够被随机存取的内容;通用I/O端口单元1106,用于实现处理器1001与硬件设备、存储器的连接和数据交换;以及与AHB总线单元1102连接的AHB2APB总线单元1107,用于低带宽的硬件设备之间的连接,本发明的硬件访问控制器500可以设置于AHB2APB总线单元1107与硬件设备300之间,用于检测出执行环境200通过硬件设备300发起的直接内存访问,并在判断该执行环境300不具有访问权限的情况下,拦截执行环境300通过硬件设备300发出的直接内存访问。AHB2APB总线单元1107耦合有单计时单元1108,双计时单元1109,这两种计时单元用于为SoC 1100计时;警报计时单元1110,用于在SoC 1100发生软件故障时,将SoC 1100复位,以及UART单元1111(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)用于将在SoC 1100中的单元之间、单元与硬件设备之间传输的资料在串行通信与并行通信之间加以转换。
根据本发明的实施例,图12示出了一种通用的SoC(System on Chip,片上***)1200的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图12中,SoC 1200包括:互连单元1250,其被耦合至应用处理器1215;***代理单元1270;总线控制器单元1280;集成存储器控制器单元1240;一组或一个或多个协处理器1220,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1230;直接内存存取(DMA)单元1260。在一个实施例中,协处理器1220包括专用处理器,诸如网络或通信处理器、压缩引擎、GPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本发明公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本发明描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本发明的目的,处理***包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何***。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便于处理***通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本发明中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而且,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本发明各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施例并没有将与解决本发明所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、资源项或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、资源项或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、资源项或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (14)

1.一种计算机设备,其特征在于,包括第一执行环境和第二执行环境、第一硬件设备、第一硬件访问控制器、第二硬件设备、第二硬件访问控制器、以及总线;其中,
所述第一执行环境对所述第一硬件设备上的第一资源具有初始访问权限,所述第二执行环境对所述第二硬件设备的第二资源具有初始访问权限,其中,所述第一硬件访问控制器上存储有第一访问控制表,并且所述第一访问控制表上存储有所述第一执行环境具有访问权限的资源的物理地址;
所述第一硬件访问控制器分别与所述第一硬件设备和所述总线连接,并且所述第一硬件访问控制器能够获取到所述第一执行环境通过所述第一硬件设备向所述第二资源发起的直接内存访问请求;
所述第一硬件访问控制器在确定所述第一访问控制表包括所述第二资源的物理地址的情况下,判断出所述第一执行环境对所述第二资源具有访问权限;并且,所述第一硬件访问控制器在确定所述第一访问控制表不包括所述第二资源的物理地址的情况下,判断出所述第一执行环境对所述第二资源不具有访问权限,并拦截所述第一执行环境通过第一硬件设备对所述第二资源的直接内存访问;
所述第二硬件访问控制器分别与所述第二硬件设备和所述总线连接,所述第二硬件访问控制器获取到所述第二执行环境通过所述第二硬件设备向所述第一资源发起的直接内存访问请求,并在判断出所述第二执行环境对所述第一资源不具有访问权限的情况下,拦截所述第二执行环境通过第二硬件设备对所述第一资源的直接内存访问。
2.根据权利要求1所述的计算机设备,其特征在于,还包括内存,所述第二资源为所述内存上存储的资源。
3.根据权利要求1所述的计算机设备,其特征在于,所述第一执行环境为虚拟机。
4.根据权利要求3所述的计算机设备,其特征在于,还包括虚拟机监视器,用于为所述第一执行环境设置所述第一访问控制表。
5.根据权利要求4所述的计算机设备,其特征在于,所述第一硬件访问控制器为微控制单元。
6.根据权利要求1所述的计算机设备,其特征在于,所述第一硬件设备为GPU,所述第二硬件设备为VPU。
7.一种计算机设备的访问控制方法,其特征在于,包括:
所述计算机设备的第一硬件访问控制器获取到所述计算机设备的第一执行环境通过所述计算机设备的第一硬件设备向所述计算机设备的第二资源发起的直接内存访问请求,其中,所述第一执行环境对第一硬件设备上的第一资源具有初始访问权限,所述第一硬件访问控制器上存储有第一访问控制表,并且所述第一访问控制表上存储有所述第一执行环境具有访问权限的资源的物理地址,其中,所述第一访问控制表不包括所述第二资源的物理地址;
所述第一硬件访问控制器判断出所述第一执行环境对所述第二资源不具有访问权限;
所述第一硬件访问控制器拦截所述第一执行环境通过第一硬件设备对所述第二资源的直接内存访问;
所述计算机设备的第二硬件访问控制器获取到所述计算机设备的第二执行环境通过所述计算机设备的第二硬件设备向所述计算机设备的第一资源发起的直接内存访问请求,并在判断出所述第二执行环境对所述第一资源不具有访问权限的情况下,拦截所述第二执行环境通过第二硬件设备对所述第一资源的直接内存访问。
8.根据权利要求7所述的方法,其特征在于,所述计算机设备还包括第二硬件设备,并且所述第二资源位于所述第二硬件设备上。
9.根据权利要求7所述的方法,其特征在于,所述计算机设备还包括内存,所述第二资源为所述内存上存储的资源。
10.根据权利要求7所述的方法,其特征在于,所述第一执行环境为虚拟机。
11.根据权利要求7所述的方法,其特征在于,所述计算机设备还包括虚拟机监视器,用于为所述第一执行环境设置所述第一访问控制表。
12.根据权利要求7所述的方法,其特征在于,所述第一硬件访问控制器为微控制单元。
13.根据权利要求7所述的方法,其特征在于,所述第一硬件设备为GPU,所述第二硬件设备为VPU。
14.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有指令,该指令在计算机设备上执行时使计算机设备执行权利要求7至13中任一项所述的计算机设备的访问控制方法。
CN202010558828.4A 2020-06-18 2020-06-18 计算机设备及其访问控制方法和计算机可读介质 Active CN111666579B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010558828.4A CN111666579B (zh) 2020-06-18 2020-06-18 计算机设备及其访问控制方法和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010558828.4A CN111666579B (zh) 2020-06-18 2020-06-18 计算机设备及其访问控制方法和计算机可读介质

Publications (2)

Publication Number Publication Date
CN111666579A CN111666579A (zh) 2020-09-15
CN111666579B true CN111666579B (zh) 2024-03-08

Family

ID=72388475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010558828.4A Active CN111666579B (zh) 2020-06-18 2020-06-18 计算机设备及其访问控制方法和计算机可读介质

Country Status (1)

Country Link
CN (1) CN111666579B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363074B (zh) * 2022-01-07 2024-04-16 杭州安恒信息技术股份有限公司 一种访问控制实现方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645949A (zh) * 2013-12-12 2014-03-19 浪潮电子信息产业股份有限公司 一种虚拟机动态迁移安全框架
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和***
CN107783913A (zh) * 2016-08-31 2018-03-09 华为技术有限公司 一种应用于计算机的资源访问方法和计算机
CN109614204A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 内存隔离保护方法、隔离检查硬件、soc芯片和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922740B2 (en) * 2003-05-21 2005-07-26 Intel Corporation Apparatus and method of memory access control for bus masters

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645949A (zh) * 2013-12-12 2014-03-19 浪潮电子信息产业股份有限公司 一种虚拟机动态迁移安全框架
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和***
CN107783913A (zh) * 2016-08-31 2018-03-09 华为技术有限公司 一种应用于计算机的资源访问方法和计算机
CN109614204A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 内存隔离保护方法、隔离检查硬件、soc芯片和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵福发 ; 郭炜 ; 魏继增 ; .一种基于PowerPC的安全SoC设计.计算机工程与科学.2014,(第12期),全文. *

Also Published As

Publication number Publication date
CN111666579A (zh) 2020-09-15

Similar Documents

Publication Publication Date Title
US11321452B2 (en) Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus
US10726120B2 (en) System, apparatus and method for providing locality assertion between a security processor and an enclave
US9922045B2 (en) Data management in a multi-tenant distributive environment
US10255088B2 (en) Modification of write-protected memory using code patching
US20170277530A1 (en) Technologies for securing a firmware update
WO2021036706A1 (zh) 可信应用的运行方法、信息处理和内存分配方法及装置
KR20130060287A (ko) 사전-부팅 및 안전 모드 동작들을 위한 안전한 판독가능한 메모리 영역의 지원
CA3142633A1 (en) Method and apparatus for inter-process communication, and computer device
CN112148418A (zh) 用于访问数据的方法、装置、设备和介质
CN108885572B (zh) 安全驱动程序平台
CN113312140A (zh) 虚拟可信平台模块
CN116028455A (zh) 一种数据处理方法、装置、存储介质及电子设备
CN114969713A (zh) 设备验证方法、设备及***
US10936506B2 (en) Method for tagging control information associated with a physical address, processing system and device
US11726797B2 (en) Secondary processor device ownership system
US8006009B2 (en) Methods and device for implementing multifunction peripheral devices with a single standard peripheral device driver
CN111666579B (zh) 计算机设备及其访问控制方法和计算机可读介质
CN110383254B (zh) 优化与网络节点相关联的内存映射
US10387681B2 (en) Methods and apparatus for controlling access to secure computing resources
WO2022237624A1 (zh) 内存分配方法、装置和***
US9176781B2 (en) Virtual machine system, memory management method, memory management program, recording medium, and integrated circuit
CN116126463A (zh) 内存访问方法、配置方法、计算机***及相关器件
CN117271105A (zh) 芯片、芯片控制方法及相关装置
US20220103541A1 (en) Enhanced n-layer sso controlled authentication for enterprise devices
CN116418848A (zh) 网络节点的配置和访问请求的处理方法、装置

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