浅析okl4手机虚拟化

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




(欢迎转载,请注明出于弯曲评论)

1.  引子

写这个东西的缘由来自于前一段时间看到了篇文章(http://laoyaoba.com/ss6/?action-viewnews-itemid-135833) OK  Labs公司在移动虚拟化市场领跑。作为一个技术人员,不由得又让我重新研究了下虚拟化技术在嵌入式领域的应用。希望能通过分析嵌入式领域比较有代表性的okl4技术能让大家也对这块有更多的了解。

2.   嵌入式领域需要虚拟化吗?

答案是肯定的。但是就以前在弯曲评论上的有限的几篇关于嵌入式虚拟化方面的文章:

1)嵌入式领域中的虚拟化技术

2)虚拟化进入手机领域-Motorola Evoke QA4采用基于微内核OKL4的解决方案

的讨论情况来看,除了首席说的实现HA外,大家包括我都不看好虚拟化在嵌入式特别是手机方面的应用。原因大概为:

a) 嵌入式系统资源较少,目前缺少杀手级应用需要采用虚拟化技术让在一部手机上运行多个OS

b) 嵌入式虚拟化除了解决安全这块的问题外,似乎没有市场突破点

所以看到OK Labs的新闻后,我就到网上查看了相关资料看看它在手机虚拟化方面的市场究竟在哪里,结论如下:

a)   通过虚拟化能实现在一个arm9上实现以前arm+dsp或者双arm的大部分功能,降低了手机的成本。手机硬件厂家高兴了

b)   软件和硬件通过虚拟化技术实现了较松的耦合,这样在发布一个新平台时,系统软件只需要实现很少的改动就能移植到新平台。手机系统软件厂家高兴了

c)   通过虚拟化技术实现各种安全隔离,让运营商能提供更多的业务,比如在不同的安全环境里分别实现手机支付,企业资料访问,drm等安全要求高的业务。另外Intel已经和NTT联手推出OSTI,准备把这个像ARINC 653那样弄成一个标准,这样的话虚拟化技术更是不可或缺。移动运营商高兴了

d)   有了a, b, c的努力,用户可以以更低的价格得到一个更安全,业务更繁多的手机。用户也高兴了

大家好才是真的好,正是在这种环境下,Okl4成功了。

3.  OKL4的手机虚拟化方案

那OK Labs的解决方案是怎样的呢?首先OK Labs认为xen之类的面向企业的虚拟化在面对当前的嵌入式系统时存在着很多不足:

1.   嵌入式系统软件的复杂性

随着嵌入式系统的规模越来越大,软件越来越复杂。对系统的稳定和可靠性提出了高要求,这个就要求有很好的细粒度的软件模块封装。而传统的虚拟化技术的是以整个OS为封装对象,粒度太大。而且由于嵌入式系统的资源限制,不大可能都运行多个系统来保证HA,比如消费类嵌入式系统。

2.   嵌入式系统的整体性

嵌入式系统虽然也强调通过隔离来实现安全,但是本质上它的特点是结合所有的资源来完成特定的任务,这点就要求嵌入式系统的虚拟化要能保证:

2.1  不同隔离域之间的高效通信

企业虚拟化要求的是隔离性好,各个虚拟机之间的关联较少。之间的通信基本和物理主机差不多,通过tcp/ip协议来进

行。因此企业虚拟化方案并不适合嵌入式系统

2.2    不同隔离域对系统设备的共享

企业虚拟化也面临这个问题,一般都是通过附带一个特殊的linux系统来复用其中的driver。对于嵌入式系统来说,这样的

话可能会导致一个全功能的hypervisor的代码太大

2.3   能在全局的范围内实现隔离域的调度

企业虚拟化是强调公平利用资源,一般都不提供有效的实时调度。

3.   安全策略

单纯的实现虚拟化隔离还是不够的,还需要有套严格的安全策略管理给不同的域以不同的访问权限。简单的讲就是不同的域

或者组件之间的访问都是需要严格控制的。(个人觉得企业虚拟化也需要这个,好像xen也有类似的机制)

4.  TCB(Trusted computing base)

虚拟化技术实际上是加大了TCB,因为它在OS的基础上还增加了虚拟化层。

通过上面的分析可以看到在面对嵌入式系统时,传统的虚拟化技术存在着很多不足。因此OK Labs推出了以microkernel为基础的虚拟化方案来满足这些不足。

要满足以上的这些不足,需要引入一些通用OS的机制。因此OK Labs在其microkernel的基础上,加入了对虚拟化的更好的支持,推出了OKL4 microvisor来实现手机虚拟化。

1.  如何解决嵌入式系统的可靠性和稳定性 以及 TCB

OKL4 microvisor提供了更细粒度的封装,通过提供一个可选的轻量级的posix环境,使得一些安全要求比较高的程序可以运行在一个最小化的TCB环境里。同时和其他的OS运行在不同的地址空间,这样系统的可靠性,稳定性,以及减小TCB都得到了保障。如下图:

同时OK Labs说也有不少用户开始把一些软件从OS中分离出来,形成一个混合的结构:

这样的话,能够提供细粒度的封装和隔离,任何一个模块出了问题都不会影响到系统的其他的部分。同时使程序运行所依赖的TCB能控制到最小, 系统的安全性也得到了保障。

2.   如何解决安全策略

正如前面所说光有隔离还是不够的,还需要一套安全控制的策略。OKL4 microvisor通过提供Secure HyperCell (SHC)功能来实现的。

可以看出OKL4 microvisor的控制粒度能达到一个单独运行APP的域,通过每个域的capabilities 来实现不同隔离域间的严格控管,例如是否可以访问其它域,访问的权限等等。

3. 如何解决嵌入式系统的整体性

3.1    不同隔离域之间的高效通信

这个对于基于mcirokernel的系统来说比较容易解决,因为不同隔离域间的高效通信类似于进程间通信。相对传统虚拟化的不同OS之间的通信类似于不同物理主机之间的通信,OKL4 microvisor基于microkernel的技术的高效IPC通信和共享内存方法能比较容易的实现这个目标

3.2    不同隔离域对系统设备的共享

图中的不在VM中的Driver就类似于xen domain0中的真实的原生驱动。VM中的virtual Driver就类似于xen中的Front end driver,功能就是把io请求转化成高效的IPC,然后传给真实的Driver。

另外对于trusted域,OKL4 microvisor允许该域(VM)中的Driver直接响应中断,接管真实硬件。其他域还是通过virtual Driver访问它,从而实现设备共享。当然也可以把该驱动从VM中移植到OKL4 microvisor上,然后通过Virtual Driver访问它,这样的话系统改动就比较大了,对于某些独占的设备这么干的话,对设备的处理和响应会更高效。

3.3  能在全局的范围内实现隔离域的调度

因为嵌入式设备大多需要实现实时的功能。通过虚拟化技术后,系统中就出现了实时和非实时程序并存的局面了。

可以在hypervisor中采用基于优先级的调度方法,给实时域高优先级,运行linux/windows的应用域低优先级。这样就能在保证实时域正常工作的同时也能兼顾应用域的程序。

但是这种方法的问题跟首席在评论RTCore时所说的一样,缺少一个全局的优先级调度,会导致实时域里面一个优先级很低的程序会抢占应用域里面一个优先级比较高的程序。所以OKL4 microvisor提供了一个基于全局优先级的调度,如下图所示:

系统的设计者在系统运行前就设置好VM中的优先级到全局的优先级的映射,这样VM的优先级就会随着里面的任务的优先级而改变,这样就能实现实时域和应用域之间的交替运行,让各个域中的任务能按各自优先级依次运行。

参考文章:

1.  Virtualization for Embedded Systems

www.ok-labs.com/_assets/image_library/OK_Virtualization_WP.pdf

2.  Hypervisors for Consumer Electronics

http://www.ertos.nicta.com.au/publications/papers/Heiser_09.pdf

3.  The OKL4 Microvisor: Convergence Point of Microkernels and Hypervisors

http://conferences.sigcomm.org/sigcomm/2010/papers/apsys/p19.pdf

(1个打分, 平均:5.00 / 5)

雁过留声

“浅析okl4手机虚拟化”有41个回复

  1. 陈怀临 于 2010-11-16 7:30 上午

    是个好同学。楞把我当年评价RTCore的观点都写进来了。。。很细心。

  2. James 于 2010-11-16 8:34 上午

    现在对于手机安全这一块的需求还没有爆发. 但一定会爆发的.

  3. 理客 于 2010-11-16 8:37 上午

    需要手机360

  4. blade 于 2010-11-16 1:22 下午

    security做在app层还是driver

  5. mthw 于 2010-11-16 3:56 下午

    单芯片的智能手机解决方案必将爆发

  6. hello 于 2010-11-16 4:24 下午

    @blade, 这里的security是相对一个个cell. driver 也被做成app 一样独立运行在cell中。

  7. hello 于 2010-11-16 4:25 下午

    @mthw, 单核方案要爆发比较难,还是被上游芯片公司控制着。

  8. deltali 于 2010-11-16 4:31 下午

    谢谢首席帮着排版了一下,加入图片后总有字显示在图片旁边。昨天搞了半天没搞定,后来下班了,只能仓促的提交了。下次一定改定。

    To blade:
    根据我的理解,security的策略还是在应用层做。hypervisor只负责实现最基本的通道和权限的检查

  9. 陈怀临 于 2010-11-16 5:06 下午

    图片的HTML格式里,加:width=580. will fix those kind issues…

  10. hello 于 2010-11-16 5:47 下午

    deltali兄,对OKL4了解很深,请问供职于OK公司的吗?

  11. deltali 于 2010-11-16 9:53 下午

    to hello:
    OK Labs好像在中国还没有部门。谈不上了解很深,事实上你把我文章最后的3篇文章看了,基本就行了。

    另外OKL4 microvisor是不开源的,只能从文章揣摩了,有不正确的,希望有人指点一下。

  12. westermann 于 2010-11-16 10:08 下午

    我咋觉得很浮云

  13. 蛋蛋 于 2010-11-16 10:14 下午

    08年看过一段时间okl4,觉得开发者太少了,还难成气候。还是看linux好。

  14. hello 于 2010-11-17 12:58 上午

    对于图2:3.2 不同隔离域对系统设备的共享
    我指正一下,就是device driver 也是一个独立的cell,相当于你说的VM.
    呵呵,说明用心去研究过了,挺不错的。

  15. hello 于 2010-11-17 1:00 上午

    我与蛋蛋同学相反,我也是08年看到okl4的,当时就挺看好这个小公司。

  16. coder 于 2010-11-17 3:04 上午

    OKL4的第一单是只跑在基带上的一个tiny kernel. 剩下的都是浮云…..

    其实最应该被赞赏的是在澳大利亚,这样一个大农村,怎么会有OKL4这样的一个小公司。 Gernot给本科生上课的方式。挖掘和培养了一批又一批非常好的系统程序员。这些学生也是OKL4的骨干。

  17. hello 于 2010-11-17 5:04 上午

    是啊。大才的定义就是这样。

  18. to hello 于 2010-11-17 5:29 下午

    你说的没错。但是嵌入式系统最关注的是性能还有实时性,所以对于有些是某个OS独占的设备是允许让Guest OS来接管该设备的。前提是该Guest OS是可信的。这类应用在嵌入式虚拟化中使用很多,为了满足比较苛刻的实时要求,很多都是在hypervisor做完硬件划分后,让RTOS直接管理它独占的设备,hypervisor不再干预了。

  19. bigrong 于 2010-11-17 9:34 下午

    想法:如果说有一个基于浏览器的虚拟化解决方案是最好的,彻底隔离了硬件和软件,以及更上层的应用。默认认为网络质量超好,带宽足够充足。
    如果能够实现这一点的话,对一些行业有非常非常大的好处。好处在运营方面,可以将opex以及硬件的采购成本和后续成本降低到最低限度。
    我不关心是将嵌入设备作虚拟化,而是让嵌入设备使用虚拟化应用,比如桌面虚拟化应用。
    问题:什么是真正的瓶颈?
    问题:多媒体是否可以在虚拟化应用上很好的应用,并且能够在本地被有效的输出,特别是声音。

  20. deltali 于 2010-11-18 6:18 上午

    to bigrong:
    没有完全明白基于浏览器的虚拟化解决方案的意思。但是如果说让嵌入式设备使用虚拟化应用的话,之前弯曲上有个介绍OKL4和Citrix 联合发布Nirvana(涅盘)手机,就是在okl4的一个安全的域里面访问citrix的虚拟桌面。不知道是不是你想要的。

    至于瓶颈的话,应该主要还是性能方面:
    我想到的有2个方法
    1. 在提供的安全域里面直接访问硬件
    2. 考虑网络足够好的话,可以考虑把复杂的多媒体计算重定向到服务器端执行

  21. 理客 于 2010-11-18 9:23 上午

    我理解大荣的意思是手机终端不做任何应用处理,通过web送到服务端处理。这个还有些远,并且及时这样,也涉及和服务端交换信息的安全问题,所以还是有虚拟化存在的意义,当然,此时对虚拟化性能的需求就不强烈了。楼上提到的混合方案做的折中在实际中可能更实用一些

  22. playmud 于 2010-11-18 11:22 上午

    实时性重要吗?有多重要?我不觉得,聊天也是需要时间思考的。
    我倒是觉得手机虚拟机的出现是为了圈地。当然安全和便捷上也捎带有那么一点点需求。

  23. 素里太守 于 2010-11-18 12:14 下午

    to 21:

    日本的Access,美国的Skyfire,国内的UCWEB,欧洲的OPERA Mini都是简化浏览器(服务器端RENDERING)的例子。至于在手机上实现终端客户端(citrix的虚拟桌面)的难点不在于安全与代码开发而在与用户体验的不同。按JOBS的话讲就是要给用户张砂纸将手指的打磨去3/4.

  24. KC 于 2010-11-18 2:04 下午

    Google 或者微软最应该尽快收购这个公司。

  25. C 于 2010-11-18 4:27 下午

    有的人说话真的不经过大脑

  26. KC 于 2010-11-19 12:01 上午

    呵呵,25楼是说我么

  27. Bob_zhao 于 2010-12-02 12:33 上午

    手机虚拟化技术,和电信行业的嵌入式虚拟化技术,还是存在较多差异的:
    1、实时性问题,手机上的实时性是用户体验层次,基本上在100ms级别就可以满足需求,包括对内外部中断(触摸屏和时钟中断等),但是电信设备的实时性是协议层次的,要求在10ms甚至更低;
    2、性能方面,大家对手机上的速度快还是建立在用户体验上,跑了多个操作系统之后,速度只要能够说的过去,都是没有问题的,并且没有人闲的没事经常跑多个OS和应用在折腾,但是电信设备不同,可能是时刻都在运行多个业务,并且性能是有明确的定义和范围,通常要求虚拟化的开销控制在5%之内;
    3、安全性要求,手机上的安全性只要是病毒软件和智能手机上新安装软件对系统的影响,而电信设备的安全却是要求多个系统能够平安相处,泾渭分明,并且可以独立升级和重启。
    还有其他一些差异性,比如软硬件解耦,资源动态共享等,都存在差异

  28. dd 于 2010-12-13 11:01 下午

    Bob_zhao 同学说的有道理。可否说一下,电信方面的virtualization的应用主要是什么?

  29. missgod 于 2010-12-27 7:51 上午

    个人不太看好手机虚拟化!

    a) 通过虚拟化能实现在一个arm9上实现以前arm+dsp或者双arm的大部分功能,降低了手机的成本。手机硬件厂家高兴了
    ======== 功耗呢?DSP比虚拟化的core
    b) 软件和硬件通过虚拟化技术实现了较松的耦合,这样在发布一个新平台时,系统软件只需要实现很少的改动就能移植到新平台。手机系统软件厂家高兴了
    ======== 目前的确存在系统软件落后Soc硬件部署时间的问题。不过,我觉得andriod这样开源包含整个手机软件栈的系统是正确的方向。设备驱动无论如何都要提供的,虚拟的设备还是受限功耗。

    c) 通过虚拟化技术实现各种安全隔离,让运营商能提供更多的业务,比如在不同的安全环境里分别实现手机支付,企业资料访问,drm等安全要求高的业务。另外Intel已经和NTT联手推出OSTI,准备把这个像ARINC 653那样弄成一个标准,这样的话虚拟化技术更是不可或缺。移动运营商高兴了
    =========这个倒是一个可能的方向。不过有多大市场呢

    d) 有了a, b, c的努力,用户可以以更低的价格得到一个更安全,业务更繁多的手机。用户也高兴了

  30. deltali 于 2010-12-27 5:33 下午

    to missgod:
    我们看不看好没什么意义,最终还是看市场的。另外:
    http://www.vmware.com/company/news/releases/vmware-lge-partnership.html
    看看这篇报道,套用赵本山的一句话,欢迎也好,不欢迎也好,手机虚拟化都带着诚意扑面而来了。

  31. shuyong 于 2010-12-27 5:49 下午

    我看最大的障碍还是在性能和内存的大小上面。在pc机上跑一个vmware运行linux那个速度真的很不流畅。

  32. deltali 于 2010-12-27 5:54 下午

    to shuyong:
    vmware的嵌入式产品跟它的企业版的产品不一样的。mvp产品其实就是以前的trango的东西,trango是个搞嵌入式虚拟化的法国公司。很遗憾现在trango网站被重定向到vmware网站上去了,看不到啥实际资料。可以肯定的是也是一个类似okl4,跑的也是para-virtualization的系统,所以速度方面应该比你想象的要快。

  33. 宋伟 于 2010-12-27 11:47 下午

    手机上面的虚拟化。 想xen和kvm这样重量级的虚拟化架构就不适合了。 我想由于嵌入式上面硬件的方案相对固定,利用bare metal的虚拟化架构type1架构比较适合包括手机,ipad等这样的虚拟化应用

  34. lixianjing 于 2010-12-29 6:41 上午

    oklab在上海有个开发小组了吧,而且在弯曲上有来自oklab的朋友(呵,因为他加了我的MSN)。
    虚拟化对像高通这样的公司肯定是有好处的,至少可以减少维护多个平台的工作量,但是对于普通用户我暂时看不出有多大好处。不过对于程序员来说,还是有意思的事,值得花些时间去研究一下。
    okl4还不能充足利用高通平台的AP和BP,目前完全是跑在作为BP的ARM9上,据说性能已经非常好了,AP闲着倒是可以减少功耗。

  35. 陈怀临 于 2010-12-29 7:22 上午

    okl4据说是为了主攻SPRD。SPRD VP SW对我说,OKL4的展示不错,就是太贵了。。。

  36. deltali 于 2010-12-29 8:37 上午

    oklab在中国有分部我还真不知道,不过看到这篇文章也不出来指点一下,有点不厚道哦,哈哈。
    oklab关注中国市场是肯定的,我在他们的英文网站上居然还发现了一篇中文文章,似乎他们的方案瞄准了大众市场智能手机,就是争取以feature phone的价格实现常用的smartphone的功能。

    但是我个人认为它们的主推还是安全,正如我在文中所提到的,一旦运营商为了推出各种增值付费的业务对手机的安全性提出要求时(类似ARINC 653),虚拟化方案无疑就不再是鸡肋了。但是这些需求用户是不知道的,而是像数字电视一样是由运营商和各终端厂家来推动的。

  37. James 于 2010-12-29 3:52 下午

    弯曲上有给okL4打工的人, 我肯定及确定。

    安全是其主推方向之一,但是目前市场上还是主要在推 单CPU 方案。

  38. CC 于 2010-12-29 4:30 下午

    SPRD? 是LG的那个

  39. EE 于 2010-12-29 4:33 下午

    欧耶。。。OKL好像在上海没有啥分舵。

  40. 理客 于 2010-12-31 4:54 下午

    在从PC开始的智能终端按照摩尔定律加速情况下,包括smart phone,tablet PC等通用便携终端一定是类似PC的道路,当然具体的系统特性有其不同于PC的的地方,但整体的用户、业务和产业链的需求和模式和曾经的PC终端是一类的,从这个角度看,apple是一定要在iphone/ipad等被类PC淹没前找到更新的killer或者成功转型等,否则,也许只要5年,iphone/ipad等就难以支撑apple的高额利润了

  41. yucubby 于 2011-02-28 6:13 上午

    为什么大家对手机/手持设备虚拟化就集中在OS虚拟机的层面?这与我之前的想法不太一样。

    就长远来说,我认为手持设备很难解决功耗,散热与性能的相互制约(除非电子信息技术有质的突破比如量子计算),所以我觉得让如何让手机更高效,方便地成为云计算的虚拟终端也许更有意义。这样就不存在手机OS虚拟化的问题,因为所有计算都在云端。但是现在的解决方案瓶颈在于速度与带宽