virtualization

多数的系统都是基于一个privileged OS + 多个unprivilege App。

ARM的virtualization是指,一个system中运行多个OS,

  体现在硬件上的区别是:多了virtual machines切换之间的硬件实现和加速

  体现在软件上的区别是:需要一个hypervisor software

hypervisor的两种方式:

  1) bare-metal hypervisor,每个Virtual Machine(VM)包含一个Guest Os,应用的较多的Open Source Hypervisors,是Xen

  2) hosted-hypervisor,首先有一个host OS,然后生长出很多Guest Os,应用较多的Open Source Hypervisor,是KVM

  

  Type1与Type2相比,Type1有更好的性能,Type2有更好的兼容性

                     

为了实现virtualization,硬件需要加入的实现:

  1) 一个特定的exception level (EL2),来专门执行hypervisor code

  2) 支持所有的虚拟 exception和interrupt  路由

  3) two-stage MMU,stage2为hypervisor使用,来隔绝不同的guest os

  4) 一个特定的exception指令,Hypervisor Call (HVC)

virtualization只是支持non_secure mode,不支持secure-world的virtualization

armv8-a,即支持AArch32的EL2,也支持AArch64的EL2;当应用在AArch64中时,架构中会有几个特定的EL2寄存器;

  Exception return state register,SPSR_EL2,ELR_EL2

  Stack pointer,SP_EL2,

 

Hyperviosr相关的software:

  1) Memory managerment,hypervisor需要实现对自己和guest os的地址映射,并且EL2拥有自己的vector table,

      VBAR_EL2寄存器。

    

  2) Device emulation,由于硬件实现并不是与guest os个数相同的,所以,在应用资源中都需要做arbitration。

      此时的arbitration,是由hypervisor来实现的。

  3) Device assignment,device emulation是需要的,但是代价很昂贵,可以通过Device assignment,直接将

      device的virtual machine通道赋值给相应的guest os,这样guest可以自己控制自己的device,而不需要

      通过hypervisor arbitration。

  4) context switch,当hypervisor调度另一个guest os在当前os时,需要进行context switch,保存当前guest os的

      数据到memory,同时加载另一个guest的context进来。当时相应device的virtual machine需要停下来,

      不在占用系统的资源。

    包括:general-register,virtual interrupt,

转载于:https://www.cnblogs.com/-9-8/p/8432703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值