CN102306108B - Arm 虚拟机中基于mmu 的外设访问控制的实现方法 - Google Patents
Arm 虚拟机中基于mmu 的外设访问控制的实现方法 Download PDFInfo
- Publication number
- CN102306108B CN102306108B CN201110217684.7A CN201110217684A CN102306108B CN 102306108 B CN102306108 B CN 102306108B CN 201110217684 A CN201110217684 A CN 201110217684A CN 102306108 B CN102306108 B CN 102306108B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- address
- operating system
- register
- peripheral
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种ARM虚拟机中基于MMU的外设访问控制的实现方法,首先对于虚拟机需要监控的外设,更改每一个上层操作系统中该外设物理寄存器地址所对应的段页表项映射,把对应页表项中的Domain位改为一个错误的值,同时在底层虚拟机的地址空间建立该外设正确的地址映射,且该底层虚拟机接管硬件的数据异常处理以截获上层操作系统可能出现的地址访问错误,当上层操作系统访问上述外设地址时,在MMU进行地址翻译时会产生Domain Fault,从而进入处理器的数据异常处理模式,该行为被虚拟机捕获后,通过读取硬件寄存器以判断是否是Domain Fault类型,如果不是,则跳回操作系统的地址空间,如果是,则底层虚拟机对操作系统的此次访问数据进行处理,并依据处理后的数据由虚拟机访问对应外设寄存器。本发明可以用来解决多个操作系统同时运行时可能存在的对同一外设的访问冲突。
Description
技术领域
本发明属于嵌入式虚拟化技术领域,涉及一种ARM虚拟机中基于MMU的外设访问控制的实现方法,适用于底层虚拟机管理和控制运行在其上层的操作系统对外设的访问,可以满足多个操作系统在同一硬件平台下对外设的不同的访问需求。
背景技术
近年来手机和平板电脑的普及掀起了嵌入式操作系统和嵌入式应用程序的开发热潮,市场上很快涌现出很多优秀的嵌入式操作系统和相应的应用程序,而ARM处理器因为其高性能和低功耗,成为了最受欢迎的嵌入式应用处理器。为了避免针对ARM平台开发的应用程序在不同嵌入式操作系统之间的移植而又能兼具各操作系统内丰富的应用,单一ARM硬件平台支持多操作系统运行成为热门的解决方案。
目前主流的多操作系统解决方案有两种,分别是多操作系统独立运行和多操作系统同时运行。
(1)多操作系统独立运行
这种解决方案通过在启动阶段根据用户的选择,加载不同的操作系统镜像,从而使用不同的操作系统。此方案不需要对操作系统的内核和文件系统进行修改,减少了开发的难度,然而此方案在运行时不能进行多操作系统的实时切换,必须关闭当前操作系统后才能启动另一个操作系统,在一定程度上造成了用户的不便。
(2)多操作系统同时运行
这种解决方案在操作系统下层实现了一个虚拟机监控器,通过虚拟机管理上层操作系统启动和运行时的切换。此方案会少量的修改内核代码,并且多系统同时运行时,每个系统性能要略低于其单独运行时的性能。然而多个系统的同时运行和实时切换可能会带来更好的用户体验。
然而同一个硬件平台同时运行多个操作系统可能引发多操作系统之间对同一外设的访问冲突,例如一个操作系统运行时如果关闭了其他操作系统正在使用的外设,则会影响其他操作系统的正常运行。这个问题现有的公开的解决方案实现难度普遍较大,而且实现引起的整体性能损失也较大。
发明内容
本发明所要解决的技术问题是提供一种ARM虚拟机中基于MMU的外设访问控制的实现方法,解决多个操作系统同时运行时可能存在的彼此对外设的访问冲突。该方法基于ARM的MMU(Memory Management Unit)对页表地址的访问权限管理,不需要额外的刷新页表缓冲区(Translation Lookaside Buffer,简称TLB)和高速缓冲存储器(cache),使此功能的实现所引起的性能损失降到最低。
为解决以上技术问题,本发明采用以下技术方案:
ARM虚拟机中基于MMU的外设访问控制的实现方法,首先对于可能出现访问冲突的外设,更改每一个上层操作系统中该外设寄存器地址所在的段页表项映射,把对应页表项中的Domain位改为一个错误的值,同时在底层虚拟机的地址空间建立该外设正确的地址映射,且该底层虚拟机接管硬件的数据异常处理以获得上层操作系统访问寄存器的地址和数据,当所述上层操作系统对所述可能出现冲突的外设进行访问时,出现Domain Fault,从而进入该操作系统的数据异常处理模式,该行为被虚拟机捕获后,转入虚拟机地址空间,然后虚拟机通过读取操作系统的处理器的DFSR寄存器判断数据异常的类型,如果不是Domain Fault类型,则跳回操作系统的地址空间,如果是Domain Fault类型,虚拟机读取操作系统的DFAR寄存器获取操作系统试图访问的寄存器地址,然后读取数据异常模式下的LR寄存器得到数据异常发生时的指令地址和对应的数据。
作为本发明的优选实施例,所述虚拟机为Xtimes虚拟机,该Xtimes虚拟机采用地址空间共享方案,即Xtimes虚拟机占用32位CPU的4G地址空间中的高64M地址空间;
本发明ARM虚拟机中基于MMU的外设访问控制的实现方法至少具有以下优点:本发明实现时,首先更改每一个上层操作系统中指定外设寄存器地址所在的页表映射,同时,在虚拟机中建立该外设正确的地址映射,且该虚拟机接管硬件的数据异常处理,这样,当操作系统对该外设进行访问时,出现错误,进入数据异常模式,由于虚拟机接管硬件的数据异常处理,所以,操作系统对该外设的访问被虚拟机捕获,在判断确定是Domain Fault类型后,通过处理异常数据后对外设寄存器进行访问。由此可知,本发明在实现过程中,不会存在多个操作系统之间对同一外设的访问冲突。同时,由于本发明ARM虚拟机中基于MMU的外设访问控制的过程中,不需要额外的刷新TLB和cache,从而性能损失较小。
附图说明
图1为本发明虚拟机管理客户操作系统对设备访问示意图;
图2为本发明Xtimes虚拟机总体架构;
图3为本发明Xtimes和GuestOS共用页表的大致结构;
图4为本发明实现所需的Xtimes和GuestOS共用页表的大致结构;
图5为本发明Xtimes虚拟机控制多操作系统对硬件寄存器访问示意图。
具体实施方式
下面结合附图对本发明ARM虚拟机中基于MMU的外设访问控制的实现方法做详细描述:
首先针对可能出现访问冲突的外设,更改上层操作系统中该外设寄存器地址所在的段页表项映射,把对应页表项中的Domain位改为一个错误的值,使上层操作系统对这些寄存器地址进行访问时,会在MMU翻译地址时发生DomainFault,从而引发数据访问异常进入系统的数据访问异常处理。
其次在底层虚拟机地址空间建立该外设正确的地址映射,使得底层虚拟机能够正常访问该外设寄存器地址。同时底层虚拟机需要接管硬件的数据异常处理,然后通过读取数据异常时保存现场的特殊寄存器,获得上层操作系统访问寄存器的地址和数据。
本发明实际是底层虚拟机将上层操作系统对外设寄存器的读写操作截获,然后根据具体情况对操作数据进行修改后由虚拟机对相应寄存器进行访问,其过程如图1所示。下面以Xtimes虚拟机为例说明如何利用本技术方案管理多操作系统对指定外设寄存器的访问控制。
Xtimes是一款基于ARM平台的虚拟机管理系统,其上层支持多个GuestOS同时运行,其总体结构如图2所示。Xtimes虚拟机采用地址空间共享方案,其中Xtimes占用32位CPU的4G地址空间中的高64M地址空间,即Xtimes占用一级页表的高64个段页表项,总的页表结构如图3所示。
Xtimes实现管理并控制上层多操作系统对指定外设寄存器访问的具体流程如下:
首先更改每个GuestOS地址空间中指定外设寄存器地址所在的页表映射,对其页表项赋予错误的Domain位,这样GuestOS试图访问这些寄存器地址时就会发生Domain Fault,从而进入系统的数据异常模式。同时在Xtimes地址空间中建立对应寄存器地址的正常的页表映射,使得Xtimes可以正常的访问这些外设寄存器,更改后的一级页表如图4所示。
GuestOS运行过程中如果发生了对前面指定寄存器地址的访问,当MMU翻译这些地址时,因为对应页表项含有错误的Domain位,从而会引发了数据异常,系统进入处理器的数据异常模式,同时CPU跳到数据异常处理的入口地址(0xFFFF0010)处执行数据异常处理。由于Xtimes接管所有的硬件异常处理,所以这次GuestOS访问这些寄存器的行为会被Xtimes捕获,从而转入Xtimes地址空间。
然后Xtimes通过读取处理器的数据错误状态寄存器(Data Fault StatusRegister,DFSR)判断这次数据异常的类型,如果不是Domain Fault类型则跳回GuestOS地址空间。如果是Domain Fault则是前面预设的特殊寄存器访问陷阱,此时读取数据错误地址寄存器(Data Fault Address Register,DFAR)获取GuestOS试图访问的寄存器地址,然后读取数据异常模式下的LR寄存器(返回地址寄存器)算得数据异常发生时的指令地址和对应的数据。
最后Xtimes根据具体情况对GuestOS数据进行处理,并依据处理后的数据访问对应外设寄存器。因为此时处于Xtimes执行环境,CPU访问的是Xtimes的地址空间内正确的寄存器映射地址,所以这次访问不会发生数据异常。以上Xtimes虚拟机管理多操作系统对指定外设寄存器访问的具体流程如图5所示。
以上所述仅为本发明的一种实施方式,不是全部或唯一的实施方式,本领域普通技术人员通过阅读本发明说明书而对本发明技术方案采取的任何等效的变换,均为本发明的权利要求所涵盖。
Claims (3)
1.ARM虚拟机中基于MMU的外设访问控制的实现方法,其特征在于:首先对于需要监控的外设,更改每一个上层操作系统中该外设寄存器地址所在的段页表项映射,把对应页表项中的Domain位改为一个错误的值,同时在底层虚拟机的地址空间建立该外设正确的地址映射,且该底层虚拟机接管硬件的数据异常处理以截获上层操作系统可能出现的地址访问错误,当所述上层操作系统对上述外设进行访问时,出现Domain Fault,从而进入处理器的数据异常处理模式,该行为被虚拟机捕获后,转入虚拟机地址空间,然后虚拟机通过读取操作系统的处理器的DFSR寄存器判断数据异常的类型;如果不是Domain Fault类型,则跳回操作系统的地址空间,如果是Domain Fault类型,则虚拟机读取操作系统的DFAR寄存器获取操作系统试图访问的寄存器地址,然后读取数据异常模式下的LR寄存器得到数据异常发生时的指令地址和对应的数据。
2.如权利要求1所述的ARM虚拟机中基于MMU的外设访问控制的实现方法,其特征在于:所述虚拟机为Xtimes虚拟机,该Xtimes虚拟机采用地址空间共享方案,即Xtimes虚拟机占用32位CPU的4G地址空间中的高64M地址空间。
3.ARM虚拟机中基于MMU的外设访问控制的实现方法,其特征在于:包括以下步骤:
(1)更改每个操作系统地址空间中指定外设寄存器地址所在的页表映射,对其页表项赋予错误的Domain位,同时,在下层的虚拟机地址空间中建立对应寄存器地址正确的页表映射;
(2)当操作系统在运行过程中发生了对指定外设寄存器地址的访问时,由于对应页表项含有错误的Domain位,因此,引发数据异常,操作系统进入处理器的数据异常模式,同时CPU跳到数据异常处理的入口地址执行数据异常处理,这时,该操作系统对指定外设的访问行为被虚拟机捕获,并转入虚拟机地址空间;
(3)虚拟机通过读取处理器的DFSR寄存器判断这次数据异常的类型,如果不是Domain Fault类型,则跳回操作系统地址空间,如果是DomainFault类型,则读取DFAR寄存器获取操作系统试图访问的寄存器地址,然后通过读取数据异常模式下的LR寄存器获得数据异常发生时的指令地址和对应的数据,最后虚拟机根据具体情况对操作系统数据进行处理并访问对应外设寄存器。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201110217684.7A CN102306108B (zh) | 2011-08-01 | 2011-08-01 | Arm 虚拟机中基于mmu 的外设访问控制的实现方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201110217684.7A CN102306108B (zh) | 2011-08-01 | 2011-08-01 | Arm 虚拟机中基于mmu 的外设访问控制的实现方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN102306108A CN102306108A (zh) | 2012-01-04 |
| CN102306108B true CN102306108B (zh) | 2014-04-23 |
Family
ID=45379974
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201110217684.7A Expired - Fee Related CN102306108B (zh) | 2011-08-01 | 2011-08-01 | Arm 虚拟机中基于mmu 的外设访问控制的实现方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN102306108B (zh) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103761479B (zh) * | 2014-01-09 | 2017-02-08 | 北京奇虎科技有限公司 | 恶意程序的扫描方法和装置 |
| CN106502924B (zh) * | 2016-10-27 | 2020-02-07 | 深圳创维数字技术有限公司 | 一种内存优化方法及系统 |
| CN112527698B (zh) * | 2020-12-04 | 2024-03-22 | 联想(北京)有限公司 | 一种处理方法、装置及设备 |
| CN115729862A (zh) * | 2022-11-14 | 2023-03-03 | 深圳市德明利技术股份有限公司 | 微控制器、外部设备、微控制系统及通信的方法 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1947082A (zh) * | 2004-03-19 | 2007-04-11 | 安全机器有限公司 | 控制对外设进行访问的方法和设备 |
| CN101551747A (zh) * | 2009-04-09 | 2009-10-07 | 怯肇乾 | Arm系列微处理器的软件体系架构工具 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05108383A (ja) * | 1991-10-18 | 1993-04-30 | Fujitsu Ltd | 仮想計算機システムの割込みマスク方式 |
-
2011
- 2011-08-01 CN CN201110217684.7A patent/CN102306108B/zh not_active Expired - Fee Related
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1947082A (zh) * | 2004-03-19 | 2007-04-11 | 安全机器有限公司 | 控制对外设进行访问的方法和设备 |
| CN101551747A (zh) * | 2009-04-09 | 2009-10-07 | 怯肇乾 | Arm系列微处理器的软件体系架构工具 |
Non-Patent Citations (1)
| Title |
|---|
| JP特开平5-108383A 1993.04.30 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN102306108A (zh) | 2012-01-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8595723B2 (en) | Method and apparatus for configuring a hypervisor during a downtime state | |
| US7434003B2 (en) | Efficient operating system operation on a hypervisor | |
| US9336035B2 (en) | Method and system for VM-granular I/O caching | |
| CN101681269B (zh) | 多虚拟化技术的自适应动态选择与应用 | |
| US8166288B2 (en) | Managing requests of operating systems executing in virtual machines | |
| CN103080918B (zh) | 功率优化的中断传递 | |
| US9218302B2 (en) | Page table management | |
| US8078862B2 (en) | Method for assigning physical data address range in multiprocessor system | |
| US10176007B2 (en) | Guest code emulation by virtual machine function | |
| US8806104B2 (en) | Enabling virtualization of a processor resource | |
| US20150143149A1 (en) | Efficient power management of a system with virtual machines | |
| US20190188028A1 (en) | Paravirtualized access for device assignment by bar extension | |
| US20120198187A1 (en) | Technique for preserving memory affinity in a non-uniform memory access data processing system | |
| TW201120643A (en) | Providing hardware support for shared virtual memory between local and remote physical memory | |
| IL168977A (en) | Cross partition sharing of state information | |
| WO2014025454A1 (en) | Methods, systems and devices for hybrid memory management | |
| US7941623B2 (en) | Selective exposure of configuration identification data in virtual machines | |
| CN102150147A (zh) | 存储器服务器 | |
| JP2014174998A (ja) | 協調設計されたプロセッサへの、隔離された実行環境の作成 | |
| CN101876954B (zh) | 一种虚拟机控制系统及其工作方法 | |
| US10365947B2 (en) | Multi-core processor including a master core performing tasks involving operating system kernel-related features on behalf of slave cores | |
| CN112860381B (zh) | 基于申威处理器的虚拟机内存扩容方法及系统 | |
| US8458438B2 (en) | System, method and computer program product for providing quiesce filtering for shared memory | |
| CN102306108B (zh) | Arm 虚拟机中基于mmu 的外设访问控制的实现方法 | |
| Maass et al. | Ecotlb: Eventually consistent tlbs |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140423 Termination date: 20160801 |
|
| CF01 | Termination of patent right due to non-payment of annual fee |