用于便携式计算设备虚拟化的技术的制作方法

文档序号:9932632阅读:310来源:国知局
用于便携式计算设备虚拟化的技术的制作方法
【技术领域】
[0001]本文所描述的实施例一般涉及使用便携式计算设备的相对最少的资源来提供虚拟化以隔离应用例程的执行。
【背景技术】
[0002]便携式计算设备已经日益取代固定计算设备(例如所谓的“台式”计算机)以用于个人使用和商业相关使用二者。使用诸如手持或平板计算设备之类的便携式计算设备的方式因而已经日益呈现出就静止计算设备而言已经在一段时间内司空见惯的多个角色和多个用户性质。
[0003]作为结果,已经存在日益增加的驱动力来将通常在静止计算设备中使用的诸如虚拟化的特征带到便携式计算设备以维持分离的用户环境、强加家长控制、和/或当多个应用被同时执行时提供一定程度的安全性。用于提供在静止计算设备中采取的虚拟化的许多方案使得比在便携式设备中通常能够适应的处理器和/或存储资源的更大的利用成为必需。如本领域技术人员所熟知的,便携式设备的设计典型地表示处理和存储资源、较小的物理尺寸和重量、降低的功率消耗等的竞争性要求之间的折衷。因此,处理器和/或存储资源中的显著增加通常过于难以适应。
[0004]已经设想到用于虚拟化的其它方案,其并不使处理器和/或存储资源的利用必需是大的,使得它们可以更加适合于便携式计算设备,但是这些其它方案不可避免地要求对设备驱动器和其它硬件特定例程的密集修改以支持通常结合到便携式计算设备中的众多输入/输出特征。如本领域技术人员所熟知的,参与了与硬件组件的更加直接的交互的设备驱动器和其它例程要求比其它例程更高的编写和修改的技能。另外,设备驱动器和其它这样的以硬件为中心的例程的代码经常不能在便携式计算设备的不同型号之间被再使用或者“转运(port)”,因为对于甚至具有公共产品线的不同型号而言相当常见的是利用不同硬件组件实现输入/输出特征。
【附图说明】
[0005]图1图示了虚拟化系统的实施例。
[0006]图2图示了根据实施例的生成框架例程的实例的示例。
[0007]图3图示了根据实施例的对系统调用的使用进行控制的示例。
[0008]图4图示了根据实施例的对资源的共享进行控制的示例。
[0009 ]图5-6均图示了虚拟化系统的实施例的部分。
[0010]图7-10均图示了根据实施例的逻辑流。
[0011]图11图示了根据实施例的处理架构。
【具体实施方式】
[0012]各种实施例一般涉及使用相对最少的处理和存储资源来提供虚拟化以使得能够实现多个应用例程的同时隔离执行,其中一次使应用例程之一可见。更具体地,提供框架例程的多个实例,每一个实例限定隔离存储器空间和应用编程接口(API)以支持分离应用例程的隔离执行,并且每一个实例被配置成选择性地共享计算设备的一个或多个资源。框架例程的多个实例中的每一个实例提供抽象层,其用于来自内核例程的其相应应用例程和在比应用例程及其对应的框架例程实例更低层级的计算设备处执行的各种设备驱动器。
[0013]作为框架例程的每一个实例以与仅有的一个被执行的应用例程相一致的方式响应于来自其相关联的应用例程的API调用的结果,应用例程不需要被具体修改或被设计来支持这样的同时执行或者选择性地共享资源。大多数(如果不是全部的话)设备驱动器也不需要被这样具体地修改或设计。而是,经受这样的具体修改或设计中的绝大部分的是框架例程,并且可以要求内核例程的最少量的这样的具体修改或设计。对框架和内核例程的修改添加用于系统调用的支持,作为发生在框架例程和内核例程的实例之间的握手的部分,框架例程中的每一个实例由此递归地请求被告知关于其是可见还是不可见(例如“非可见”)。
[0014]更具体地,在框架例程的实例施行资源访问操作以代表其相关联的应用例程利用资源之前,框架例程对内核做出可见性检查调用从而询问关于框架例程的该实例是否当前是单个“可见”实例。在内核例程利用以肯定方式的指示作出响应的情况下,框架例程以代表其相关联的应用例程施行资源访问操作来继续进行。然而,在内核例程利用以否定方式的指示作出响应的情况下,框架例程可以限制代表其相关联的应用例程施行资源访问操作并且可以朝向其相关联的应用例程表现得就像施行该资源访问操作一样。
[0015]哪个框架例程的实例是可见的对比其它实例中的一个或多个是非可见的之间的区别可以与下述相关:将哪一个实例被选择为允许施行对内核例程的资源访问操作以与控制台输入/输出(I/O)设备(诸如显示器、键盘、定点设备、触摸屏等)进行交互。在一些实施例中,框架例程的实例中的仅一个可以被选择为视觉呈现在显示器上并且从输入设备(诸如键盘或触敏设备)接收输入。换言之,在多个实例间不共享控制台I/O设备(诸如显示器、键盘或定点设备)。一次仅使实例之一可见的这种限制可以作为结合到便携式计算设备中的显示器的典型小尺寸的结果而被视为是合期望的。
[0016]将被选择性共享的资源可以是执行框架例程和内核例程的实例的计算设备的硬件组件。更具体地,资源可以包括控制台输入/输出(I/o)设备(例如显示器、键盘、定点设备等)、与网络的接口、存储组件(例如可拆卸固态存储设备、光盘介质设备等)和音频子系统(例如一个或多个音频数字信号处理器、麦克风、扬声器等)中的一个或多个。由框架例程的实例所施行的资源访问操作可以包括对内核例程的系统调用以通过内核例程间接访问资源,这还可能使通过设备驱动器进行的访问成为必需。可替换地或此外,资源访问操作可以包括在I/O和/或存储器地址空间中对端口、缓冲器等的直接读取和/或写入访问,因而绕过内核例程和任何设备驱动器。
[0017]在一些实施例中,当内核例程利用框架例程的实例不是可见实例的指示响应于可见性检查调用时采取的行动可以针对框架例程的每一个实例是单独可配置的。作为示例,每一个实例可以配置成基于当其被实例化时被提供给框架例程的每一个实例的配置信息而施行或限制施行资源访问操作。更确切地,与特定资源(例如硬件组件)相关联的资源访问操作可以以使得能够实现控制的方式被单独地配置成施行或不施行,通过所述控制可以使资源在可能不可见的框架例程的多个实例间共享。
[0018]当内核例程利用框架例程的实例不是可见实例的指示响应于可见性检查调用时采取的其它行动也可以是单独可配置的。例如,对将导致资源访问操作以检索数据片段(例如来自输入设备的输入等)的从应用例程接收的API调用的响应可以可配置成为应用例程提供预选的值指示(例如零值或“无效(null)”值)。同样例如,对将导致资源访问操作以向资源提供数据片段(例如将视觉呈现在显示器上的数据)的从应用例程接收的API调用的响应可以可配置成将该数据存储在缓冲器中以在实例再次变成可见时提供给该资源。
[0019]相比于用于虚拟化的其它方案,框架例程的多个实例的实例化和用以询问关于可见或非可见状态的附加递归握手要求典型便携式设备的有限处理和存储资源的相当少的附加利用。另外,避开了具体地设计或修改应用例程和设备驱动器以提供虚拟化的需要。作为结果,使得用以允许便携式设备由单个用户用于个人和商业相关任务二者而同时将每一个维持在与另一个的高隔离程度中的虚拟化更加容易可实现。
[0020]同样使得更加容易可实现的是用以允许便携式设备由多个用户共享而同时维持每一个都利用便携式设备的使用之间的高隔离程度的虚拟化。事实上,在一些实施例中,当内核利用框架例程的实例可见(而不是非可见)的指示响应于可见性检查调用时采取的行动还可以可配置成使得可以防止可见实例共享非可见实例可能共享的资源。这可以被视为合期望的来以致使其不能够使用特定资源(例如联网)的方式配置实例以供特定用户(例如儿童)使用。
[0021]关于对本文所使用的符号和命名的一般引用,以下的详细描述的部分可以按照在计算机或计算机网络上执行的程序过程来呈现。这些过程描述和表示由本领域技术人员用于最有效地向其他本领域技术人员传达其工作的实质。过程在此并且一般地被理解为导致所期望的结果的自身相容的操作序列。这些操作是要求物理量的物理操纵的那些操作。通常,虽然不是必要的,这些量采取能够进行存储、输送、组合、比较以及以其它方式操纵的电气、磁或光学信号的形式。主要出于常见使用的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等证实有时是方便的。然而,应当指出的是,这些和类似术语中的全部将与适当的物理量相关联并且仅仅是应用于那些量的方便标记。
[0022]另外,这些操纵通常以术语来提及,诸如添加或比较,其通常与由人类操作者施行的头脑操作相关联。然而,在形成一个或多个实施例的部分的本文所描述的任何操作中,没有这样的人类操作者的能力是必要的,或者在大多数情况下是合期望的。相反,这些操作是机器操作。用于施行各种实施例的操作的有用机器包括如通过存储在其内的依照本文中的教导编写的计算机程序选择性激活或配置的通用数字计算机,和/或包括针对所要求的目的具体构造的装置。各种实施例还涉及用于施行这些操作的装置或系统。这些装置可以针对所要求的目的具体地构造或者可以包括通用计算机。用于各种这些机器的所要求的结构将根据给出的描述而是显而易见的。
[0023]现在参照附图,其中相同的参考标号自始至终用于指代相同的要素。在以下描述中,出于解释的目的,阐述众多具体细节以便提供对其的透彻理解。然而,可以显然的是,可以在没有这些具体细节的情况下实践新颖的实施例。在其它实例中,以框图形式示出公知的结构和设备以便促进其描述。意图在于在权利要求的范围内覆盖所有修改、等同方案和替换方案。
[0024]图1是结合了计算设备100和500中的一个或二者的虚拟化系统1000的实施例的框图。这些计算设备100和500中的每一个可以是各种类型的计算设备中的任一个,没有限制地包括:台式计算机系统、数据录入终端、膝上型计算机、上网本计算机、平板计算机、手持个人数据助理、智能电话、数字相机、结合到衣物中的身体穿戴的计算设备、集成到车辆(例如汽车、自行车、轮椅等)中的计算设备、服务器、服务器集群、服务器场等。
[0025]如所描绘的,这些计算设备100和500的子集可以经由网络999交换与支持多个应用例程在计算设备500中的分离虚拟环境中的同时执行相关联的信号。然而,这些计算设备中的一个或多个可以经由网络999与彼此和/或与另外其它的计算设备(未示出)交换与支持这样的虚拟化完全无关的其它数据。在各种实施例中,网络999可以是可能限于在单个建筑物或其它相对有限的区域内进行扩展的单个网络、可能扩展相当大的距离的连接网络的组合、和/或可以包括因特网。因此,网络999可以是基于可以通过其交换信号的各种通信技术(或其组合)中的任一个,没有限制地包括:采用电气和/或光学传导线缆的有线技术,以及采用红外、射频或其它形式的无线传输的无线技术。
[0026]在各种实施例中,计算设备500结合了处理器组件550、存储装置560、控件520、音频子系统522、显示器580、相机582和将计算设备500耦合到网络999的接口 590中的一个或多个。存储装置560存储内核例程510、设备驱动器512、框架例程540、框架配置数据534、应用例程570a-c和应用数据537a-c中的一个或多个。内核例程510、设备驱动器512、框架例程540和应用例程570a-c中的每一个结合了在处理器组件550上操作的指令序列,所述处理器组件550作为计算设备500的主处理器组件起作用以实现用以施行各种功能的逻辑。
[0027]至少内核例程510和框架例程540( —起或者由设备驱动器512支持)提供与处理器组件550协作的操作系统的核心,以便提供该操作系统的虚拟化形式以支持应用例程570a-c中的每一个的隔离执行和它们之间的选择性资源共享。设备驱动器512使得能够实现通过操作系统和控件520、音频子系统522、显示器580、相机582和接口 590中的一个或多个的应用例程570a_c的使用。应用例程570a_c中的每一个可以是各种类型的应用中的任一个,包括并且不限于文字处理器、电子表格编辑器、CAD/CAM软件、网站浏览器、音频/视觉记录和/或回放软件、相片编辑器等。应用数据537a_c中的每一个可以是分别由应用例程570a_c生成和/或使用的各种类型的数据中的任一个,包括并且不限于文本、文档、相片、音频、运动视频、图形图像、数据库等。
[0028]在执行内核例程510和框架例程540方面,处理器组件550限定了容器567a_c所位于的存储装置560的部分,在该容器567a-c内分别单独地部署应用例程570a-c中的每一个以用于供处理器组件550执行。在容器567a_c中的每一个内,应用例程570a_c中的对应的若干个能够分别访问其自己的应用数据537a-c,但是被阻止访问其它容器567a-c中的任一个内的例程或数据。在生成容器567a-c中,处理器组件550生成容器567a-c中的每一个所单独地基于的框架例程540的多个实例。框架例程540的每一个实例提供应用例程570a-c与至少内核例程510之间的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1