CN105723339A - 用于便携式计算设备虚拟化的技术 - Google Patents
用于便携式计算设备虚拟化的技术 Download PDFInfo
- Publication number
- CN105723339A CN105723339A CN201380080972.XA CN201380080972A CN105723339A CN 105723339 A CN105723339 A CN 105723339A CN 201380080972 A CN201380080972 A CN 201380080972A CN 105723339 A CN105723339 A CN 105723339A
- Authority
- CN
- China
- Prior art keywords
- routine
- nextport
- hardware component
- framework
- visible
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
各种实施例一般地涉及使用相对最少的处理和存储资源来提供虚拟化以使得能够实现多个应用例程的同时隔离执行,其中一次使应用例程中的之一可见。虚拟化操作系统的装置包括处理器组件;可见性检查器,用于由处理器组件执行以做出对内核例程的可见性调用以请求包括可见性检查器的框架例程的实例是否可见的指示;以及实例的资源访问代码,用于由处理器组件执行以基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问硬件组件。描述和要求保护其它实施例。
Description
技术领域
本文所描述的实施例一般涉及使用便携式计算设备的相对最少的资源来提供虚拟化以隔离应用例程的执行。
背景技术
便携式计算设备已经日益取代固定计算设备(例如所谓的“台式”计算机)以用于个人使用和商业相关使用二者。使用诸如手持或平板计算设备之类的便携式计算设备的方式因而已经日益呈现出就静止计算设备而言已经在一段时间内司空见惯的多个角色和多个用户性质。
作为结果,已经存在日益增加的驱动力来将通常在静止计算设备中使用的诸如虚拟化的特征带到便携式计算设备以维持分离的用户环境、强加家长控制、和/或当多个应用被同时执行时提供一定程度的安全性。用于提供在静止计算设备中采取的虚拟化的许多方案使得比在便携式设备中通常能够适应的处理器和/或存储资源的更大的利用成为必需。如本领域技术人员所熟知的,便携式设备的设计典型地表示处理和存储资源、较小的物理尺寸和重量、降低的功率消耗等的竞争性要求之间的折衷。因此,处理器和/或存储资源中的显著增加通常过于难以适应。
已经设想到用于虚拟化的其它方案,其并不使处理器和/或存储资源的利用必需是大的,使得它们可以更加适合于便携式计算设备,但是这些其它方案不可避免地要求对设备驱动器和其它硬件特定例程的密集修改以支持通常结合到便携式计算设备中的众多输入/输出特征。如本领域技术人员所熟知的,参与了与硬件组件的更加直接的交互的设备驱动器和其它例程要求比其它例程更高的编写和修改的技能。另外,设备驱动器和其它这样的以硬件为中心的例程的代码经常不能在便携式计算设备的不同型号之间被再使用或者“转运(port)”,因为对于甚至具有公共产品线的不同型号而言相当常见的是利用不同硬件组件实现输入/输出特征。
附图说明
图1图示了虚拟化系统的实施例。
图2图示了根据实施例的生成框架例程的实例的示例。
图3图示了根据实施例的对系统调用的使用进行控制的示例。
图4图示了根据实施例的对资源的共享进行控制的示例。
图5-6均图示了虚拟化系统的实施例的部分。
图7-10均图示了根据实施例的逻辑流。
图11图示了根据实施例的处理架构。
具体实施方式
各种实施例一般涉及使用相对最少的处理和存储资源来提供虚拟化以使得能够实现多个应用例程的同时隔离执行,其中一次使应用例程之一可见。更具体地,提供框架例程的多个实例,每一个实例限定隔离存储器空间和应用编程接口(API)以支持分离应用例程的隔离执行,并且每一个实例被配置成选择性地共享计算设备的一个或多个资源。框架例程的多个实例中的每一个实例提供抽象层,其用于来自内核例程的其相应应用例程和在比应用例程及其对应的框架例程实例更低层级的计算设备处执行的各种设备驱动器。
作为框架例程的每一个实例以与仅有的一个被执行的应用例程相一致的方式响应于来自其相关联的应用例程的API调用的结果,应用例程不需要被具体修改或被设计来支持这样的同时执行或者选择性地共享资源。大多数(如果不是全部的话)设备驱动器也不需要被这样具体地修改或设计。而是,经受这样的具体修改或设计中的绝大部分的是框架例程,并且可以要求内核例程的最少量的这样的具体修改或设计。对框架和内核例程的修改添加用于系统调用的支持,作为发生在框架例程和内核例程的实例之间的握手的部分,框架例程中的每一个实例由此递归地请求被告知关于其是可见还是不可见(例如“非可见”)。
更具体地,在框架例程的实例施行资源访问操作以代表其相关联的应用例程利用资源之前,框架例程对内核做出可见性检查调用从而询问关于框架例程的该实例是否当前是单个“可见”实例。在内核例程利用以肯定方式的指示作出响应的情况下,框架例程以代表其相关联的应用例程施行资源访问操作来继续进行。然而,在内核例程利用以否定方式的指示作出响应的情况下,框架例程可以限制代表其相关联的应用例程施行资源访问操作并且可以朝向其相关联的应用例程表现得就像施行该资源访问操作一样。
哪个框架例程的实例是可见的对比其它实例中的一个或多个是非可见的之间的区别可以与下述相关:将哪一个实例被选择为允许施行对内核例程的资源访问操作以与控制台输入/输出(I/O)设备(诸如显示器、键盘、定点设备、触摸屏等)进行交互。在一些实施例中,框架例程的实例中的仅一个可以被选择为视觉呈现在显示器上并且从输入设备(诸如键盘或触敏设备)接收输入。换言之,在多个实例间不共享控制台I/O设备(诸如显示器、键盘或定点设备)。一次仅使实例之一可见的这种限制可以作为结合到便携式计算设备中的显示器的典型小尺寸的结果而被视为是合期望的。
将被选择性共享的资源可以是执行框架例程和内核例程的实例的计算设备的硬件组件。更具体地,资源可以包括控制台输入/输出(I/O)设备(例如显示器、键盘、定点设备等)、与网络的接口、存储组件(例如可拆卸固态存储设备、光盘介质设备等)和音频子系统(例如一个或多个音频数字信号处理器、麦克风、扬声器等)中的一个或多个。由框架例程的实例所施行的资源访问操作可以包括对内核例程的系统调用以通过内核例程间接访问资源,这还可能使通过设备驱动器进行的访问成为必需。可替换地或此外,资源访问操作可以包括在I/O和/或存储器地址空间中对端口、缓冲器等的直接读取和/或写入访问,因而绕过内核例程和任何设备驱动器。
在一些实施例中,当内核例程利用框架例程的实例不是可见实例的指示响应于可见性检查调用时采取的行动可以针对框架例程的每一个实例是单独可配置的。作为示例,每一个实例可以配置成基于当其被实例化时被提供给框架例程的每一个实例的配置信息而施行或限制施行资源访问操作。更确切地,与特定资源(例如硬件组件)相关联的资源访问操作可以以使得能够实现控制的方式被单独地配置成施行或不施行,通过所述控制可以使资源在可能不可见的框架例程的多个实例间共享。
当内核例程利用框架例程的实例不是可见实例的指示响应于可见性检查调用时采取的其它行动也可以是单独可配置的。例如,对将导致资源访问操作以检索数据片段(例如来自输入设备的输入等)的从应用例程接收的API调用的响应可以可配置成为应用例程提供预选的值指示(例如零值或“无效(null)”值)。同样例如,对将导致资源访问操作以向资源提供数据片段(例如将视觉呈现在显示器上的数据)的从应用例程接收的API调用的响应可以可配置成将该数据存储在缓冲器中以在实例再次变成可见时提供给该资源。
相比于用于虚拟化的其它方案,框架例程的多个实例的实例化和用以询问关于可见或非可见状态的附加递归握手要求典型便携式设备的有限处理和存储资源的相当少的附加利用。另外,避开了具体地设计或修改应用例程和设备驱动器以提供虚拟化的需要。作为结果,使得用以允许便携式设备由单个用户用于个人和商业相关任务二者而同时将每一个维持在与另一个的高隔离程度中的虚拟化更加容易可实现。
同样使得更加容易可实现的是用以允许便携式设备由多个用户共享而同时维持每一个都利用便携式设备的使用之间的高隔离程度的虚拟化。事实上,在一些实施例中,当内核利用框架例程的实例可见(而不是非可见)的指示响应于可见性检查调用时采取的行动还可以可配置成使得可以防止可见实例共享非可见实例可能共享的资源。这可以被视为合期望的来以致使其不能够使用特定资源(例如联网)的方式配置实例以供特定用户(例如儿童)使用。
关于对本文所使用的符号和命名的一般引用,以下的详细描述的部分可以按照在计算机或计算机网络上执行的程序过程来呈现。这些过程描述和表示由本领域技术人员用于最有效地向其他本领域技术人员传达其工作的实质。过程在此并且一般地被理解为导致所期望的结果的自身相容的操作序列。这些操作是要求物理量的物理操纵的那些操作。通常,虽然不是必要的,这些量采取能够进行存储、输送、组合、比较以及以其它方式操纵的电气、磁或光学信号的形式。主要出于常见使用的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等证实有时是方便的。然而,应当指出的是,这些和类似术语中的全部将与适当的物理量相关联并且仅仅是应用于那些量的方便标记。
另外,这些操纵通常以术语来提及,诸如添加或比较,其通常与由人类操作者施行的头脑操作相关联。然而,在形成一个或多个实施例的部分的本文所描述的任何操作中,没有这样的人类操作者的能力是必要的,或者在大多数情况下是合期望的。相反,这些操作是机器操作。用于施行各种实施例的操作的有用机器包括如通过存储在其内的依照本文中的教导编写的计算机程序选择性激活或配置的通用数字计算机,和/或包括针对所要求的目的具体构造的装置。各种实施例还涉及用于施行这些操作的装置或系统。这些装置可以针对所要求的目的具体地构造或者可以包括通用计算机。用于各种这些机器的所要求的结构将根据给出的描述而是显而易见的。
现在参照附图,其中相同的参考标号自始至终用于指代相同的要素。在以下描述中,出于解释的目的,阐述众多具体细节以便提供对其的透彻理解。然而,可以显然的是,可以在没有这些具体细节的情况下实践新颖的实施例。在其它实例中,以框图形式示出公知的结构和设备以便促进其描述。意图在于在权利要求的范围内覆盖所有修改、等同方案和替换方案。
图1是结合了计算设备100和500中的一个或二者的虚拟化系统1000的实施例的框图。这些计算设备100和500中的每一个可以是各种类型的计算设备中的任一个,没有限制地包括:台式计算机系统、数据录入终端、膝上型计算机、上网本计算机、平板计算机、手持个人数据助理、智能电话、数字相机、结合到衣物中的身体穿戴的计算设备、集成到车辆(例如汽车、自行车、轮椅等)中的计算设备、服务器、服务器集群、服务器场等。
如所描绘的,这些计算设备100和500的子集可以经由网络999交换与支持多个应用例程在计算设备500中的分离虚拟环境中的同时执行相关联的信号。然而,这些计算设备中的一个或多个可以经由网络999与彼此和/或与另外其它的计算设备(未示出)交换与支持这样的虚拟化完全无关的其它数据。在各种实施例中,网络999可以是可能限于在单个建筑物或其它相对有限的区域内进行扩展的单个网络、可能扩展相当大的距离的连接网络的组合、和/或可以包括因特网。因此,网络999可以是基于可以通过其交换信号的各种通信技术(或其组合)中的任一个,没有限制地包括:采用电气和/或光学传导线缆的有线技术,以及采用红外、射频或其它形式的无线传输的无线技术。
在各种实施例中,计算设备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的主处理器组件起作用以实现用以施行各种功能的逻辑。
至少内核例程510和框架例程540(一起或者由设备驱动器512支持)提供与处理器组件550协作的操作系统的核心,以便提供该操作系统的虚拟化形式以支持应用例程570a-c中的每一个的隔离执行和它们之间的选择性资源共享。设备驱动器512使得能够实现通过操作系统和控件520、音频子系统522、显示器580、相机582和接口590中的一个或多个的应用例程570a-c的使用。应用例程570a-c中的每一个可以是各种类型的应用中的任一个,包括并且不限于文字处理器、电子表格编辑器、CAD/CAM软件、网站浏览器、音频/视觉记录和/或回放软件、相片编辑器等。应用数据537a-c中的每一个可以是分别由应用例程570a-c生成和/或使用的各种类型的数据中的任一个,包括并且不限于文本、文档、相片、音频、运动视频、图形图像、数据库等。
在执行内核例程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之间的抽象层。在生成框架例程540的实例中,处理器组件550可以将框架例程540的每一个实例配置成类似地或以不同的方式响应于在其不可见的时间处从应用例程570a-c的其相关联的若干个接收API调用。
图2描绘了生成框架例程540(具体地,框架例程540a-c)的多个示例实例的实施例。框架例程540a-c中的每一个限定容器567a-c中的对应一个,其中应用例程570a-c中的对应一个与其它隔离地来执行。图2还更加详细地描绘了应用例程570a、框架例程540a、内核例程510和各种资源间的交互示例,作为应用例程570a-c、框架例程540a-c中的对应若干个、内核例程510和各种资源中的全部之间的可能交互的示例。
如先前所讨论的,框架例程540a-c中的每一个提供应用例程570a-c中的对应若干个与至少内核例程510之间的抽象层。更确切地,框架例程540a-c中的每一个为应用例程570a-c中的对应一个提供由从应用例程570a-c中的每一个利用对应API调用可调用的多个API函数构成的API。由框架例程540a-c中的每一个提供的该API与内核例程510向框架例程540a-c中的每一个提供的系统接口分离和不同。该系统接口由从框架例程540a-c中的每一个利用对应系统调用可调用的多个系统函数构成。框架例程540a-c可以每一个还提供应用例程570a-c中的对应若干个与各种资源(诸如计算设备500的硬件组件)之间的抽象层。这样的硬件组件可以包括控件520、音频子系统522、显示器580、相机582和接口590中的一个或多个。更确切地,由API为应用例程570a-c提供的接口可以将应用例程570a-c与可以直接由框架例程540a-c对这样的硬件组件中的一个或多个做出的直接I/O和/或存储器读取和/或写入操作相分离。
如所描绘的,框架例程540a结合了由实现利用API调用由应用例程570a可调用的多个API函数的多个代码块构成的API例程547。为了讨论起见,图2更加具体地描绘了API例程547内的那些代码块中的仅一个代码块的示例,具体地是结合指令序列以实现API函数的API调用代码块545。在指令序列间的是用以检查框架例程540a当前是否可见的可见性检查器5454和用以确定如果框架例程540a当前不可见则采取什么行动的共享检查器5455。取决于处理器指令集和/或编程语言的选择,可见性检查器5454和共享检查器5455中的每一个可以被实现为API调用代码块545的指令序列中的一个或多个不同指令,或者实现为条件分支指令的一部分。对应于可见性检查器5454,内核例程510结合了可见性检查例程514,该可见性检查例程514结合了指令序列以提供指示调用可见性检查例程514的框架例程540的实例(例如框架例程540a)当前是否可见的响应。
在通过处理器组件550对应用例程570a的执行期间,应用例程570a对框架例程540a做出API调用,指定由API调用代码块545的指令序列实现的API函数,从而使该指令序列被处理器组件550执行。换言之,由处理器组件550进行的执行流从应用例程570a“跳”到API调用代码块545。API调用代码块545可以包括用以实现作为API调用代码块545的指令序列的执行的部分而将施行的一个或多个资源访问操作(未示出)的代码,以施行由应用例程570a调用的API函数。实际上,那些资源访问操作要代表应用例程570a来施行。如之前所讨论的,这样的资源访问操作可以均是对内核例程510的系统调用或者直接对硬件组件的读取或写入操作。
然而,在做出代表应用例程570a的一个或多个资源访问操作之前,可见性检查器5454做出对内核例程510的可见性检查例程514的可见性检查调用以请求框架例程540a当前是否可见的指示。在框架例程540的每一个实例的生成期间,具体地是框架例程540a-c中的每一个的生成期间,为每一个这样的实例提供唯一实例标识符(ID)。因此,如所描绘的,框架例程540a被提供有实例ID 5403a。内核例程510将框架例程540a-c中的哪一个是可见的框架例程540的一个实例的指示维护为可见实例ID 5103。
可见性检查例程514结合了至少检查可见实例ID 5103的指令序列以确定框架例程540a-c中的哪一个是可见的一个,并且从可见性检查性5454接收的可见性检查调用导致该指令序列的执行(例如执行流跳到可见性检查例程514)。在一些实施例中,可见性检查例程514可以将框架例程540a-c中的哪一个做出可见性检查调用5454的指示与框架例程540a-c中的哪一个被可见实例ID 5103指示为当前可见的一个的指示进行比较。在这样的实施例中,可见性检查例程514可以返回简单地指示框架例程540a-c中的调用中的一个是否是可见的一个的布尔或其他类型的值。在其它实施例中,可见性检查例程514可以简单地向框架例程540a-c中的调用中的一个中继框架例程540a-c中的无论哪一个被可见实例ID 5103指示为可见的一个的实例ID的指示。不论可见性检查例程514提供对可见性检查器5454中做出的查询的响应的确切方式如何,执行流返回到API调用代码块545的指令序列。
如果由API调用代码块545从可见性检查例程514接收的指示是关于框架例程540a当前可见,则允许施行代表应用例程570a施行的API调用代码块545的一个或多个资源访问操作。然而,如果由API调用代码块545从可见性检查例程514接收的指示是关于框架例程540a当前不可见,则可以允许或者可以不允许施行API调用代码块545的一个或多个资源访问操作。是否允许施行一个或多个资源访问操作可以由共享检查器5455确定已经提供给API例程547的响应于框架例程540a当前不可见而采取的行动或不采取的行动的什么指示的结果来确定。
在一些实施例中,响应于框架例程540a当前不可见的指示和响应于由应用例程570a调用而由API调用代码块545将采取什么行动可以是通过存储在框架配置数据534中的采取或不采取什么(一个或多个)行动的一个或多个指示可配置的。共享检查器5455可以直接从框架配置数据534或从框架配置数据534生成的由框架例程540a单独维护的数据来检索这样的指示。可以在框架例程540a-c中的每一个被生成时向框架例程540a-c中的每一个提供来自框架配置数据534的这样的指示。这样的指示可以指定由框架例程540a-c中的一个或多个中的API调用代码块545的所有实例采取或不采取的(一个或多个)相同行动,尽管这可能是由API调用代码块545的那些实例中的每一个施行的不同API函数的非常宽的范围。
在一些实施例中,API调用代码块545可以被配置成响应于框架例程540a当前不可见并且响应于通过简单地向应用例程570a返回执行流而不施行一个或多个资源访问操作来由应用例程570a调用。可替换地或此外,在其中API函数使得往回向应用例程570a提供数据成为必需的情况下,API调用代码块545可以被配置成向应用例程570a提供回“无效”值、零值或其它“空白”值作为响应。可替换地或此外,在API函数使得向资源提供数据成为必需的情况下,API调用代码块可以被配置成将该数据存储在缓冲器(未示出)中以使得能够实现其在当框架例程540a再一次是可见实例时的稍后时间处向该资源的提供。
然而,应当指出的是,如之前所讨论的,框架配置数据534可以此外包括API调用代码块545响应于框架例程540a可见(如与非可见相反)并且响应于由应用例程570a调用而可以采取或者可以不采取的(一个或多个)行动的指示。再次,这可以完成以致使框架例程540a不能够在可见的同时访问特定资源。
应当指出的是,API调用代码块545的指令序列可以被组织成部署朝向该指令序列的开始实现可见性检查器5454和共享检查器5455的无论什么指令以确保它们作为调用API调用代码块545的结果而相对早地被执行。这可以被视为合期望的以优化指令序列的执行以避免在由可见性检查器5454和共享检查器5455做出的检查最终导致不施行API调用代码块545的API函数的情形中的指令的不必要执行。例如,在一些实施例中,API调用代码块545的指令序列可以包括用以实现转换器以从一个格式到另一个格式地转换被提供给资源的数据的格式的指令。如本领域技术人员所熟知的,数据格式的这样的转换可以是处理和/或存储密集的,并且允许指令序列在施行可见性和要采取什么行动的检查之前施行这样的转换可能被视为是浪费的,因为结果可能是现在经转换的数据不被允许提供给其所意图的资源。
图3描绘了控制框架例程540(具体地,框架例程540a)的示例实例中的系统调用的使用的实施例。图3更加详细地描绘了应用例程570a、框架例程540a和内核例程510间的交互的图2的示例。如先前所讨论的,框架例程540a-c中的每一个为应用例程570a-c中的对应一个提供由从应用例程570a-c中的每一个利用对应API调用可调用的多个API函数构成的API。该API可以基于各种分类中的任何一种可划分成API函数的集合。一种这样的划分可以是分成与诸如可以包括但不限于控件520、音频子系统522、显示器580、相机582和接口590中的一个或多个的硬件组件中的具体若干个之类的具体资源相关联的API函数。
图3描绘了将由框架例程540a向应用例程570a提供的API函数划分成用于音频、图形输出、来自计算设备500的用户的输入、网络对接和除图形之外的视频输出的API函数的这样的划分的示例。作为实现该划分的部分,框架例程540a可以结合API例程547的多个专用实例,具体地是用于音频的API例程547a、用于图形的547g、用于输入的547i、用于联网的547n和用于视频的547v。在该示例中,API例程547a可以使用音频子系统522的麦克风和/或扬声器来支持音频输入和输出功能。API例程547g可以支持显示器580上的图形图像的生成和视觉呈现。API例程547i可以经由控件520支持用户输入的接收。API例程547n可以经由将计算设备500耦合到网络999的接口590支持联网功能性。API 547v可以使用相机582和显示器580来支持运动视频的捕获和/或回放。
如图3中更加清楚描绘的,API例程547的这些实例中的每一个可以结合API调用代码块545中的多个API调用代码块,其中的每一个由施行不同API函数的指令序列构成。然而,其是出于讨论的目的而比在图2中呈现地再更详细地描绘的API例程547n的API调用代码块545的单个API调用代码块。添加到图3的该更加详细的呈现,将应用例程570a具体地描绘为结合了用于向该具体描绘的API调用代码块545做出API调用的API调用器5754。另外添加到该更加详细的呈现,将内核例程510具体地描绘为结合了实现可以利用来自该具体描绘的API调用代码块545的资源访问代码5451的系统调用来调用的系统函数的系统调用代码块515。
在由处理器组件550对应用例程570a的执行期间,应用例程570a的API调用器5754向框架例程540a做出指定由API调用代码块545的指令序列实现的API函数的API调用,从而导致指令序列的执行。API调用代码块545包括资源访问代码5451以施行作为施行由应用例程570a在其API调用中调用的API调用代码块545的API函数的部分的资源访问操作。
然而,在施行该资源访问操作之前,可见性检查器向可见性检查例程514做出可见性检查调用以请求框架例程540a当前是否可见的指示。再次,可见性检查例程514可以在确定框架例程540(例如框架例程540a-c中的一个)的什么实例是可见的一个实例时参照可见实例ID
5103,并且往回向API调用代码块545提供回答查询的响应。
如果由API调用代码块545的可见性检查器5454从可见性检查例程514接收的指示是框架例程540a当前可见的效果,则允许施行资源访问操作。如所描绘的,在该示例中,要访问的资源是接口590。如已经讨论的,资源访问操作可以是对内核例程510的系统调用或者可以是直接I/O或存储器读取或写入操作。因此,如所描绘的,资源访问代码5451可以向内核例程510做出指定由系统调用代码块515施行的系统函数的系统调用。进而,系统调用代码块515可以通过设备驱动器(具体地,设备驱动器512n)访问接口590。可替换地,如同样描绘的,资源访问代码5451可以通过对在I/O或存储器地址空间中可寻址到处理器组件550的接口部分的读取或写入操作直接访问接口590。不管在该资源访问操作中访问接口590以操作它来发送或接收命令或数据的确切方式(如所恰当的)如何,无论什么联网功能都被初始指定为由其对框架例程540a做出的API调用中的API调用器5754来施行。作为示例,接口590可以被操作成经由网络999检索计算设备100的数据130的至少一部分(暂时参照回图1)。
然而,如果由API调用代码块545的可见性检查器5454从可见性检查例程514接收的指示是框架例程540a当前不可见的效果,则可以允许或可以不允许做出代表应用例程570a的访问接口590的前述资源访问调用。再次,采取或不采取什么行动可以经由框架配置数据534可配置,并且API调用代码块545可以通过由共享检查器5455对该配置的指示的检索来确定将采取或不采取什么行动。再次,API调用代码块545可以简单地向应用例程540a返回执行流。可替换地或此外,API调用代码块545可以取决于由API调用器5754做出的API调用中所指定的API函数的性质和/或取决于API调用代码块545被配置成采取或不采取什么行动而往回向应用例程540a提供“无效”值或其它值和/或将提供给资源(在该情况下,接口590)的缓冲数据。
由API例程547a、547g、547i、547n或547v中的任一个的API调用代码块545中的任一个响应于框架例程540a当前不可见的指示(以及响应于在API调用中被调用)而采取或不采取什么行动可以通过框架配置数据534中的指示和/或通过另一机制是单独地可配置的。这样的指示可以被提供给API调用代码块545中的单独的若干个和/或可以被提供给API调用代码块545的集合,诸如单独地构成API例程547a、547g、547i、547n和547v中的每一个的集合。通过针对API例程547的这些实例中的每一个单独地指定采取或不采取的行动,可以对计算设备500的什么资源(例如什么硬件组件)由可见的框架例程540a-c之一与非可见的框架例程540a-c中的若干个中的一个或多个共享或不共享来施加控制。
图4描绘了对在各种时间处不是可见框架例程的框架例程540a-c中的每一个的响应的配置的这样的使用以控制资源的共享的示例。至少在图4中描绘的一个时刻,框架例程540b是可见的并且框架例程540a和540c是非可见的。
正如在图3的示例中那样,图4中描绘的框架例程540a-c中的每一个结合了相同的API例程547a、547g、547i、547n和547v。在该示例中,框架例程540a-c中的每一个已经被提供有下述指示:API例程547a、547g、547i和547v的API调用代码块545中都没有在它们被结合到其中的框架例程540a-c中的一个为非可见时被允许施行资源访问操作。然而,框架例程540a-c还已经被提供有下述指示:API例程547n的API调用代码块545要继续被允许施行资源访问操作而不管它们被结合到其中的框架例程540a-c中的一个是可见还是非可见。
作为该配置的结果,框架例程540a和540c当前为非可见的事实(如所描绘的)导致其API例程547a、547g、547i和547v的API调用代码块545中都没有被允许施行资源访问操作以分别施行从应用例程570a和570c接收的API调用中所调用的API函数。另外,尽管框架例程540a和540c当前为非可见,API例程547n中的每一个中的API例程547n的API调用代码块均继续被允许施行资源访问操作。同样作为该配置的结果,框架例程540b当前为可见的事实(同样如所描绘的)导致所有API例程547a、547g、547i、547n和547v的所有API调用代码块545被允许施行资源访问操作以施行从应用例程570b接收的API调用中所调用的API函数。
这导致经由接口590与联网相关联的资源访问操作继续由全部三个框架例程540a-c施行,而不管哪一个当前可见。实际上,经由接口590的联网功能实际上在框架例程540的这些实例中的全部三个间共享,而不管它们的状态是可见还是非可见。然而,这还导致与音频、图形、输入和视频相关联的资源访问操作仅由当前可见的框架例程540a-c中的一个(例如框架例程540b,如所描绘的)施行。实际上,经由音频子系统522的音频功能、经由显示器580的图形和视频功能、经由控件520的输入功能和经由相机582的视频功能不被共享,但是被允许仅由当前可见的框架例程540a-c中的一个(再次,框架例程540b,如所描绘的)所采用。
在各种实施例中,处理器组件550中的每一个可以包括多种多样的商业上可得到的处理器中的任一个。另外,该处理器组件可以包括多个处理器、多线程处理器、多核处理器(无论多个核共存在相同管芯上还是分离的管芯上),和/或多个物理分离的处理器以某种方式通过其链接的某种其它种类的多处理器架构。
在各种实施例中,存储装置560可以基于各种各样的信息存储技术中的任一种,这些信息存储技术可能包括要求不间断提供电力的易失性技术,并且可能包括需要使用可能可移除或可能不可移除的机器可读存储介质的技术。因此,该存储装置可以包括各种各样类型(或类型组合)的存储设备中的任一种,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器(例如铁电聚合物存储器)、奥氏存储器(ovonic
memory)、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光学卡、一个或多个单独铁磁性盘驱动器、或组织成一个或多个阵列的多个存储设备(例如组织成独立磁盘阵列的冗余阵列或RAID阵列的多个铁磁盘驱动器)。应当指出的是,虽然该存储装置被描绘为单个块,但这些存储装置中的一个或多个可以包括可以基于不同的存储技术的多个存储设备。因此,例如,所描绘的该存储装置可以表示以下项的组合:光学驱动器或闪速存储器卡读取器,可以通过该光学驱动器或闪速存储器卡读取器在某种形式的机器可读存储介质上存储并传递程序和/或数据;铁磁盘驱动器,其将程序和/或数据本地存储相对延长的时段;以及一个或多个易失性固态存储器设备(例如SRAM或DRAM),其使得能够实现对程序和/或数据的相对快速访问。还应当指出的是,该存储装置可以由基于相同存储技术的多个存储组件构成,但是可以作为专用的结果而被单独地维护(例如,一些DRAM设备被用作主存储装置,而其它DRAM设备被用作图形控制器的分立帧缓冲器)。
在各种实施例中,如已描述的,接口590可以采用使得计算设备能够耦合至其它设备的各种信令技术中的任何技术。这些接口中的每一个可以包括提供至少一些必须功能以能够实现这样的耦合的电路。然而,该接口还可以利用由处理器组件中的对应若干个组件执行的指令序列至少部分地实现(例如,以实现协议栈或其他特征)。在采用电和/或光学传导电缆的情况下,该接口可以采用符合各种行业标准的任一种的信令和/或协议,各种行业标准包括但不限于,RS-232C、RS-422、USB、以太网(IEEE-802.3)或IEEE-1394。在需要使用无线信号传输的情况下,该接口可以采用符合各种行业标准的中任一种的信令和/或协议,各种行业标准包括但不限于,IEEE 802.1la、802.1lb、802.11g、802.16、802.20(通常被称为“移动宽带无线接入”);蓝牙;ZigBee;或蜂窝无线电话服务,诸如具有通用分组无线电服务的GSM(GSM/GPRS)、CDMA/lxRTT、增强型数据率全球演进(EDGE)、仅数据演进/数据优化(EV-DO)、数据和语音演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行链路分组接入(HSUPA)、4G LTE等等。
图5和6均更加详细地图示了图1的虚拟化系统1000的实施例的部分的框图。更具体地,图5描绘了其中处理器组件550在执行内核例程510时生成框架例程540的多个实例(例如框架例程540a-c,如所描绘的)的计算设备500的操作环境的各方面。图6描绘了其中处理器组件550在执行框架例程540的实例(例如框架例程540a、540b或540c中的一个,如所描绘的)时配置实现一个或多个API例程(例如API例程547a、547g、547i、547n和/或547v,如所描绘的)中的API函数的代码块的计算设备500的操作环境的各方面。
如本领域技术人员可认识到的,内核例程510和框架例程540所生成的实例,包括组成其每一个的组件,被选择成在被选择实现处理器组件550的无论什么类型的一个或多个处理器上操作。在各种实施例中,构成每一个的指令序列可以包括以下中的一个或多个:操作系统的至少一部分、设备驱动器和/或应用级例程(例如在磁盘介质上提供的所谓的“软件套件”、从远程服务器获取的“小应用程序”等)。在包括操作系统的至少一部分的情况下,操作系统可以是对于处理器组件550而言适当的各种可用操作系统中的任一个。在包括一个或多个设备驱动器的情况下,那些设备驱动器可以提供针对计算设备500的各种其它组件中的任一个(无论是硬件还是软件组件)的支持。
更具体地转向图5,内核例程510可以包括由处理器组件550可执行以生成框架例程540的多个实例(例如框架例程540a-c,如所描绘的)的实例化组件5100。如先前所讨论的,框架例程540的实例的生成是限定其中可以按将应用例程与彼此隔离的方式分离地执行的应用例程(例如应用例程570a-c)的容器的部分。同样如先前所讨论的,生成来与容器中的每一个对应的框架例程540的实例提供了应用例程中的其相关联的一个与内核例程和各种资源(例如硬件组件)二者之间的抽象层。由应用例程中的其相关联的一个向框架例程的实例中的每一个做出API调用,并且进而,向内核例程510做出系统调用以间接访问资源,或者施行读取或写入操作以直接访问资源。
内核例程510可以包括配置组件5104,其由处理器组件550可执行以检索由实现框架例程540a-c中的一个或多个中的API函数(例如API调用代码块545的实例)的代码块在它们当前非可见的时间期间所采取的行动的指示。如已经解释的,这样的指示可以向框架例程540的每一个实例中的这样的代码块中的全部应用对于非可见的相同的响应,或者可以向这样的代码块的不同集合(例如属于与不同特征或硬件组件相关联的不同API例程的代码块的集合)应用不同的响应,或者可以向代码块中的单独若干个应用不同的响应。另外,框架例程540的多个实例化中的不同若干个可以被不同地配置使得对应的这样的代码块响应于非可见而在不同实例中采取不同行动。
内核例程510可以包括选择组件5102,其由处理器组件550可执行以改变框架例程540的多个实例中的哪一个(例如框架例程540a-c中的哪一个)是当前可见的一个。如所描绘的,选择组件5102可以从已经操作成传达改变实例中的哪一个是当前可见的一个的命令的控件520中的控件520接收指示。在其中控件520包括小键盘或键盘的实施例中,提供这样的指示的操作可以包括按下特定键或键的组合。在其中控件520是触摸屏(例如其中显示器580是显示元件的触摸屏)的触摸元件的实施例中,提供这样的指示的操作可以是触摸这样的触摸元件的触敏表面的具体图案(例如指尖按压特定位置的组合或利用一个或多个指尖的特定“划扫”移动)。本领域技术人员将想到控件520的其它可能形式的操作的其它形式。
更具体地转向图6,框架例程540的实例(例如框架例程540a-c中的一个)可以包括配置组件5404,其由处理器组件550可执行以检索由实现框架例程540a-c中的一个或多个中的API函数(例如API调用代码块545的实例)的代码块在它们当前非可见的时间期间所采取的行动的指示。再次,这样的配置可以是按照代码块、按照这样的代码块的集合、或者利用应用于所有这样的代码块的单个配置。
框架例程540的实例(例如框架例程540a-c中的一个)可以包括选择组件5402,其由处理器组件550可执行以从控件520向内核例程510中继指示以改变框架例程540的多个实例中的哪一个(例如框架例程540a-c中的哪一个)是当前可见的一个。如所描绘的,选择组件5402可以从多个控件520中的控件520接收指示,该控件520已经操作成传达改变实例中的哪一个是当前可见的一个的命令。再次,传达这样的命令的控件520的操作可以采取各种形式中的任一个。
图7图示了逻辑流2100的一个实施例。逻辑流2100可以代表由本文所描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流2100可以说明由处理器组件550在至少执行内核例程510和/或框架例程540的实例时施行和/或由计算设备500的(一个或多个)其它组件施行的操作。
在2110处,虚拟化系统的计算设备的处理器组件(例如虚拟化系统1000的计算设备500的处理器组件550)生成框架例程的实例(例如框架例程540的实例,诸如框架例程540a-c中的一个)。如先前所讨论的,框架例程540的实例的生成是限定其中应用例程(例如应用例程570a-c中的一个或多个)可以按将它们彼此隔离的方式分离执行的容器(例如容器567a-c中的一个或多个)的部分。
在2120处,向所生成的框架例程的实例分配唯一实例ID(例如实例ID 5403a)。如已经讨论的,框架例程540的多个实例的实例ID可以在确定给定实例是否是可见实例时和/或在标识哪个实例是可见实例时采用。
在2130处,针对实例是可见和/或不可见实例的时间来配置框架例程的实例对API调用的响应。如已经讨论的,在一些实施例中,响应于经由API调用被调用以及响应于接收到当前非可见的指示而采取或不采取的行动可以是可配置的。另外,这样的配置可以包括响应于经由API调用被调用以及响应于接收到当前可见的指示(如与非可见相对)而采取或不采取的行动。如同样已经讨论的,这可以作为以下的部分而完成:将计算设备的哪些资源配置为在可见的一个实例和非可见的其它实例间共享,以及配置计算设备的哪些资源不被共享以使得仅可见的一个实例使用那些资源。
图8图示了逻辑流2200的一个实施例。逻辑流2200可以代表由本文所描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流2200可以说明由处理器组件550在至少执行框架例程540的实例时施行和/或由计算设备500的(一个或多个)其它组件施行的操作。
在2210处,虚拟化系统的计算设备的处理器组件(例如虚拟化系统1000的计算设备500的处理器组件550)(在其执行框架例程的实例时)从应用例程(例如应用例程570a-c中的一个)接收API调用。如先前所讨论的,框架例程540的每一个实例(例如框架例程540a-c中的一个)提供应用例程与内核例程(例如内核例程510)之间的抽象层。
在2220处,构成指令序列以施行所接收的API调用中所调用的API函数的代码块向内核例程做出可见性检查调用以确定框架例程的实例是否是当前可见的实例。如已经讨论的,内核例程可以利用布尔样式的响应来响应于框架的实例可见或不可见的效果,或者内核例程可以利用可见的实例的标识符(例如实例ID)作出响应。
在2230处,做出关于是否允许代码块在实例当前处于可见或不可见的无论哪一种状态中施行资源访问操作的检查。如果如此允许代码块,则在2232处代码块施行资源访问操作。如果不如此允许代码块,则在2240处代码块限制施行资源访问操作。
图9图示了逻辑流2300的一个实施例。逻辑流2300可以代表由本文所描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流2300可以说明由处理器组件550在至少执行框架例程540的实例时施行和/或由计算设备500的(一个或多个)其它组件施行的操作。
在2310处,虚拟化系统的计算设备的处理器组件(例如虚拟化系统1000的计算设备500的处理器组件550)(在其执行框架例程的实例时)从应用例程(例如应用例程570a-c中的一个)接收API调用。再次,框架例程540的每一个实例(例如框架例程540a-c中的一个)提供应用例程与内核例程(例如内核例程510)之间的抽象层。
在2320处,由施行所接收的API调用中所调用的API函数的指令序列构成的代码块做出对内核例程的可见性检查调用以确定框架例程的实例是否是当前可见的实例。再次,内核例程可以利用布尔样式的响应来响应于框架例程的实例可见或不可见的效果,或者内核例程可以利用可见的实例的标识符(例如实例ID)来作出响应。
如果在2330处框架例程的实例当前可见,则在2332处,允许代码块代表应用例程施行资源访问操作,作为施行从其接收的API调用中所调用的API函数的部分。然而,如果在2330处实例当前不可见,做出关于实例是否已经配置成允许代码块在实例不可见(例如非可见)的时间处仍旧施行该资源访问操作的检查。
如果在2340处框架例程的实例被配置成允许在实例非可见的时间处施行该资源访问操作,则在2332处施行该资源访问操作。然而,如果在2340处框架例程被配置成不允许在实例非可见的时间处施行该资源访问操作,则在2342处代码块限制施行该资源访问操作。
图10图示了逻辑流2400的一个实施例。逻辑流2400可以代表由本文所描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流2400可以说明由处理器组件550在至少执行框架例程540的实例时施行和/或由计算设备500的(一个或多个)其它组件施行的操作。
在2410处,虚拟化系统的计算设备的处理器组件(例如虚拟化系统1000的计算设备500的处理器组件550)(在其执行内核例程时)从框架例程的实例(例如框架例程540a-c中的一个)接收可见性检查调用。如先前所讨论的,可见性检查调用可以包括做出它的框架例程的实例的标识符(例如实例ID)。
在2420处,将在可见性检查调用中接收的实例ID与作为当前可见的实例的框架例程的多个实例中的无论哪一个的实例ID的指示进行比较。然而,同样如已经讨论的,当前可见的实例的实例ID的指示可以被简单地检索以用于提供给做出可见性检查调用的实例。
在2430处,向做出可见性检查调用的框架例程的实例提供关于其是否为当前可见的实例的指示。如已经讨论的,这可以是针对实例不是可见实例的时间配置的、框架例程的实例对API调用的响应。如已经讨论的,该响应可以是对做出可见性检查调用的框架例程的实例可见或不可见的效果的布尔样式的响应。然而,同样如已经讨论的,该响应可以是当前可见的无论什么实例的实例ID。
图11图示了适合于实现如先前所描述的各种实施例的处理架构3000的实施例。更具体地,处理架构3000(或其变体)可以被实现为计算设备100或500中的一个或多个的部分。应当指出的是,处理架构3000的组件被给定附图标记,其中最后的两位数字对应于早先描绘的并且被描述为这些计算设备的部分的至少一些组件的附图标记的最后两位数字。这样做有助于相互关联每一个组件。
处理架构3000可以包括通常在数字处理中采用的各种元件,包括但不限于,一个或多个处理器、多核处理器、协同处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件,电源等。如在本申请中使用的,术语“系统”和“组件”旨在指的是其中实施数字处理的计算设备的实体,该实体为硬件、硬件和软件的组合、软件、或执行中的软件,通过该所描绘的示例性处理架构提供该实体的示例。例如,组件可以是,但不限于,在处理器组件上运行的进程、处理器组件本身、可以采用光学和/磁存储介质的存储设备(例如,硬盘驱动器、阵列中的多个存储驱动器等)、软件对象、可执行的指令序列、执行的线程、程序、和/或整个计算设备(例如,整个计算机)。作为说明,在服务器上运行的应用和该服务器二者都可以是组件。一个或多个组件可以驻留在执行的过程和/或线程内,并且组件可以位于一个计算设备上和/或分布在两个或更多个计算设备之间。此外,组件可以通过各种类型的通信介质彼此通信地耦合以协调操作。该协调可以涉及信息的单向或双向交换。例如,组件可以按照通过通信介质进行通信的信号的形式来传递信息。该信息可以实现为分派给一个或多个信号线的信号。消息(包括命令、状态、地址或数据消息)可以是这样的信号中的一个,或者可以是多个这样的信号,并且可以通过各种连接和/接口中的任一种串行地或基本并行地传输。
如所描绘的,在实现处理架构3000方面,计算设备可以至少包括处理器组件950、存储装置960、与一个或多个其他设备的接口990以及耦合部959。如将解释的,取决于实现处理架构3000的计算设备的各个方面,包括其预期使用和/或使用的条件,这样的计算设备可进一步包括附加的组件,诸如但不限于,显示器接口985、相机982和/或音频子系统922。无论什么计算设备都可以实现处理架构3000,利用电路实现的各种所描绘的组件中的一个可以利用分立组件来实现和/或作为单个或相对小数目的半导体设备(例如“片上系统”或SOC)内的电路块来实现。
耦合部959可包括一个或多个总线、点到点互连、收发器、缓冲器、交叉点开关、和/或至少将处理器组件950通信地耦合至存储装置960的其它导体和/或逻辑。耦合部959可进一步将处理器组件950耦合至接口990、音频子系统970和显示器接口985中的一个或多个(取决于还存在这些和/或其他组件中的哪些)。关于通过耦合部959如此耦合的处理器组件950,处理器组件950能够执行以上详细描述用于上述计算设备中的无论哪一个(多个)实现处理架构3000的任务中的各种任务。耦合部959可利用通过其来光学和/或电学地传递信号的各种技术中任一种或技术的组合来实现。此外,耦合部959的至少一部分可采用符合各种行业标准中任一种的定时和/或协议,各种行业标准包括但不限于,加速图形端口(AGP)、卡总线(CardBus)、扩展行业标准体系结构(E-ISA)、微通道体系结构(MCA)、新总线(NuBus)、外围组件互连(扩展)(PC1-X)、PCI快速标准(PC1-E)、个人计算机存储卡国际协会(PCMCIA)总线,超传输™(HyperTransport™),快速通道(QuickPath)等等。
如先前所讨论的,处理器组件950(对应于处理器组件550)可包括采用各种技术中的任一种并且以多种方式中的任一种物理结合的一个或多个核实现的各种各样的商业上可得的处理器中的任一种。
如先前所讨论的,存储装置960(对应于存储装置560)可基于各种各样的技术中的任一种或技术的组合由一个或多个不同的存储设备构成。更具体地,如所描绘的,存储装置960可包括以下中的一个或多个:易失性存储装置961(例如,基于RAM技术的一个或多个形式的固态存储器)、非易失性存储装置962(例如,不需要一直提供电力来保存其内容的固态存储装置、铁磁存储装置或其他存储装置)、和可移除介质存储装置963(例如,可移除磁盘或固态存储卡,信息可通过其在计算设备之间传递)。将存储装置960描绘为可能包括多个分立类型的存储装置普遍认可为在计算设备中使用超过一种类型的存储设备,其中一种类型提供相对快速的读取和写入能力,从而通过处理器组件950使得能够实现更快的数据操纵(但可能使用一直需要电力的“易失性”技术),而另一种类型提供相对高密度的非易失性存储(但很可能提供相对慢的读取和写入能力)。
给定了采用不同的技术的不同存储设备的通常不同的特性,这样的不同存储设备也普遍通过不同的存储控制器而耦合至计算设备的其他部分,该不同的存储控制器通过不同的接口而耦合至其不同的存储设备。作为示例,在易失性存储装置961存在并且基于RAM技术的情况下,易失性存储装置961可通过存储控制器965a通信地耦合至耦合部959,该存储控制器965向可能采用行和列寻址的易失性存储装置961提供适当的接口,并且其中存储控制器965a可执行刷新和/或其他维护任务以帮助保存存储在易失性存储装置961中的信息。作为另一示例,在非易失性存储装置962存在并且包括一个或多个铁磁和/或固态盘驱动器的情况下,非易失性存储装置962可通过存储控制器965b通信地耦合至耦合部959,该存储控制器965b向可能采用信息块寻址和/或柱面和扇区寻址的非易失性存储装置962提供适当的接口。作为又一示例,在可移除介质存储装置963存在并且包括采用机器可读存储介质969的一个或多个段的一个或多个光学和固态盘驱动器的情况下,可移除介质存储装置963可通过存储控制器965c通信地耦合至耦合部959,该存储控制器965c向可能采用信息块寻址的可移除介质存储装置963提供适当的接口,并且其中存储控制器965c可以按特定于延长机器可读存储介质969的寿命的方式来协调读取、擦除、和写入操作。
易失性存储装置961和非易失性存储装置962中的一个或另一个可包括以机器可读存储介质的形式制造制品,可根据每个制品所基于的技术在该制品上存储例程,该例程包括通过处理器组件950可执行来实现各个实施例的指令序列。作为示例,在非易失性存储装置962包括基于铁磁的盘驱动器(例如,所谓的“硬盘”)的情况下,每个这种盘驱动器通常采用一个或多个旋转盘片,在该一个或多个盘片上以各种图案沉积并且磁性地取向磁性响应颗粒的涂层以便以类似于存储介质(诸如,软盘)的方式存储信息(诸如指令序列)。作为另一示例,非易失性存储装置962可由固态存储设备的组构成以便以类似于紧凑型闪存卡的方式存储信息(诸如指令序列)。再者,在计算设备中在不同时期采用不同类型的存储设备来存储可执行例程和/或数据是普遍的。因此,包括将被处理器组件950执行的指令序列以实现各种实施例的例程可最初被存储在机器可读存储介质969中,并且可随后将可移除介质存储装置963用于将该例程复制到非易失性存储装置962以用于长期存储而不需要继续存在机器可读存储介质969和/或易失性存储装置961,从而在例程被执行时,通过处理器组件950实现更快的访问。
如先前所讨论的,接口990(对应于接口590)可以采用与可用于将计算设备通信地耦合至一个或多个其他设备的各种通信技术中的任一种相对应的各种信令技术中的任一种。再者,各种形式的有线或无线信令中的一种或两种可用于使处理器组件950能够通过网络(例如,网络999)或互连的网络组与输入/输出设备(例如,所描述的示例键盘920或打印机925)和/或其他计算设备交互。在认识到多种类型的信令和/或协议的常常大大不同的特征必须常常由任一计算设备支持之后,接口990被描述为包括多个不同的接口控制器995a、995b和995c。接口控制器995可采用各种类型的有线数字串行接口或射频无线接口中的任一种来从用户输入设备(诸如所描述的键盘920)接收串行传输的消息。接口控制器995b可采用各种基于电缆布线的或无线信令、定时、和/或协议以通过所描述的网络999(也许由一个或多个链路组成网络、更小的网络、或也许因特网)访问其他计算设备。接口995c可采用各种导电电缆布线中的任一种,从而能够使用串行或并行信号传输来将数据传递至所描述的打印机925。可通过接口990的一个或多个接口控制器通信耦合的设备的其他示例包括,但不限于,麦克风、遥控器、手写笔、读卡器、指纹读取器、虚拟现实交互手套、图形输入平板、操纵杆、其他键盘、视网膜扫描仪、触摸屏的触摸输入组件、轨迹球、各种传感器、用于监测人的运动以经由姿势和/或脸部表情接受由这些人用信号传递的命令和/或数据的相机或相机阵列、激光打印机、喷墨打印机、机械机器人,研磨机等。
在计算设备通信地耦合至(或者,实际上结合)显示器(例如,所描绘的示例显示器980,对应于显示器580)的情况下,实现处理架构3000的这样的计算设备还可包括显示器接口985。虽然更通用类型的接口可被用于通信地耦合至显示器,但在显示器上可视地显示各种形式的内容通常需要的一些专用的附加处理,以及所使用的基于电缆布线的接口的一些专用性质,经常使提供独特显示界面是期望的。可通过与显示器980通信耦合的显示接口985所采用的有线和/或无线信令技术可以利用符合各种行业标准中的任一种的信令和/或协议,各种行业标准包括但不限于,各种视频接口中的任一种、数字视频接口(DVI)、显示端口(DisplayPort)等。
更一般地,本文中描述和描绘的计算设备的各种元件可包括各种硬件元件、软件元件或二者的组合。硬件元件的示例可包括设备、逻辑设备、组件、处理器、微处理器、电路、处理器组件、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件元件的示例可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或它们的任意组合。然而,确定实施例是否利用硬件元件和/或软件元件来实现可根据任意数量的因素而不同,这些因素比如是所需计算速率、功率电平、热容限、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及如给定实现方式所期望的其他设计或性能约束。
可以使用表述“一个实施例”和“一实施例”及其派生词来对一些实施例进行描述。这些术语意指结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。短语“在一个实施例中”在说明书中的各处的出现不一定全部指相同实施例。此外,可以使用表述“耦合”和“连接”及其派生词对一些实施例进行描述。这些术语不一定意图作为彼此的同义词。例如,可以使用术语“连接”和/或“耦合”对一些实施例进行描述,以表明两个或更多个元件彼此直接地物理接触或电接触。然而,术语“耦合”也可以意指两个或更多个元件彼此并非直接接触,但是仍然彼此协作或交互。此外,来自不同实施例的各方面或元素可被组合。
要强调的是,本公开的摘要被提供以允许读者快速地确定本技术公开的本质。所呈递的理解在于:该摘要将不被用于解释或限制权利要求的范围或含义。此外,在上面的详细描述中,可以看出为了使本公开变得流畅,各个特征在单个实施例中被编组到一起。本公开的此方法不应被解释为反映了要求保护的实施例相比各个权利要求中明确陈述的特征而言需要更多特征的意图。而是,如所附权利要求反映出来的那样,本发明的主题在于少于所公开的单个实施例的所有特征。因此,所附权利要求在此被结合到详细描述中,其中每个权利要求独立作为单独实施例。在所附权利要求中,术语“包括”和“其中”分别被用作相应术语“包括”和“其中”的平文英语等同方式。此外,术语“第一”、“第二”、“第三”等等只用作标记,并不旨在对它们的对象施加数值要求。
已经在上面所描述的内容包括所公开的体系结构的示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域的普通技术人员可以认识到,许多其他组合和排列都是可能的。因此,该新颖的体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。现在,详细的公开内容转至提供属于进一步实施例的示例。以下提供的示例并不旨在是限制性的。
在示例1中,一种虚拟化操作系统的装置包括处理器组件;可见性检查器,用于由处理器组件执行以做出对内核例程的可见性调用以便请求包括可见性检查器的框架例程的实例是否可见的指示;以及实例的资源访问代码,用于由处理器组件执行以基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问硬件组件。
在示例2中,其包括示例1的主题,所述装置可以包括内核例程,并且所述内核例程可以包括可见性检查例程,其用于由处理器组件执行以将框架例程的多个实例中的哪个实例是可见实例的第一标识符与分配给所述实例并且在可见性检查调用中接收到的第二标识符进行比较以确定所述实例是否可见,所述指示包括指示所述实例是否可见的布尔值。
在示例3中,其包括示例1-2中任一个的主题,所述装置可以包括内核例程,并且所述内核例程可以包括可见性检查例程,其用于由处理器组件执行以检索框架例程的多个实例中的哪一个实例是可见实例的第一标识符,所述指示包括第一标识符,并且所述实例将第一标识符与分配给所述实例的第二标识符进行比较以确定所述实例是否可见。
在示例4中,其包括示例1-3中任一个的主题,所述装置可以包括硬件组件,所述硬件组件通信耦合到所述处理器组件,并且所述实例包括共享检查器,其用于由处理器组件执行以基于所述指示并且响应于所述API调用的接收而确定要采取的行动。
在示例5中,其包括示例1-4中任一个的主题,所述行动可以包括施行资源访问操作以共享硬件组件。
在示例6中,其包括示例1-5中任一个的主题,所述行动可以包括以下中的至少一个:将执行流返回到应用例程而不施行资源访问操作,向应用例程提供无效值,向应用例程提供零值,或者对在API调用中指定为提供给硬件组件的数据进行缓冲以便不共享所述硬件组件。
在示例7中,其包括示例1-6中任一个的主题,所述装置可以包括配置组件,其用于由处理器组件执行以配置实例来采取行动。
在示例8中,其包括示例1-7中任一个的主题,所述装置可以包括与硬件组件相关联的设备驱动器,所述资源访问操作包括对内核例程的系统调用,所述内核例程通过设备驱动器响应于系统调用而操作硬件组件。
在示例9中,其包括示例1-8中任一个的主题,所述实例可以包括多个API调用代码块,每一个API调用代码块用于由处理器组件执行以施行API函数,向内核例程做出可见性调用检查并且基于所述指示并且响应于API调用的接收而采取行动。
在示例10中,其包括示例1-9中任一个的主题,所述装置可以包括配置组件,其用于由处理器组件执行以配置每一个API调用代码块的行动。
在示例11中,其包括示例1-10中任一个的主题,所述装置可以包括硬件组件,所述硬件组件通信耦合到处理器组件,多个API调用代码块的子集与硬件组件相关联,并且所述配置组件将所述子集的每一个API调用代码块的行动配置成与框架例程的另一实例选择性地共享硬件组件。
在示例12中,其包括示例1-11中任一个的主题,所述硬件组件可以包括以下之一:将处理器组件耦合到网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
在示例13中,一种虚拟化操作系统的装置可以包括处理器组件;框架例程的实例,用于由所述处理器组件执行以向内核组件做出可见性检查调用以请求所述实例是否可见的指示以及基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而采取行动;以及配置组件,用于由处理器组件执行以将所述行动配置成与框架例程的另一实例选择性地共享硬件组件,所述硬件组件通信耦合到所述处理器组件。
在示例14中,其包括示例13的主题,所述配置组件可以将框架例程的多个实例中的每一个实例中的行动配置成选择性地共享硬件组件,所述多个实例包括所述实例和其它实例。
在示例15中,其包括示例13-14中任一个的主题,所述装置可以包括硬件组件,所述硬件组件包括以下之一:将处理器组件耦合到网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
在示例16中,其包括示例13-15中任一个的主题,所述实例可以包括共享检查器,其用于由处理器组件执行以确定响应于API调用的接收和所述实例在所述指示中被指示为不可见而配置所述实例所针对的行动。
在示例17中,其包括示例13-16中任一个的主题,所述行动可以包括向内核例程做出系统调用以共享硬件组件。
在示例18中,其包括示例13-17中任一个的主题,所述行动可以包括以下中的至少一个:将执行流返回到应用例程而不做出对内核例程的系统调用,向应用例程提供无效值,向应用例程提供零值,或者对在API调用中指定为提供给硬件组件的数据进行缓冲以便不共享所述硬件组件。
在示例19中,一种用于虚拟化操作系统的计算机实现的方法包括:做出对内核例程的可见性检查调用以请求框架例程的实例是否可见的指示,以及基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问计算设备的硬件组件。
在示例20中,其包括示例19的主题,所述方法可以包括:基于所述指示并且响应于API调用的接收而采取行动以便不与框架例程的另一实例共享硬件组件,所述行动包括以下中的至少一个:将执行流返回到应用例程而不施行资源访问操作,向应用例程提供无效值,向应用例程提供零值,或者对在API调用中指定为提供给硬件组件的数据进行缓冲。
在示例21中,其包括示例19-20中任一个的主题,所述方法可以包括:基于所述指示并且响应于API调用的接收而采取行动以便与框架例程的另一实例共享硬件组件,所述行动包括以下中的至少一个:向内核例程做出系统调用,在读取操作中直接访问硬件组件或者在写入操作中直接访问硬件组件。
在示例22中,其包括示例19-21中任一个的主题,所述方法可以包括响应于API调用的接收并且基于所述指示而确定要采取的行动。
在示例23中,其包括示例19-22中任一个的主题,所述方法可以包括:生成框架例程的多个实例,所述多个实例包括所述实例,以及将所述多个实例中的每一个实例中的行动配置成选择性地共享硬件组件。
在示例24中,其包括示例19-23中任一个的主题,所述方法可以包括响应于API调用的接收和所述实例在所述指示中被指示为可见而施行资源访问操作以共享硬件组件,以及响应于另一API调用的接收和所述实例在所述指示中被指示为可见而限制施行另一资源访问操作以便不共享另一硬件组件,所述另一API调用与另一硬件组件相关联。
在示例25中,其包括示例19-24中任一个的主题,所述方法可以包括响应于可见性检查调用而接收指示所述实例是否可见的布尔值。
在示例26中,其包括示例19-25中任一个的主题,所述方法可以包括将指定框架例程的多个实例中的哪一个实例是可见实例的第一标识符与分配给所述实例的第二标识符进行比较以确定所述实例是否可见。
在示例27中,其包括示例19-26中任一个的主题,所述硬件组件可以包括以下之一:将与网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
在示例28中,至少一个机器可读存储介质包括指令,所述指令当由处理器组件执行时使所述处理器组件做出对内核例程的可见性检查调用以请求框架例程的实例是否可见的指示,以及基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问通信耦合到处理器组件的硬件组件。
在示例29中,其包括示例28的主题,可以使处理器组件基于所述指示并且响应于API调用的接收而采取行动以便不与框架例程的另一实例共享硬件组件,所述行动包括以下中的至少一个:将执行流返回到应用例程而不施行资源访问操作,向应用例程提供无效值,向应用例程提供零值,或对在API调用中指定为提供给硬件组件的数据进行缓冲。
在示例30中,其包括示例28-29中任一个的主题,可以使处理器组件基于所述指示并且响应于API调用的接收而采取行动以便与框架例程的另一实例共享硬件组件,所述行动包括以下中的至少一个:向内核例程做出系统调用以间接访问硬件组件,在读取操作中直接访问硬件组件或者在写入操作中直接访问硬件组件。
在示例31中,其包括示例28-30中任一个的主题,可以使处理器组件响应于API调用的接收并且基于所述指示而确定要采取的行动。
在示例32中,其包括示例28-31中任一个的主题,可以使处理器组件生成框架例程的多个实例,所述多个实例包括所述实例,以及将所述多个实例中的每一个实例中的行动配置成选择性地共享硬件组件。
在示例33中,其包括示例28-32中任一个的主题,可以使处理器组件响应于API调用的接收和所述实例在所述指示中被指示为可见而施行资源访问操作以便共享硬件组件;以及响应于另一API调用的接收和所述实例在所述指示中被指示为可见而限制施行另一资源访问操作以便不共享另一硬件组件,所述另一API调用与所述另一硬件组件相关联。
在示例34中,其包括示例28-33中任一个的主题,可以使处理器组件响应于可见性检查调用而接收指示所述实例是否可见的布尔值。
在示例35中,其包括示例28-34中任一个的主题,可以使处理器组件将指定框架例程的多个实例中的哪一个实例是可见实例的第一标识符与分配给所述实例的第二标识符进行比较以确定所述实例是否可见。
在示例36中,其包括示例28-35中任一个的主题,所述硬件组件可以包括以下之一:将处理器组件耦合到网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
在示例37中,一种虚拟化操作系统的装置包括用于做出对内核例程的可见性检查调用以请求框架例程的实例是否可见的指示以及基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问硬件组件的构件。
在示例38中,其包括示例37的主题,所述装置可以包括用于基于所述指示并且响应于API调用的接收而采取行动以便不与框架例程的另一实例共享硬件组件的构件,所述行动包括以下中的至少一个:将执行流返回到应用例程而不施行资源访问操作,向应用例程提供无效值,向应用例程提供零值,或者对在API调用中指定为提供给硬件组件的数据进行缓冲。
在示例39中,其包括示例37-38中任一个的主题,所述装置可以包括用于基于所述指示并且响应于API调用的接收而采取行动以便与框架例程的另一实例共享硬件组件的构件,所述行动包括以下中的至少一个:向内核例程做出系统调用,在读取操作中直接访问硬件组件或者在写入操作中直接访问硬件组件。
在示例40中,其包括示例37-39中任一个的主题,所述装置可以包括用于响应于API调用的接收并且基于所述指示而确定要采取的行动的构件。
在示例41中,其包括示例37-40中任一个的主题,所述装置可以包括用于生成框架例程的多个实例以及将所述多个实例中的每一个实例中的行动配置成选择性地共享硬件组件的构件,所述多个实例包括所述实例。
在示例42中,其包括示例37-41中任一个的主题,所述装置可以包括用于响应于API调用的接收和所述实例在所述指示中被指示为可见而施行资源访问操作以便共享硬件组件;以及响应于另一API调用的接收和所述实例在所述指示中被指示为可见而限制施行另一资源访问操作以便不共享另一硬件组件的构件,所述另一API调用与所述另一硬件组件相关联。
在示例43中,其包括示例37-42中任一个的主题,所述装置可以包括用于响应于可见性检查调用而接收指示所述实例是否可见的布尔值的构件。
在示例44中,其包括示例37-43中任一个的主题,所述装置可以包括用于将指定框架例程的多个实例中的哪一个实例是可见实例的第一标识符与分配给所述实例的第二标识符进行比较以确定所述实例是否可见的构件。
在示例45中,其包括示例37-44中任一个的主题,所述装置可以包括硬件组件,并且所述硬件组件可以包括以下之一:与网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
在示例46中,至少一个机器可读存储介质可以包括当由计算设备执行时使所述计算设备施行以上中的任一个的指令。
在示例47中,一种虚拟化操作系统的装置可以包括用于施行以上中的任一个的构件。
Claims (25)
1. 一种虚拟化操作系统的装置,包括:
处理器组件;
可见性检查器,用于由所述处理器组件执行以做出对内核例程的可见性调用以请求包括可见性检查器的框架例程的实例是否可见的指示;以及
实例的资源访问代码,用于由处理器组件执行以基于所述指示以及基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问所述硬件组件。
2. 权利要求1所述的装置,包括内核例程,所述内核例程包括可见性检查例程,其用于由处理器组件执行以将框架例程的多个实例中的哪个实例是可见实例的第一标识符与分配给所述实例并且在可见性检查调用中接收到的第二标识符进行比较以确定所述实例是否可见,所述指示包括指示所述实例是否可见的布尔值。
3. 权利要求1所述的装置,包括内核例程,所述内核例程包括可见性检查例程,其用于由处理器组件执行以检索框架例程的多个实例中的哪一个实例是可见实例的第一标识符,所述指示包括所述第一标识符,并且所述实例将所述第一标识符与分配给所述实例的第二标识符进行比较以确定所述实例是否可见。
4. 权利要求1所述的装置,包括硬件组件,所述硬件组件通信耦合到处理器组件,并且所述实例包括共享检查器,其用于由处理器组件执行以基于所述指示并且响应于API调用的接收而确定要采取的行动。
5. 权利要求4所述的装置,所述行动包括以下中的至少一个:将执行流返回到应用例程而不施行资源访问操作,向应用例程提供无效值,向应用例程提供零值,或对在API调用中指定为提供给硬件组件的数据进行缓冲以便不共享所述硬件组件。
6. 权利要求4所述的装置,包括与硬件组件相关联的设备驱动器,所述资源访问操作包括对内核例程的系统调用,所述内核例程通过设备驱动器响应于系统调用而操作所述硬件组件。
7. 权利要求1所述的装置,所述实例包括多个API调用代码块,每一个API调用代码块用于由处理器组件执行以施行API函数,向内核例程做出可见性调用检查以及基于所述指示并且响应于API调用的接收而采取行动。
8. 权利要求7所述的装置,包括配置组件,其用于由处理器组件执行以配置每一个API调用代码块的行动。
9. 权利要求8所述的装置,包括硬件组件,所述硬件组件通信耦合到所述处理器组件,所述多个API调用代码块的子集与所述硬件组件相关联,并且所述配置组件将所述子集的每一个API调用代码块的行动配置成与框架例程的另一实例选择性地共享所述硬件组件。
10. 一种虚拟化操作系统的装置,包括:
处理器组件;
框架例程的实例,用于由处理器组件执行以向内核组件做出可见性检查调用以请求所述实例是否可见的指示,以及基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而采取行动;以及
配置组件,用于由处理器组件执行以将所述行动配置成与框架例程的另一实例选择性地共享硬件组件,所述硬件组件通信耦合到所述处理器组件。
11. 权利要求10所述的装置,所述配置组件将框架例程的多个实例中的每一个实例中的行动配置成选择性地共享硬件组件,所述多个实例包括所述实例和其它实例。
12. 权利要求10所述的装置,包括硬件组件,所述硬件组件包括以下之一:将处理器组件耦合到网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
13. 权利要求10所述的装置,所述实例包括共享检查器,其用于由处理器组件执行以确定响应于API调用的接收和所述实例在所述指示中被指示为不可见而配置所述实例所针对行动。
14. 权利要求13所述的装置,所述行动包括向内核例程做出系统调用以共享硬件组件。
15. 权利要求13所述的装置,所述行动包括以下中的至少一个:将执行流返回到应用例程而不做出对内核例程的系统调用,向应用例程提供无效值,向应用例程提供零值,或者对在API调用中被指定为提供给硬件组件的数据进行缓冲以便不共享硬件组件。
16. 一种用于虚拟化操作系统的计算机实现的方法,包括:
做出对内核例程的可见性检查调用以请求框架例程的实例是否可见的指示;以及
基于所述指示并且基于来自应用例程的指定访问硬件组件的API函数的应用编程接口(API)调用的接收而施行资源访问操作以访问计算设备的硬件组件。
17. 权利要求16所述的计算机实现的方法,包括基于所述指示并且响应于API调用的接收而采取行动以便不与框架例程的另一实例共享硬件组件,所述行动包括以下中的至少一个:将执行流返回到应用例程而不施行资源访问操作,向应用例程提供无效值,向应用例程提供零值,或者对在API调用中被指定为提供给硬件组件的数据进行缓冲。
18. 权利要求16所述的计算机实现的方法,包括基于所述指示并且响应于API调用的接收而采取行动以便与框架例程的另一实例共享硬件组件,所述行动包括以下中的至少一个:向内核例程做出系统调用,在读取操作中直接访问硬件组件或者在写入操作中直接访问硬件组件。
19. 权利要求16所述的计算机实现的方法,包括响应于API调用的接收并且基于所述指示而确定要采取的行动。
20. 权利要求19所述的计算机实现的方法,包括:
生成框架例程的多个实例,所述多个实例包括所述实例;以及
将所述多个实例中的每一个实例中的行动配置成选择性地共享硬件组件。
21. 权利要求16所述的计算机实现的方法,包括:
响应于API调用的接收和所述实例在所述指示中被指示为可见而施行资源访问操作以便共享硬件组件;以及
响应于另一API调用的接收和所述实例在所述指示中被指示为可见而限制施行另一资源访问操作以便不共享另一硬件组件,所述另一API调用与所述另一硬件组件相关联。
22. 权利要求16所述的计算机实现的方法,包括响应于可见性检查调用而接收指示所述实例是否可见的布尔值。
23. 权利要求16所述的计算机实现的方法,包括将指定框架例程的多个实例中的哪一个实例是可见实例的第一标识符与分配给所述实例的第二标识符进行比较以确定所述实例是否可见。
24. 权利要求16所述的计算机实现的方法,所述硬件组件包括以下之一:与网络的接口、显示器、相机、音频子系统或使得能够实现控制台输入的控件。
25. 至少一个机器可读存储介质,包括当由计算设备执行时使所述计算设备施行权利要求16-24中任一项所述的方法的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/089668 WO2015089730A1 (en) | 2013-12-17 | 2013-12-17 | Techniques for portable computing device virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105723339A true CN105723339A (zh) | 2016-06-29 |
CN105723339B CN105723339B (zh) | 2020-03-06 |
Family
ID=53401920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380080972.XA Active CN105723339B (zh) | 2013-12-17 | 2013-12-17 | 用于便携式计算设备虚拟化的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10255093B2 (zh) |
EP (1) | EP3084601A4 (zh) |
CN (1) | CN105723339B (zh) |
WO (1) | WO2015089730A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113038068A (zh) * | 2019-12-24 | 2021-06-25 | 浙江宇视科技有限公司 | 一种模拟相机控制方法、装置、设备及存储介质 |
CN114741120A (zh) * | 2016-11-28 | 2022-07-12 | 微软技术许可有限责任公司 | 用于增强设备流的可插拔组件 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575427B (zh) * | 2014-08-12 | 2020-12-08 | 艾高特有限责任公司 | 基于零知识环境的社交网络引擎 |
WO2020059957A1 (ko) * | 2018-09-17 | 2020-03-26 | 주식회사 드림에이스 | 차량용 소프트웨어 제어 장치 |
EP3884412A1 (en) * | 2018-11-19 | 2021-09-29 | Secure Micro Ltd | Computer implemented method |
US11526587B2 (en) * | 2019-02-26 | 2022-12-13 | One Identity LLC | Privileged access management for applications |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102725734A (zh) * | 2009-07-22 | 2012-10-10 | 英派尔科技开发有限公司 | 带隔离的批调度 |
US20130132946A1 (en) * | 2011-11-17 | 2013-05-23 | Microsoft Corporation | Synchronized failover for active-passive applications |
CN103365702A (zh) * | 2013-07-11 | 2013-10-23 | 中国科学院合肥物质科学研究院 | IaaS云环境下轻量级虚拟机进程追踪系统和方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0315492D0 (en) * | 2003-07-02 | 2003-08-06 | Symbian Ltd | A method of enabling a multitasking wireless information device to conserve battery power |
US7774781B2 (en) * | 2005-09-30 | 2010-08-10 | Intel Corporation | Storage subsystem access prioritization by system process and foreground application identification |
US8346930B2 (en) * | 2006-05-12 | 2013-01-01 | General Instrument Corporation | Multimedia processing method and device for resource management using virtual resources |
US9063783B2 (en) * | 2008-11-24 | 2015-06-23 | Red Hat, Inc. | Coordinating parallel execution of processes using agents |
JP5729146B2 (ja) * | 2011-06-03 | 2015-06-03 | 富士通株式会社 | 情報端末装置、情報端末装置の制御方法およびプログラム |
US9298910B2 (en) * | 2011-06-08 | 2016-03-29 | Mcafee, Inc. | System and method for virtual partition monitoring |
US9152548B2 (en) * | 2012-01-17 | 2015-10-06 | Vmware, Inc. | Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call |
US9164803B2 (en) * | 2012-01-20 | 2015-10-20 | Microsoft Technology Licensing, Llc | Background task resource control |
US9336068B2 (en) * | 2013-06-07 | 2016-05-10 | Apple Inc. | Throttling of application access to resources |
-
2013
- 2013-12-17 EP EP13899876.0A patent/EP3084601A4/en not_active Withdrawn
- 2013-12-17 US US15/026,860 patent/US10255093B2/en active Active
- 2013-12-17 WO PCT/CN2013/089668 patent/WO2015089730A1/en active Application Filing
- 2013-12-17 CN CN201380080972.XA patent/CN105723339B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102725734A (zh) * | 2009-07-22 | 2012-10-10 | 英派尔科技开发有限公司 | 带隔离的批调度 |
US20130132946A1 (en) * | 2011-11-17 | 2013-05-23 | Microsoft Corporation | Synchronized failover for active-passive applications |
CN103365702A (zh) * | 2013-07-11 | 2013-10-23 | 中国科学院合肥物质科学研究院 | IaaS云环境下轻量级虚拟机进程追踪系统和方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741120A (zh) * | 2016-11-28 | 2022-07-12 | 微软技术许可有限责任公司 | 用于增强设备流的可插拔组件 |
CN114741120B (zh) * | 2016-11-28 | 2024-05-10 | 微软技术许可有限责任公司 | 用于增强设备流的可插拔组件 |
CN113038068A (zh) * | 2019-12-24 | 2021-06-25 | 浙江宇视科技有限公司 | 一种模拟相机控制方法、装置、设备及存储介质 |
CN113038068B (zh) * | 2019-12-24 | 2024-02-06 | 浙江宇视科技有限公司 | 一种模拟相机控制方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2015089730A1 (en) | 2015-06-25 |
US20160239334A1 (en) | 2016-08-18 |
US10255093B2 (en) | 2019-04-09 |
EP3084601A4 (en) | 2017-07-26 |
EP3084601A1 (en) | 2016-10-26 |
CN105723339B (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105723339A (zh) | 用于便携式计算设备虚拟化的技术 | |
US9223619B2 (en) | Techniques for generating instructions to control database processing | |
CN107957831B (zh) | 一种展示界面内容的数据处理方法、装置和处理设备 | |
US9201572B2 (en) | A/B test configuration environment | |
KR101493630B1 (ko) | 웹 브라우저 상의 콘텐츠와 상호작용하기 위한 방법, 장치 및 시스템 | |
US9152529B2 (en) | Systems and methods for dynamically altering a user interface based on user interface actions | |
US20100223563A1 (en) | Remotely defining a user interface for a handheld device | |
CN106843715A (zh) | 用于远程化的应用的触摸支持 | |
US20140115506A1 (en) | Systems And Methods For Measurement Of User Interface Actions | |
CN105190486A (zh) | 显示装置及其用户界面屏幕提供方法 | |
CN105739949A (zh) | 用于在非对称处理器核之间的协作式执行的技术 | |
Spano et al. | A compositional model for gesture definition | |
CN104346224B (zh) | 使用组页面错误描述符来处理上下文切换和进程终止 | |
CN106605234A (zh) | 使用近场通信与许可控制共享内容 | |
CN104951358A (zh) | 基于优先级的上下文抢占 | |
CN104885107A (zh) | 经由应用捕获并共享视觉内容 | |
CN102981818A (zh) | 基于情境的动画库 | |
US20140279833A1 (en) | Method to reduce large olap cube size using cell selection rules | |
CN110268375A (zh) | 配置跨不同应用使用的数字笔 | |
US9325576B2 (en) | Dynamic server to server configuration and initialization | |
JP6042454B2 (ja) | ユーザ生成によるデータセンターの省電力 | |
CN106663090A (zh) | 在编译期间将呈现元数据转换成浏览器可渲染格式 | |
US20140331145A1 (en) | Enhancing a remote desktop with meta-information | |
TW201527985A (zh) | 在基於amba之裝置中對ioapic中斷的支援 | |
US20070283260A1 (en) | Human-machine Interface System with Device Bridge and Method for Designing and Operating the Same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |