书签 分享 收藏 举报 版权申诉 / 13

基于OS虚拟化的多模式OS的系统和其创建、切换方法.pdf

  • 上传人:r7
  • 文档编号:4027953
  • 上传时间:2018-08-12
  • 格式:PDF
  • 页数:13
  • 大小:717.81KB
  • 摘要
    申请专利号:

    CN201410852021.6

    申请日:

    2014.12.31

    公开号:

    CN104598309A

    公开日:

    2015.05.06

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 9/48申请日:20141231|||公开

    IPC分类号:

    G06F9/48; G06F9/455

    主分类号:

    G06F9/48

    申请人:

    中科创达软件股份有限公司

    发明人:

    朱勇; 耿增强

    地址:

    100191北京市海淀区龙翔路甲1号泰翔商务楼4层

    优先权:

    专利代理机构:

    北京华夏正合知识产权代理事务所(普通合伙)11017

    代理人:

    韩登营; 张焕亮

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供了一种基于OS虚拟化的多模式OS的系统,用于安卓设备,包括:内核、基于内核启动的至少三个用户态环境、域管理;其中所述至少三个用户态环境包括:用于基础服务的一个用户态环境,其包括安卓的本地服务和域引擎;用于各个不同模式OS的其他各个用户态环境,其分别包括:孵化器、Java服务和应用;所述域管理运行于内核之上,各个不同模式OS运行于域管理之上。还相应提供了基于OS虚拟化的多模式OS的系统创建、切换方法。使用本发明可降低安卓系统内存占用量。

    权利要求书

    权利要求书
    1.  一种基于OS虚拟化的多模式OS的系统,用于安卓设备,其 特征在于,包括:内核Kernel、基于内核启动的至少三个用户态环境、 域管理DomainManager;
    其中所述至少三个用户态环境包括用于基础服务的一个用户态 环境、用于各个不同模式OS的其他各个用户态环境;
    用于基础服务的用户态环境包括:安卓的本地服务NativeService 和域引擎DomainEngine;
    所述安卓的NativeService用于对内核为应用提供的各服务的访问 或调用进行管理;
    所述DomainEngine用于控制安卓设备上的NativeService提供的 各服务允许某一被选模式OS的访问和调用;
    用于各个不同模式OS的各个用户态环境分别包括:孵化器 Zygote、Java服务SystemServer和应用App;
    所述DomainManager用于控制各个不同模式OS的创建和生命周 期管理;
    所述DomainManager运行于内核之上,各个不同模式OS运行于 DomainManager之上。

    2.  根据权利要求1所述的系统,其特征在于,所述用于各个不 同模式OS的其他各个用户态环境包括:分别用于普通模式OS和安 全模式OS的第二、三用户态环境。

    3.  一种基于权利要求1所述的系统的创建方法,其特征在于, 包括步骤:
    A、开机加电后执行底层硬件初始化过程;
    B、执行Linux内核的引导过程,包括启动第一个用户级进程init;
    C、执行init进程引导过程,包括安卓系统的初始化、依次启动 域引擎DomainEngine进程、启动本地服务NativeService进程,以完 成用于基础服务的第一用户态环境的启动;
    D、init进程引导过程还启动域管理DomainManager进程;
    E、通过DomainManager进程依次创建各个不同模式OS,以完成 用于各个不同模式OS的各个用户态环境的启动;
    各个模式OS的创建步骤包括:启动孵化器zygote进程,由zygote 进程启动java服务SystemServer进程,并由SystemServer进程启动 各个应用app;
    由DomainEngine控制当前被选模式OS与NativeService提供的 各服务的连接状态为可连接、且被选模式OS的显示层为可见。

    4.  根据权利要求2所述的方法,其特征在于,步骤E后还包括:
    DomainManager记录当前被选模式OS下NativeService提供的各 个服务的当前状态。

    5.  根据权利要求3所述的方法,其特征在于,步骤E所述依次 创建各个不同模式OS的步骤时包括:除首个创建的OS外,其他各 个模式OS依次于后台创建。

    6.  根据权利要求5所述的方法,其特征在于,所述首个创建的 OS为普通模式的OS。

    7.  一种基于权利要求1所述的系统的切换方法,其特征在于, 包括步骤:
    DomainEngine收到切换请求时,控制NativeService内的显示管 理进程设置当前模式OS的显示层为不可见,被选模式OS的显示层 为可见;
    DomainEngine控制NativeService保存当前模式OS所提供的各个 服务的状态;
    DomainEngine控制当前模式OS的各个应用访问NativeService的 进程挂起;
    DomainEngine根据预先保存的被选模式OS下的NativeService各 个服务的状态,恢复NativeService各个服务的状态;
    DomainEngine控制被选模式OS的各个应用可访问 NativeService。

    8.  根据权利要求7所述的方法,其特征在于,
    DomainEngine控制当前模式OS的输入服务停止读取输入设备节 点、控制被选模式OS输入服务读取输入设备节点。

    9.  根据权利要求7所述的方法,其特征在于,所述切换请求是 当前模式OS的切换应用被触发时由该应用发送的。

    说明书

    说明书基于OS虚拟化的多模式OS的系统和其创建、切换方法
    技术领域
    本发明涉及安卓系统的移动设备的安全技术领域,特别是指一种 基于OS虚拟化的多模式系统和其创建、切换方法。
    背景技术
    在安卓设备上,例如手机、平板等移动设备,基于安全的需要, 目前采用两种工作模式的操作系统(OS):普通模式OS和安全模式 OS。
    当安卓设备运行的是普通模式OS时,可执行安全性要求低的应 用,例如用户通常的开放式的网络浏览、信息发送等日常应用。当安 卓设备运行的是安全模式OS时,则可以执行安全性要求高的特殊应 用,比如个人设备办公(Bring Your Own Device)或者个人隐私保护, 并限制用户的某些低安全性的应用。其中,上述两种模式的运行环境 从操作系统层进行隔离,使得一种模式不影响另一种模式。
    为了在安卓设备上可实现运行两种不同模式OS,目前有三种技 术方案:基于虚拟机的方案,这种方案占用内存多,效率低,不太适 合用于移动设备;基于应用容器的方案,这种方案并未完全从操作系 统层进行隔离,安全性低但占用内存较小;基于OS虚拟化的方案, 这种方案处于上两者的中间状态,安全性低于虚拟机但高于应用容 器,内存少于虚拟机但高于应用容器,约是应用容器占用内存的两倍。 从安全性和内存占用量来看,基于OS虚拟化的方案更适用于移动设 备。
    如图1示出了基于OS虚拟化的双模式OS的系统构架,包括内 核(Kernel)、基于内核启动的两个用户态环境。两个用户态环境, 一个用于运行普通模式的OS,另一个用于运行安全模式的OS。每个 用户态环境都分别包含一套安卓的本地服务(NativeService)、孵化 器(Zygote)、Java服务(SystemServer)和应用(App)。其中:
    应用是指在安卓系统中运行的各种应用,如:联系人,日历,各 种社交应用,游戏等。
    Java服务是安卓系统中为应用提供管理和服务的进程,它包含: 安卓包管理,窗口管理,应用栈管理等。
    孵化器是安卓系统的Java虚拟机进程,负责创建所有的应用进程 和Java服务进程。
    本地服务是安卓系统非Java的服务进程,主要是用来为各个应用 对内核的描述的各硬件资源(如对应的驱动端口,或设备文件)的访 问或调用进行管理。例如对内核提供的显示服务(SurfaceFlinger)、 声音服务、视频服务、视频播放引擎(NuPlayer)服务、蓝牙(BT) 服务、Wifi等服务的访问或调用进行管理,管理的内容包括根据应用 的访问或调用为该应用分配内核的上述某服务,或连接或断开到内核 的上述某服务等。例如根据某应用的调用请求,控制将内核提供的声 音服务(如对应的驱动接口,或声音设备描述文件的接口)分配给该 应用。
    名称空间和分组控制器(Namespace+Control Groups)是内核提供 的一套资源隔离的机制和限制资源使用的机制,各用户态环境基于该 特性启动,从而实现不同模式的OS的运行环境从操作系统层进行隔 离,不同模式的OS之间不相互影响。
    当安卓设备启动后,依次启动所述两个用户态环境并进入一用户 态环境,即进入一种模式的OS,当需要切换时,则通知内核,由内 核控制切换进入另一用户态环境,即切换至另一模式的OS。
    这种方式下,启动的两个用户态环境都分别包含一套安卓的本地 服务、孵化器、Java服务和应用,因此其所占内存需要较大,约是启 动一份用户态环境所需内存的两倍。如何能够降低其内存占用量,是 有待于解决的技术问题。
    发明内容
    有鉴于此,本发明的主要目的在于提供一种基于OS虚拟化的多 模式OS的系统和其创建、切换方法,以实现降低其内存占用量。
    本发明提供的一种基于OS虚拟化的多模式OS的系统,用于安 卓设备,包括:内核Kernel、基于内核启动的至少三个用户态环境、 域管理DomainManager;
    其中所述至少三个用户态环境包括用于基础服务的一个用户态 环境、用于各个不同模式OS的其他各个用户态环境;
    用于基础服务的用户态环境包括:安卓的本地服务NativeService 和域引擎DomainEngine;
    所述安卓的NativeService用于对内核为应用提供的各服务的访问 或调用进行管理;
    所述DomainEngine用于控制安卓设备上的NativeService提供的 各服务允许某一被选模式OS的访问和调用;
    用于各个不同模式OS的各个用户态环境分别包括:孵化器 Zygote、Java服务SystemServer和应用App;
    所述DomainManager用于控制各个不同模式OS的创建和生命周 期管理;
    所述DomainManager运行于内核之上,各个不同模式OS运行于 DomainManager之上。
    由上,由于本发明采用了一套安卓系统原生的NativeService,由 不同模式OS共享,而不像背景技术描述的采用了多套NativeService, 从而节省了大量内存,从而提高了系统的性能。
    经测试,本发明可以保持安全性维持不变,高于应用容器方案; 内存使用大量减小,基本与应用容器方案持平;并且执行效率更高, 高于普通OS虚拟化方案、虚拟机方案和应用容器方案。
    可选的,所述用于各个不同模式OS的其他各个用户态环境包括: 分别用于普通模式OS和安全模式OS的第二、三用户态环境。
    由上,可根据需要设置不同安全等级的OS。
    本发明还提供了一种基于上述所述的系统的创建方法,包括步 骤:
    A、开机加电后执行底层硬件初始化过程;
    B、执行Linux内核的引导过程,包括启动第一个用户级进程init;
    C、执行init进程引导过程,包括安卓系统的初始化、依次启动 域引擎DomainEngine进程、启动本地服务NativeService进程,以完 成用于基础服务的第一用户态环境的启动;
    D、init进程引导过程还启动域管理DomainManager进程;
    E、通过DomainManager进程依次创建各个不同模式OS,以完成 用于各个不同模式OS的各个用户态环境的启动;
    各个模式OS的创建步骤包括:启动孵化器zygote进程,由zygote 进程启动java服务SystemServer进程,并由SystemServer进程启动 各个应用app;
    由DomainEngine控制当前被选模式OS与NativeService提供的 各服务的连接状态为可连接、且被选模式OS的显示层为可见。
    由上,由于本发明在启动过程中,采用了一套安卓系统原生的 NativeService,由不同模式OS共享,而不像背景技术描述的采用了 多套NativeService,从而节省了大量内存,从而提高了系统的性能。
    可选的,步骤E后还包括:
    DomainManager记录当前被选模式OS下NativeService提供的各 个服务的当前状态。
    由上,由于进行该记录,可以便于切换回该被选模式OS时,快 速恢复各个服务的状态。
    可选的,步骤E所述依次创建各个不同模式OS的步骤时包括: 除首个创建的OS外,其他各个模式OS依次于后台创建。
    由上,由于其他各个模式OS在后台创建,因此用户当创建完首 个OS后,用户即可使用该安卓设备,不影响用户的正常启动和使用。
    可选的,所述首个创建的OS为普通模式的OS。
    由上,该方式,不影响用户对普通模式OS的正常启动和使用。
    本发明还提供了一种基于权利要求1所述的系统的切换方法,包 括步骤:
    DomainEngine收到切换请求时,控制NativeService内的显示管 理进程设置当前模式OS的显示层为不可见,被选模式OS的显示层 为可见;
    DomainEngine控制NativeService保存当前模式OS所提供的各个 服务的状态;
    DomainEngine控制当前模式OS的各个应用访问NativeService的 进程挂起;
    DomainEngine根据预先保存的被选模式OS下的NativeService各 个服务的状态,恢复NativeService各个服务的状态;
    DomainEngine控制被选模式OS的各个应用可访问 NativeService。
    由上,该切换过程,由于DomainEngine控制NativeService保存 当前模式OS所提供的各个服务的状态;根据预先保存的被选模式OS 下的NativeService各个服务的状态,恢复NativeService各个服务的 状态,可以实现切换到被选模式OS时,快速恢复到该被选模式OS 原来的使用状态。
    可选的,DomainEngine控制当前模式OS的输入服务停止读取输 入设备节点、控制被选模式OS输入服务读取输入设备节点。
    可选的,所述切换请求是当前模式OS的切换应用被触发时由该 应用发送的。
    由上,用户可以根据需要,自行选择要切换的被选模式的OS。
    附图说明
    图1为现有的基于OS虚拟化的双模式的系统构架图;
    图2为本发明基于OS虚拟化的双模式的系统构架图;
    图3为双模式系统的启动流程图;
    图4为双模式系统的切换流程图。
    具体实施方式
    如图2示出了本发明基于OS虚拟化的多模式OS的系统构架图, 该实施例中,是以双模式OS的系统构架为例进行说明,包括内核 (Kernel)、基于内核启动的第一、二、三用户态环境、域管理 (DomainManager)模块,其中:
    第一用户态环境用于基础服务,包括安卓的本地服务 (NativeService)和一域引擎(DomainEngine)模块。NativeService 的作用与背景技术所述相同,主要是用来对内核为应用提供的各服务 的访问或调用进行管理。DomainEngine主要负责安卓设备上的 NativeService提供的当前各服务允许由哪个模式OS访问和调用,或 者说负责将安卓设备当前控制权交给哪个模式OS,从而实现对不同 模式OS的应用访问或调用设备资源进行控制和管理;还负责不同模 式OS间的通信,如负责安全模式从普通模式分享部分信息,比如联 系人信息等。
    第二、三用户态环境都分别包含一套孵化器(Zygote)、Java服 务(SystemServer)和应用(App),第二、三用户态环境分别用于普 通模式OS和安全模式OS。
    DomainManager运行于内核之上,普通模式OS和安全模式OS 运行于DomainManager之上。DomainManager负责普通模式OS和安 全模式OS的创建和生命周期管理,包括管理普通模式OS和安全模 式OS的文件系统。其中,普通模式OS和安全模式OS可以使用不 同的文件系统和系统映像(img文件),普通模式OS和安全模式OS还 可以是不同安卓系统的版本。
    为了进一步提升本发明方案的安全性,在本方案中内核的安全增 强模块(SELinux)是强制开启的。需要说明的是,安全增强模块只 是使用了内核的特性,非本发明创造的模块,故不对此进行赘述。
    由上,由于如图2示出的本发明的所述系统构架图,采用了一套 安卓系统原生的NativeService,由不同模式OS共享,而不像背景技 术描述的采用了多套NativeService,从而节省了大量内存,从而提高 了系统的性能。图2所示的例子进一步扩展,还可以设置与第二用户 态环境相同的第四用户态环境,实现基于OS虚拟化的三模式OS。
    本发明还提供了基于图2的基于OS虚拟化的双模式OS的系统 的创建和切换方法,下面参见图3、图4进行详细说明。
    如图3示出了双模式OS的系统的创建流程,当安卓设备开机后, 包括如下步骤:
    步骤310:开机加电,通过汇编语言编写的bootloader进行底层 硬件初始化,也就是完成CPU等相关硬件的初始化过程,并加载内 核代码,最终跳转到内核的启动程序。这个过程与现有的安卓设备启 动过程相同,不再赘述。
    步骤320:Linux内核的引导过程。
    该过程依次包括:kernel核心初始化,如内存初始化,打开中断, 初始化进程表等等;驱动初始化;启动内核后台(daemons)线程;安 卓根(root)文件系统;以及启动第一个用户级进程init。这个过程与 现有的安卓设备启动过程相同,不再赘述。
    步骤330:init进程启动过程,包括安卓系统的初始化程序,本实 施例中还包括依次启动域引擎(DomainEngine)进程、启动本地服务 (NativeService)进程。
    对于安卓系统手机,init进程的程序位于system/core/init/init.c文 件里,该文件是安卓系统特定的初始化程序,通过该进程可以创建或 安卓设备文件、进程文件和/或系统文件节点,以及启动该配置文件中 的指定的脚本文件以启动指定的服务或进程。本例中,即通过配置文 件指定依次启动所述的DomainEngine、NativeService和后文所述的域 管理(DomainManager)。
    所启动的DomainEngine进程提供的功能主要负责安卓设备上的 NativeService提供的各服务允许由哪个模式OS访问和调用,开机后 的默认配置是允许由普通模式OS访问和调用NativeService提供的各 服务。
    所启动的NativeService进程包括对内核提供的显示服务 (SurfaceFlinger)、声音服务、视频服务、视频播放引擎(NuPlayer) 服务、蓝牙(BT)服务、Wifi等服务的访问和调用进行管理,与现 有的本地服务所含内容相同,不再赘述。
    当DomainEngine和NativeService进程启动后,即完成了用于基 础服务的第一用户态环境的启动。
    步骤340:init进程启动DomainManager进程。
    其中,通过DomainManager进程可以进行普通模式OS和安全模 式OS的创建和生命周期管理,以及对普通模式OS和安全模式OS 的文件系统的管理。
    步骤350:DomainManager进程创建普通模式OS,该普通模式 OS的创建过程包括:
    启动孵化器(zygote)进程,由zygote进程启动java服务 (SystemServer)进程,并由SystemServer进程启动各个应用(app)。 这个依次启动的过程与背景技术中的启动过程相同,不再赘述。
    其中,当普通模式OS启动后,由DomainEngine控制在基础服务 的data数据域中(例如记录在如//data目录下)记录交互模式为普通 模式OS,且记录当前普通模式OS下NativeService提供的各个服务 的当前状态,例如显示服务、声音、wifi、bt、声音和摄像头等设备 资源的状态参数。所述状态参数包括是否被开启,被分配给哪个应用 等。
    步骤360:DomainManager进程在后台创建安全模式OS,该OS 的创建过程与创建普通模式OS过程不同之处包括:
    设置安全模式OS的显示层为不可见,如 SafeOsFramelayer=invisible;
    使安全模式OS各应用与NativeService提供的各个服务的连接状 态为断开状态。
    由上,则完成了双模式OS的系统的创建过程。由上可以看出, 本发明方法仅启用了一个NativeService进程,相对于图1示出的现有 技术,大大减小了系统资源、如内存的占用量。
    另外需要说明的是,上述步骤360可以与步骤350同时执行。但 为了能够在安卓系统启动后尽快的进入用户的可用模式,故延迟执行 步骤360,以在执行步骤350时有足够的系统资源。
    需要说明的是,当启动完毕后,当前模式OS下的应用访问 NaitveService时,是通过内核里的Binder进程实现进程间通信,由于 Binder进程间通信机制是安卓系统原生的进程间通信机制,不再对此 进行赘述。
    如图4示出的双模式OS的系统切换方法的流程,该例子是从普 通模式OS切换到安全模式OS,下面进行详述。
    在介绍切换之前,首先对运行于普通模式OS下的安卓设备与切 换相关的内容进行说明,包括:
    1)应用桌面具有一多模式OS切换图标,该图标对应一切换应用, 该切换应用可与DomainEngine进程通讯;
    2)DomainEngine保存的交互模式为普通OS模式,即目前设备 控制权由DomainEngine交给普通模式OS;
    3)DomainEngine控制在基础服务的data数据域中(例如记录在 如//data目录下)记录交互模式为普通模式OS,且记录有普通模式 OS和安全模式OS时NativeService分别提供的各个服务的状态,例 如显示服务、声音服务、wifi服务、bt服务等设备资源的状态参数。 所述状态参数包括这些服务对应的资源是否被开启,被分配给哪个应 用等。
    参见图4,具体切换过程,包括以下步骤:
    步骤410:安卓设备目前运行于普通模式OS下,检测到其应用 桌面上的所述多模式OS切换图标被用户触碰时,多模式OS切换图 标对应的切换应用向DomainEngine发送一切换请求,请求 DomainEngine把交互模式设为安全模式OS。
    步骤420:DomainEngine收到所述请求,执行下述步骤,把设备 控制权交给安全模式OS:
    步骤4201:DomainEngine控制普通模式OS的输入服务 (InputService,包括触屏监控服务)停止读取输入设备节点,例如停 止对触屏服务的监控;
    步骤4202:DomainEngine控制NativeService内的显示管理进程 设置普通模式OS的显示层为不可见,如设置显示层 NormalOsFramelayer=invisible;
    步骤4203:DomainEngine控制NativeService保存当前为普通模 式OS所提供的各个本地服务的状态,通过文件方式保存至基础服务 下的data数据域内,如//data目录下,如当前视频、声音、摄像头的 状态参数;
    步骤4204:DomainEngine控制NativeService各个应用访问 NativeService的进程挂起,即断开普通模式OS与视频、声音和摄像 头的连接;
    步骤4205:DomainEngine根据预先保存的安全模式OS下的 NativeService状态,恢复安全模式OS下视频、声音、摄像头的播放 状态、wifi、bt(bloouetooth)的开启/关闭状态;例如,根据所保存 的信息,恢复相应的将某服务给某应用的分配等。
    步骤4206:DomainEngine控制显示NativeService的管理模块设 置安全模式OS的显示层为可见;如SafeOsFramelayer=visible;
    步骤4207:DomainEngine控制安全模式OS输入服务读取输入设 备节点;
    步骤4208:DomainEngine使安全模式OS的各个应用可访问 NativeService,保存交互模式为安全模式OS。
    此时,切换完成,安卓设备目前运行于安全模式OS下,当然, 其应用桌面也会具有一模式OS切换图标,以便于切换回普通模式OS 下,其切换过程不再赘述。
    另外,上述是以基于OS虚拟化的双模式OS的系统作为实施例 进行的描述,不难理解,当为三模式或更多模式OS时,其切换过应 用可以增加由用户选择向哪个模式切换的选项,具体创建过程、切换 过程与上相同,不再赘述。
    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明, 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。

    关 键  词:
    基于 OS 虚拟 模式 系统 创建 切换 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:基于OS虚拟化的多模式OS的系统和其创建、切换方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4027953.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1