会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~

操作系统

阅读:902发布:2020-05-11

IPRDB可以提供操作系统专利检索,专利查询,专利分析的服务。并且在其他事物之中,与托管客户操作系统的一个或多个电子设备的使用相结合,从客户操作系统的主映像重复地刷新客户操作系统。在虚拟机上执行客户操作系统,并且,在运行虚拟机的同时,从客户操作系统的主映像不时地重新加载客户操作系统。,下面是操作系统专利的具体信息内容。

1.一种系统,包括:

计算机系统,包括

网络通讯设备;

在计算机系统上执行的主机操作系统,主机操作系统被配置为直接地操作网络通讯设备;

虚拟化的网络通讯设备,其中对虚拟化网络通讯设备的使用导致由主机操作系统对网络通讯设备的直接操作;

在计算机系统上执行的客户操作系统,客户操作系统被配置为使用虚拟化的网络通讯设备,用于网络通讯活动;

第一非易失性数据存储设备,存储客户操作系统的主映像;以及第二非易失性数据存储设备,存储由客户操作系统生成的用户信息;

所述的虚拟化的网络通讯设备安排由计算机系统实际执行的指令,且虚拟机屏蔽在计算机系统上的主机操作系统;

其中,响应于由主机操作系统生成的指令,计算机系统被配置为从存储在第一非易失性数据存储设备中的主映像和存储在第二非易失性数据存储设备中的用户信息自动地刷新客户操作系统。

2.根据权利要求1所述的系统,进一步地包括:虚拟机,其包括虚拟化的网络通讯设备,所述客户操作系统在虚拟机内部执行。

3.根据权利要求2所述的系统,其中虚拟机在主机操作系统内部执行。

4.根据权利要求1所述的系统,进一步地包括:显示设备,被配置为显示映像;

输入设备,被配置为从用户接收指令;

虚拟化的显示设备,其中对虚拟化显示设备的使用导致由主机操作系统对显示设备进行操作;以及虚拟化的输入设备,其中使用虚拟化的输入设备将由主机操作系统经由输入设备接收到的输入提供给操作系统;

客户操作系统被配置为使用虚拟化的显示设备以显示用户界面并且被配置为使用虚拟化的输入设备以提供用于操作用户界面的输入。

5.根据权利要求4所述的系统,其中主机操作系统不在显示设备处提供用户界面。

6.根据权利要求1所述的系统,进一步地包括:虚拟化的数据存储设备,其中对虚拟化的数据存储设备的使用导致由主机操作系统对第二非易失性数据存储设备的直接操作,并且客户操作系统被配置为使用虚拟化的数据存储设备用于数据存储活动。

7.根据权利要求1所述的系统,其中响应于来自主机操作系统的指令,计算机系统被配置为在客户操作系统上安装应用程序。

8.根据权利要求7所述的系统,其中主机操作系统被配置为识别并且记录与应用程序有关的问题,并且响应于来自主机操作系统的指令,计算机系统被配置为在客户操作系统上安装应用程序,除非主机操作系统已经记录了与应用程序有关的问题。

9.根据权利要求8所述的系统,其中主机操作系统被配置为响应于识别出与应用程序有关的问题来生成指令。

10.根据权利要求1所述的系统,其中计算机系统被配置为监视客户操作系统的操作;

并且

主机操作系统被配置为结合客户操作系统的监视来生成指令。

11.根据权利要求10所述的系统,其中主机操作系统被配置为响应于检测到的客户操作系统的状态来生成指令。

12.根据权利要求10所述的系统,其中主机操作系统被配置为响应于检测到的客户操作系统的未授权访问来生成指令。

13.根据权利要求1所述的系统,其中主机操作系统被配置为周期性地生成指令。

14.根据权利要求1所述的系统,其中主映像不随着客户操作系统的刷新而变化。

15.根据权利要求1所述的系统,其中主机操作系统被配置为响应于由客户操作系统对虚拟化的网络通讯设备的使用,加密使用网络通讯设备进行的通讯。

16.根据权利要求1所述的系统,其中主机操作系统被配置为执行对由客户操作系统请求的网络通讯的监视和控制。

17.根据权利要求1所述的系统,其中主机操作系统被配置为无需用户交互并且无需终止客户操作系统就执行设备驱动的自动维护。

18.一种方法,包括

虚拟化的网络通讯设备安排由计算机系统实际执行的指令,且虚拟机屏蔽在计算机系统上的主机操作系统;

与托管客户操作系统的一个或多个电子设备的使用相结合从客户操作系统的主映像重复地刷新客户操作系统,响应于一个或者多个电子设备的使用有关的事件进行刷新,并且主映像不随着刷新而变化。

19.根据权利要求18所述的方法,其中响应于客户操作系统的操作特征而进行刷新。

说明书全文

操作系统

[0001] 相关申请
[0002] 本申请要求2012年6月11日提交的申请序号为13/493,882的美国实用新案申请的优先权益;通过参考的方式将其内容合并于此。

背景技术

[0003] 操作系统是一些计算机系统的基本组成部分。与其他东西一起,操作系统管理计算机系统的硬件和在计算机系统上运行的软件程序之间的交互作用。操作系统还可以提供用户(例如操作人员)用来与计算机系统和软件应用交互的用户界面。通过特定计算机系统执行的并且与其相互的操作系统可以说是在特定计算机系统上“运行”或者在特定计算机系统“内部运行”。运行有操作系统的计算机系统不必是实体的计算机系统。操作系统还可以运行在计算机系统的软件模拟上,有时称为虚拟机。有时,在执行虚拟机的实体的计算机硬件上运行第一操作系统,并且在虚拟机上运行第二操作系统。第一类型的操作系统可以被称为“主机操作系统”并且第二类型的操作系统是“客户操作系统”的例子。
[0004] 操作系统容易出现故障。故障可能是临时的故障。例如,在操作系统上运行的软件程序可能以操作系统料想不到的方式执行指令,导致操作系统中的出错状态。这可能对它本身表明为“操作系统崩溃”并且要求重新启动操作系统,或者在更严重的情况下,将要从存储器上擦除操作系统输入回存储器中,并且重新执行操作系统。
[0005] 故障可能是正在进行的故障。例如,软件程序可能修改操作系统,导致操作系统运转得与设计的不同。该修改可能是无意的,例如软件程序引起操作系统方面的变化,而该变化具有预期不到的结果。该修改可能是故意的,例如诸如病毒的恶意软件程序引起对操作系统有害的修改。
[0006] 操作系统可能通过由厂商或者其他来源提供的并且修改操作系统编码的更新和升级而在一段时期之后(有时经常)产生变化。经常进行这些更新和升级是为了响应可能运行有操作系统的计算机系统的硬件的改变,或者为了使操作系统对针对操作系统运行的恶意软件更有抵抗力,或者为了提供额外的性能,或者为了完成那些目标的组合。由操作系统提供给应用软件和用户的许多性能都借助了运行有操作系统的计算机系统的硬件设备。

发明内容

[0007] 我们在这里描述的计算机操作系统的使用可能围绕以下(及其他)方面、特性和实现,以及他们的组合中的一个或多个。
[0008] 通常,在一个方面,计算机系统包括一个或多个计算机设备,所述计算机设备包括第一计算机设备,其中第一计算机设备包含第一网络通讯设备,在第一计算机设备上执行的主机操作系统,其中主机操作系统被配置为直接地运行网络通讯设备,虚拟化的网络通讯设备,借此,对虚拟化的网络通讯设备的使得主机操作系统对第一网络通讯设备进行直接操作,客户操作系统,其中客户操作系统被配置为使用虚拟化的网络通讯设备用于网络通讯活动,存储客户操作系统的主映像的第一非易失性数据存储设备,和存储客户操作系统产生的用户信息的第二非易失性数据存储设备,其中,响应于主机操作系统产生的指令,计算机系统被配置为从第一非易失性数据存储设备中存储的主映像和第二非易失性数据存储设备中存储的用户信息来自动地刷新客户操作系统。
[0009] 实现可以包括一个或多个以下特性。系统包括虚拟机,该虚拟机包括虚拟化的网络通讯设备和虚拟化的数据存储设备,其中在该虚拟机内部执行客户操作系统。在该主机操作系统内部执行该虚拟机。该系统包括第一显示设备,被配置为显示映像,第一输入设备,用于从用户手动或语音发出指令,虚拟化的显示设备,借此,对虚拟化的显示设备的使用使得主机操作系统对第一显示设备进行操作,以及虚拟化的输入设备,通过使用该虚拟化的输入设备,将由主机操作系统经由第一输入设备接收到的输入提供给操作系统,其中,客户操作系统被配置为使用虚拟化的显示设备显示用户界面并且被配置为使用虚拟化的输入设备提供用于操作该用户界面的输入。主机操作系统不经由第一显示设备提供用于使用的用户界面。第一计算机设备进一步包括第一数据存储设备,主机操作系统被配置为直接操作第一数据存储单元,系统进一步地包括虚拟化的数据存储设备,借此,对虚拟化的数据存储设备的使用导致主机操作系统对第一数据存储设备的直接操作,以及客户操作系统,被配置为使用虚拟化的数据存储设备,用于数据存储活动。系统包括第三非易失性数据存储设备,其存储用于在客户操作系统上安装第一应用程序的数据,其中,响应于来自主机操作系统的指令,计算机系统被配置为从第三非易失性数据存储设备将第一应用程序安装在客户操作系统上。该系统包括第四非易失性数据存储设备,存储用于在客户操作系统上安装第二应用程序的数据,其中主机操作系统被配置为识别并且记录与第二应用有关的问题,并且,其中,响应于来自主机操作系统的指令,计算机系统被配置为从第四非易失性数据存储设备在客户操作系统上安装第二应用程序,除非主机操作系统已经记录了与第二应用有关的问题。主机操作系统被配置为响应于识别出与第二应用有关的问题生成指令。系统被配置为监视客户操作系统的操作,并且主机操作系统被配置为响应于客户操作系统的监视生成指令。主机操作系统被配置为响应于检测到的客户操作系统的误操作或故障生成指令。主机操作系统被配置为响应于检测到的客户操作系统的未授权访问生成指令。主机操作系统被配置为周期性地生成指令。主映像不随着客户操作系统的刷新而变化。主机操作系统被配置为响应于客户操作系统对虚拟化的网络通讯设备的使用,要求经由第一网络通讯设备进行加密的通讯。主机操作系统被配置为执行对客户操作系统请求的网络通讯的监视和控制。主机操作系统被配置为无需用户交互并且无需终止客户操作系统就执行设备驱动的自动维护。
[0010] 通常,在另一个方面,系统包括计算机系统,该计算机系统包括网络通讯设备,在计算机系统上执行的主机操作系统,该主机操作系统被配置为直接操作网络通讯设备,虚拟化的网络通讯设备,其中对虚拟化的网络通讯设备的使用导致主机操作系统对网络通讯设备的直接操作,在计算机系统上执行的客户操作系统,该客户操作系统被配置为使用虚拟化的网络通讯设备,用于网络通讯活动,存储客户操作系统的主映像的第一非易失性数据存储设备,和存储客户操作系统产生的用户信息的第二非易失性数据存储设备,其中,响应于主机操作系统生成的指令,计算机系统被配置为从存储在第一非易失性数据存储设备中的主映像和存储在第二非易失性数据存储设备中的用户信息自动刷新客户操作系统。
[0011] 实现可以包括一个或多个以下特征。该系统包括虚拟机,该虚拟机包括虚拟化的网络通讯设备,在虚拟机内部执行客户操作系统。在主机操作系统内部执行虚拟机。该系统包括显示设备,被配置为显示映像,输入设备被配置为从用户接收指令,虚拟化的显示设备,其中对虚拟化的显示设备的使用使得主机操作系统对显示设备进行操作,以及虚拟化的输入设备,其中使用虚拟化的输入设备将主机操作系统经由输入设备接收到的输入提供给操作系统,客户操作系统被配置为使用虚拟化的显示设备显示用户界面并且被配置为使用虚拟化的输入设备提供用于操作用户界面的输入。主机操作系统不在显示设备上提供用户界面。系统包括虚拟化的数据存储设备,其中对虚拟化的数据存储设备的使用使得主机操作系统对第二非易失性数据存储设备进行直接操作,并且客户操作系统被配置为使用虚拟化的数据存储设备用于数据存储活动。响应于来自主机操作系统的指令,计算机系统被配置为在客户操作系统上安装应用程序。主机操作系统被配置为识别并且记录与应用程序有关的问题,并且响应于来自主机操作系统的指令,计算机系统被配置为在客户操作系统上安装应用程序,除非主机操作系统已经记录有与应用程序有关的问题。主机操作系统被配置为响应于识别出与应用程序有关的问题而生成指令。计算机系统被配置为监视客户操作系统的操作,并且主机操作系统被配置为结合客户操作系统的监视生成指令。主机操作系统被配置为响应于检测到的客户操作系统的状态生成指令。主机操作系统被配置为响应于检测到的客户操作系统的未授权访问生成指令。主机操作系统被配置为周期性地生成指令。主映像不随着客户操作系统的刷新而变化。主机操作系统被配置为响应于客户操作系统对虚拟化的网络通讯设备的使用,加密使用网络通讯设备进行的通讯。主机操作系统被配置为执行对客户操作系统请求的网络通讯的监视和控制。主机操作系统被配置为无需用户交互并且无需终止客户操作系统就执行设备驱动的自动维护。主机操作包括核心抽象层,其将虚拟机隔离出第一计算机设备。
[0012] 通常,在另一个方面,配置一个或多个包括第一计算机设备的计算机设备的方法,该第一计算机设备包括第一网络通讯设备,所述方法包括在第一计算机设备上执行主机操作系统,其中主机操作系统被配置为直接操作网络通讯设备,在一个或多个计算机设备上执行客户操作系统,其中,客户操作系统被配置为使用虚拟化的网络通讯设备用于网络通讯活动,借此,对虚拟化的网络通讯设备的使用使得主机操作系统对第一网络通讯设备进行直接操作,以及响应于主机操作系统生成的指令,从存储在第一非易失性数据存储设备中的客户操作系统的主映像和存储在第二非易失性数据存储设备中的用户信息刷新客户操作系统。
[0013] 实现可以包括一个或多个以下特征。该方法包括执行提供虚拟化的网络通讯设备的虚拟机,其中在虚拟机内部执行客户操作系统。在主机操作系统内部执行虚拟机。该方法包括在主机操作系统中提供核心抽象层以隔离虚拟机与计算机设备。主机操作存储一个或多个口令,用于使用在客户操作系统上执行的用户应用。
[0014] 通常,在另一个方面,方法包括结合对托管客户操作系统的一个或多个电子设备的使用,从客户操作系统主映像重复地刷新客户操作系统。
[0015] 实现可以包括一个或多个以下特征。从主映像刷新一部分客户操作系统并且一部分客户操作系统不通过该主映像而被刷新。响应于与一个或多个电子设备的使用有关的事件实施刷新。在预定时间或定期地实施刷新。响应于客户操作系统的操作特征而实施刷新。特征包括客户操作系统的不正确的运行。一旦发生客户操作系统的故障就实施刷新。一旦从一个电子设备将客户操作系统的主映像移动到另一个实施刷新。客户操作系统被托管在虚拟机上,主机操作系统在至少一个电子设备上展示该虚拟机。从便携式存储设备上的主映像刷新客户操作系统。该方法还包括刷新在一个或多个电子设备上运行的主机操作系统。电子设备包括一个或多个台式计算机、膝上型计算机、移动计算设备、移动电话或平板计算机。主映像不随着刷新而变化。
[0016] 通常,在另一个方面,方法包括在虚拟机运行、从客户操作系统的主映像重新加载客户操作系统的时候,在虚拟机上不时地执行客户操作系统。
[0017] 实现可以包括一个或多个以下特征。虚拟机被由主机操作系统所托管。主机操作系统直接可用的至少一些服务是客户操作系统不能直接访问的。主机操作系统直接可用的一些服务是客户操作系统不能直接访问的,并且主机操作系统直接可用的至少一些服务是客户操作系统可直接访问的。主机操作系统基于电子设备的状态减少客户操作系统对运行主机操作系统的电子设备的服务的访问。电子设备的服务包括网络接口。主机操作系统对于用户是隐藏的,但是用户接口部件则可以相反地被主机操作系统展示给用户。从主映像重新加载客户操作系统包括从辅助的主映像在客户操作系统上安装用户应用。检测用户应用的状态并且基于状态删除辅助的主映像。该状态包括故障状态或安全状态。该方法包括检测客户操作系统的状态,并且基于该状态刷新客户操作系统。该状态包括故障状态或安全状态。该方法包括禁用虚拟机的用户接口。将客户操作系统重新加载到随机访问存储器中。主映像被存储在固件中。该方法包括在从主映像重新加载客户操作系统之后,执行该客户操作系统。该方法包括在从主映像重新加载客户操作系统之前,终止该客户操作系统。不时地包括按定期的进度表。
[0018] 通常,在另一个方面,装置包括包含主机操作系统和客户操作系统的存储设备,主机操作系统包括与电子设备上的可用服务接口的特征,客户操作系统包括这样的特征,该客户操作系统被展示给用户,以使得用户能够通过主机操作系统使用在计算机系统上可用的服务,而使用户不能够通过主机操作系统直接访问在计算机系统上可用的服务。
[0019] 实现还可以包括一个或多个以下特征。客户操作系统不能够访问计算机系统的硬件。该装置包括客户操作系统可访问的辅助可重写存储设备。辅助可重写存储设备存储辅助数据存储映像,该辅助数据存储映像包括可执行软件,该可执行软件用来安装可以在客户操作系统下执行的应用程序。该装置包括包含主机操作系统和客户操作系统的数据存储映像。该存储设备包括只读存储设备,以在执行主机操作系统之前将数据存储映像复制给电子设备的随机访问存储器。存储设备包括只读存储设备。
[0020] 通常,在另一个方面,存储设备包含主机操作系统,该主机操作系统使得在主机操作系统下执行独立于执行了主机操作系统的电子设备上的可用服务而选择的两个或多个客户操作系统中的任何一个,主机操作系统具有与电子设备上的可用服务接口的特征。
[0021] 实现可以包括一个或多个以下特征。客户操作系统被配置为在除了电子设备的硬件以外的硬件上运行。客户操作系统不能够访问电子设备的硬件。存储设备包括只读存储设备并且包括客户操作系统可访问的辅助可重写存储设备。
[0022] 通常,在另一个方面,方法包括用户访问特征,其中,由在电子设备上运行的主机操作系统使该特征可用。用户通过在主机操作系统展示的虚拟机上运行的客户操作系统间接地访问特征,从存储在客户操作系统不能访问的数据存储设备中的主映像提供客户操作系统。
[0023] 通常,在另一个方面,方法包括客户操作系统使得用户能够与电子设备交互,客户操作系统用户通过调用通过在电子设备上运行的主机操作系统展示的虚拟机的特征来影响用户的交互,根据主映像提供客户操作系统。
[0024] 通常,在另一个方面,集成电路封装包括能够运行通用操作系统的嵌入组件,和包含主机操作系统及客户操作系统的只读存储设备,主机操作系统包括与服务接口的功能,其中,所述服务由嵌入组件提供,客户操作系统包括这样的功能:该功能被展示给用户,以使得用户能够通过主机操作系统使用由嵌入组件提供的服务,而无需使用户通过主机操作系统来直接访问由嵌入组件提供的服务。
[0025] 实现可以包括一个或多个以下功能。客户操作系统不能访问嵌入组件。客户操作系统被配置为访问集成电路封装外部的辅助可重写存储设备。只读存储设备包括包含主机操作系统和客户操作系统的数据存储映像。至少一些嵌入组件被配置为在执行主机操作系统之前将数据存储映像复制到随机访问存储器。
[0026] 这些以及其他的方面、特性和实现以及他们的组合,可以被表示为装置、方法、商业经营的方法、执行功能的装置或步骤、元件、系统、程序产品以及其他方式。
[0027] 优点可以包括以下的一个或多个。分支操作系统在安全环境中管理硬件和软件资源方面很有效,并且在阻止外部攻击方面很稳健。经由描述的技术,还获得其他的利益,例如用于保证硬件驱动更新的应用和传输的稳健和透明的机制。
[0028] 从说明书和权利要求,其他的方面、特征和优点将变得明显。

附图说明

[0029] 图1是示出合并主机操作系统和客户操作系统两者以提供安全操作系统的计算机处理系统的方框图。
[0030] 图2是示出经由外部存储器设备传输和使用主机操作系统和客户操作系统的方框图。
[0031] 图3和图4是示出与客户操作系统结合地使用应用程序软件的流程图。
[0032] 图5是“片上系统”实施例的示意图。
[0033] 图6是利用诸如图5所示的片上安全操作系统的替选实施例。

具体实施方式

[0034] 我们在这里描述的一些例子中,不需要用户发起的系统软件维护(打补丁、碎片整理、杀毒等等)的安全计算机系统可以被制作为常用地可用的组成部分(开源软件、诸如Windows或Macintosh的常用的用户操作系统、个人计算机、常用硬件外围设备)。这种计算机系统可以被传输给单个计算机处理电路(片上系统或SOC)并且被各种用户输出/显示设备使用。可以使用小型化技术(诸如纳米技术)将这样的设备小型化,组合并且嵌入用于专业性的使用。
[0035] 以下论述的技术的一些情况结合主机操作系统和客户操作系统,在某些例子中经由虚拟化软件来完成更高的功能性、安全性、更低的维护/生产成本。在许多情况下,合成的总体功能不能单独地用主机操作系统或客户操作系统来实现。在一些实现中,如以下将通过使用情况描述的,这种功能将是独特的,并且特别对军队、警察、情报工作、银行机构、财政安全、兑换、医药、运输、地质类型的公司(不排除还有其他的)有用。
[0036] 客户操作系统可以在虚拟机内部运行,该虚拟机运行在主机操作系统上,而该主机操作系统又运行在实体计算机系统的硬件上。如果将客户操作系统用作与计算机系统的用户进行交互的介质,那么计算机系统的硬件和主机操作系统可以被部分或整体隔离于用户的活动。
[0037] 如果客户操作系统展现出可能引起进行中的故障的状态,可以例如通过主机操作系统重新加载并且重新执行全部或一部分操作系统来刷新客户操作系统。如果从不变的主映像重新加载了全部或一部分客户操作系统(例如,从被执行的客户操作系统将客户操作系统重新加载到存储器中),那么可以清除导致进行中的故障的任何修改并且因此需要不是永久的。
[0038] 在一些例子中,如果操作系统作为在虚拟机内部的客户运行,客户操作系统可以仅仅用虚拟机维护的并且展示出的模拟硬件与客户操作系统交互,并且不直接与实体的计算机系统的硬件进行交互。另外,组成在虚拟机上运行的客户操作系统的软件可以被存储为只读形式,这阻挡了可能引起进行中的故障的修改。如果在客户操作系统运行时发生了对客户操作系统的任何修改,那么可以通过从只读存储映像重新加载该操作系统来除去对客户操作系统做出的该修改。
[0039] 此外,如果在虚拟机内部运行的客户操作系统与虚拟机的模拟的硬件进行交互,而不是与计算机系统的实体硬件进行交互,那么客户操作系统可以被使用在除了作为客户操作系统的设计对象的计算机系统以外的计算机系统上,因为在每个计算机系统上的虚拟机都可以提供客户操作系统所期望的模拟硬件接口,而与计算机系统的实体硬件方面的差异无关。每个计算机系统仅仅需要支持主机操作系统和提供所期望的虚拟硬件接口并且运行客户操作系统的虚拟机。因此,客户操作系统可以在比原本设计的更多种类的计算机硬件上运行。
[0040] 主机操作系统的特征可以包括,例如:
[0041] 1)硬件引导程序和硬件管理(CPU)能力;
[0042] 2)托管外围设备驱动(网络、存储器、视频等等)的能力;
[0043] 3)经由安全拉(pull)方法更新驱动的可选的能力;
[0044] 4)限制用户访问其自身的能力;
[0045] 5)相对于输出设备不可见的运行的能力(然而,更低层的网络封装扫描可以检测到该主机操作系统的存在,除非客户硬件被完全地抽象(abstracted));
[0046] 6)阻挡干扰关键字组合来防止客户操作系统干扰用户的能力;
[0047] 7)托管本地防火墙和IP路由表,并且执行SSL隧道以提供软件安全隧道的可选的能力;
[0048] 8)计划工作负载的能力;
[0049] 9)执行对资源和处理的监视的能力;
[0050] 10)运行虚拟化的软件的能力;
[0051] 11)运行实用的应用的能力;
[0052] 12)重新启动客户操作系统的能力;
[0053] 13)用客户操作系统提供和/或共享存储器的能力;
[0054] 14)在存储器中运行主机操作系统的可选的能力;
[0055] 15)向/从客户操作系统起动序列增加/除去程序的能力;
[0056] 16)托管用于客户操作系统的映像;
[0057] 17)将存储器/进程空间与客户操作系统隔离的能力;
[0058] 18)TCP/DHCP客户端;
[0059] 19)支持NTP客户端/服务器;
[0060] 20)禁用不需要的服务的能力;以及
[0061] 21)即插即用硬件检测。
[0062] 客户操作系统的特征可以包括,例如:
[0063] 1)提供用户接口服务;
[0064] 2)维护并且记录用户运行期间状态;
[0065] 3)重建想要的用户状态;
[0066] 4)保护网页浏览器/电子邮件/文字处理器;
[0067] 5)通过单个命令而不重新启动客户操作系统的方式安装应用和配置的能力;
[0068] 6)应该限制不需要用户修改的服务不被修改;
[0069] 7)运行基本病毒防护软件和本地防火墙软件的能力;
[0070] 8)即插即用硬件检测(虽然这可以被用于虚拟化的设备,而不是直接用于真正的硬件);
[0071] 9)网络协议支持;
[0072] 10)安装远程网络存储器的能力;
[0073] 11)对常规的最小负载相对小的存储要求(保证客户OS存储器+客户OS虚拟存储器+托管OS存储器<计算机系统可用的物理存储器);
[0074] 11)使系统信息模糊以便用户和间谍软件不可见所述系统信息的能力;
[0075] 12)隔离系统配置定义,以便在从映像刷新客户操作系统之后可以保持必要的用户状态;以及
[0076] 13)禁用关闭整个系统和特定服务的能力。
[0077] 图1是示例计算机系统100的方框图。计算机系统100包括处理器110、存储器120、存储设备130和输入/输出设备140。可以例如使用系统总线150来互连组成部分。处理器110能够处理指令以在计算机系统100内部执行。在一些实现中,处理器110是单线程处理器。在一些实现中,处理器110是多线程处理器。在一些实现中,处理器110是量子计算机。处理器110能够处理存储在存储器120中的指令或可以从存储设备130移动到存储器120中的指令。
在一些实现中,可以通过处理器110直接从存储设备130中执行指令。存储器120在计算机系统100内部存储信息。在一些实现中,存储器120是计算机可读介质。在一些实现中,存储器
120是易失性存储单元。在一些实现中,存储器120是非易失性存储单元。在一些实现中,存储器可以是任何两个或多种类型的存储器的组合。在一些例子中,存储器120包括分离的单元,可以通过地址访问每个单元。例如,存储器120可以被分成诸如字节或单词的单元,可以通过发送包括对应于一个或多个单元的地址的读取或写入命令来从所述一个或多个单元读取并且向其写入每个所述字节或者单词。
[0078] 存储设备130能够为系统100提供大容量存储器。在一些实现中,存储设备130是计算机可读介质。在各种不同的实现中,存储设备130可以包括例如硬盘设备、光盘设备、固态硬盘、闪存驱动器、磁带、“USB钥匙链(keychain)”驱动器、或其它的存储设备、或者他们中的任意两个或多个的任意组合。在一些实现中,计算机系统100具有许多存储设备130,例如硬盘设备和闪存驱动器。
[0079] 输入/输出设备140为计算机系统100提供输入/输出操作。在一些实现中,输入/输出设备140可以包括驱动设备,所述驱动设备被配置为接收输入数据并且将输出数据发送给其他的输入/输出外围设备160,例如键盘、打印机和显示设备。在一些例子中,输入/输出外围设备160是外部设备(例如与计算机系统100分离的实体设备),并且在一些例子中,输入/输出外围设备160与计算机系统100集成在一起(例如作为计算机系统100一部分的电子封装)。在一些实现中,可以使用移动计算设备、移动通讯设备及其他设备。例如,计算机系统100可以是移动设备,诸如膝上型计算机、平板计算机、个人数字助理、诸如智能电话的移动电话、或其他类型的移动设备。在一些实现中,输入/输出设备140可以包括网络通讯设备142(例如以太网卡)、串行通信设备(例如RS-232端口)和/或无线接口设备(例如802.11卡、
3G无线调制解调器、或4G无线调制解调器)中的一个或他们中的任意两个或多个的组合。网络通讯设备142允许计算机系统100进行通信,例如在网络144上发送与接收数据。例如,网络144可以是局域网(LAN)、诸如因特网的万维网,或用于数据通信的另一类型的网络。
[0080] 处理器110能够执行程序,所述程序是使得处理器110执行动作的指令的集合。例如,处理器110可以执行诸如主机操作系统170的操作系统的指令。我们使用术语操作系统宽泛地指任意类型、大小或配置的操作系统,例如包括一个程序或多个程序的集合,所述程序与计算机系统的资源(例如为处理器110、存储器120、存储设备130和输入/输出设备140)相互作用、通过其他程序管理那些资源的使用、以及提供对其他程序和计算机系统的用户有用的特征。当通过操作系统管理程序对计算机系统100的资源的使用时,程序可以被称为在操作系统上“运行”。在一些例子中,当激活计算机系统100(例如启动(bootup)计算机系统)时开始执行操作系统170,并且在计算机系统100维持活动的同时该操作系统170维持活动。操作系统可以采取任何多种形式,并且任意类型的操作系统可以用在这里描述的技术中。
[0081] 在一些实现中,在主机操作系统170上运行的多个程序中的一个可以是虚拟机172。在一些例子中,虚拟机172是计算机系统的软件模拟(simulation)。在其他事物中,虚拟机172模拟对应于实体计算机系统的硬件的虚拟硬件。例如,虚拟机172可以模拟处理器,例如,像计算机系统100的处理器110。虚拟机172也可以模拟其他类型的计算机系统资源,例如类似于计算机系统100的存储器120和输入/输出设备140的存储器和输入设备。虚拟机
172可以制成另一个操作系统(客户操作系统176)可用的模拟(例如虚拟化)硬件174。操作系统176与模拟硬件174进行交互的方式与操作系统176可以与例如计算机系统100的实体系统的硬件交互一样,其中,操作系统176是在计算机系统100上作为单独的操作系统运行的客户操作系统176。
[0082] 操作系统176还可以提供对操作系统176上运行的程序以及对用户有用的特征。以这种方法,操作系统176可以使用计算机系统100的服务而不直接访问那些服务。反而,虚拟机172用作操作系统176和该服务之间的媒介物。例如,当操作系统176访问虚拟机的模拟硬件时,操作系统176直接是模拟硬件的直接访问服务,但是仅仅间接使用下层的实体硬件。作为间接访问的一个示例,操作系统176可以访问模拟硬件的硬件地址,通过虚拟机172将该硬件地址翻译为实体硬件的不同的硬件地址。(在一些实现中,使用了地址转换以外的其他技术。)相反,在直接访问中,操作系统176将通过访问分配给实体硬件的硬件地址来直接操作实体硬件设备。虚拟机172可以在对计算机系统100的服务的使用上规定限制,例如,如果操作系统176具有对计算机系统100的服务的直接访问,那么将不会存在限制。可以对屏幕设计这些限制,或者可以设计这些限制以通过在虚拟机172上运行的程序来保护服务和硬件不被预期不到的或故意的误用。
[0083] 在一些实现中,我们将在计算机系统100上运行的操作系统170称为“主机”操作系统,并且我们将在虚拟机172上运行的操作系统176称为“客户”操作系统。通过虚拟机,在虚拟机172上运行的客户操作系统176可以被称作“被托管(hosted)”。通常,当客户操作系统176在虚拟机172上运行时,客户操作系统176不需要被修改或被配置为容纳运行虚拟机172的主机操作系统170;而仅仅需要能够在该虚拟机上运行。以这种方法,客户操作系统176可以被称为“不觉察(unaware)”主机操作系统170。
[0084] 虚拟机172通过建立虚拟机172的模拟硬件174和运行虚拟机172的计算机系统100的实体硬件之间的对应来模拟硬件。(在一些实现中,模拟硬件设备被完全仿真,并且不对应于实体硬件设备。)例如,虚拟机可以通过将用于模拟处理器178的在客户操作系统176内部执行的指令翻译为计算机系统100的处理器110可执行的指令来模拟处理器。用另一个方式,将客户操作系统176执行为如同该客户操作系统176向模拟硬件174的模拟处理器178发布指令,但是虚拟机排列将要通过计算机系统100的实体处理器110真正执行的指令。客户操作系统176可以被设计为通过在模拟处理器178上运行而起作用,并且虚拟机172允许并且使能该客户操作系统176来使用实体处理器110执行操作。同时,虚拟机172可以防御主机操作系统170和计算机系统的实体硬件被侵入或损害,并且可以在变为理想的或必要的任何时间刷新运行虚拟机172的客户操作系统176。
[0085] 在一些例子中,虚拟机172为客户操作系统176分配存储器120的一部分122。客户操作系统176使用分配的存储器的该部分122,如同分配的存储器是虚拟机172呈现的模拟计算机系统上的全部并且是唯一的可用存储器。例如,虚拟机172可以维护客户操作系统176使用的模拟存储器地址并且将该模拟存储器地址转化为对应的分配给虚拟机172的存储器120的部分122的实际存储器地址。不可以通过客户操作系统176访问未分配给虚拟机
172的存储器120的另一个部分124。因此,在虚拟机172上运行的任何程序(包括客户操作系统176)不能破坏未分配给虚拟机172的存储器中存储的任何东西。
[0086] 组成主机操作系统170和客户操作系统176的可执行编码可以被存储在存储设备130上,并且被加载到存储器120中,并且可以在计算机系统100的运行期间被执行。在一些例子中,在存储设备130中或存储器120中存在的可执行编码可以来源于操作系统的磁盘映像132,134。磁盘映像例如是如同磁盘映像是诸如存储设备130的实体设备、可以在计算机系统100被安装和卸下的逻辑存储设备的表现。磁盘映像的一个示例类型被称为ISO映像。
在一些例子中,磁盘映像可以是可重写的,并且在一些例子中,磁盘映像可以是只读的。在一些实现中,磁盘映像包含安置多个其他程序的程序。在一些实现中,磁盘映像可以是那些的两个或多个的组合。
[0087] 例如,主机操作系统磁盘映像132可以包含安装主机操作系统170的可执行编码的程序,例如,将主机操作系统170可执行编码放置在计算机系统100的存储设备130上。在一些例子中,主机操作系统磁盘映像132可以被用于将主机操作系统170的可执行编码直接放置在计算机系统100的存储器120中,使得在存储设备130上没有可执行编码需要被存储或访问。在一些实现中,磁盘映像132包含准备好要在计算机系统100上执行的一个版本的主机操作系统170,一次加载到存储器120中,这样使得不需要安装程序。
[0088] 在一些实现中,可以通过一个或多个分离的存储设备提供存储设备130,并且还可以包括基于网络的数据存储,其中将数据存储在与计算机系统100分离的计算机系统中。在一些实现中,映像可以是存在于一个或多个文件系统中的一个或多个文件,或者也可以是归档文件,例如公知的ZIP和TAR格式。
[0089] 例如,我们提到“安装”操作系统,这可以包括例如将磁盘映像复制到存储器中的动作,例如将磁盘映像132复制到存储器120中。在一些例子中,主机操作系统170可以被一次性安置在计算机系统100上,并且保留在存储设备130上以便从存储器120通过计算机系统100多次连续使用,例如,对计算机系统100多次加电。在一些例子中,主机操作系统170仅仅被安装用于计算机系统100的单次使用,并且在每一次计算机系统100通电时,从主机操作系统磁盘映像132重新安装主机操作系统170。在一些实现中,可以从主机操作系统磁盘映像132将主机操作系统170重新安装到存储设备130并且随后安装到存储器120中。在一些实现中,可以将主机操作系统磁盘映像132直接复制到存储器120中。
[0090] 我们使用术语“单次使用”来包括例如响应于计算机系统100通电的单次实例而单次安装操作系统。每一次对计算机系统通电,或重新启动(有时称为重新启动),就发生计算机系统的单次使用和操作系统的单次安装。在一些例子中,主机操作系统磁盘映像132包含在主机操作系统170上运行的软件应用的可执行编码,例如虚拟机172的可执行编码。因为相同的磁盘映像132可以被使用多次,所以有时将可再用并且在安装或变化之间几乎不变化的磁盘映像132称为主映像。在一些例子中,在不同的设备当中,主映像是便携式的。例如,使用在计算机系统100上的主映像可以被复制并且用另一个计算机系统使用。相同的主映像可以被使用在许多不同的计算机系统上,条件是可以在每个计算机系统上运行该操作系统。
[0091] 客户操作系统磁盘映像134可以包含安装客户操作系统176的可执行编码的程序,用于单次使用或多次使用计算机系统100。可以从磁盘映像134将客户操作系统176安装在虚拟机172上,这样使得客户操作系统176在虚拟机172上运行。在一些例子中,客户操作系统磁盘映像134可以被用于将客户操作系统176的可执行编码放置在计算机系统100的存储器120中,使得在存储设备130上没有可执行编码需要被存储或访问。例如,可以通过虚拟机172指定,将客户操作系统176的可执行编码放置在存储器120的一部分122中,作为客户操作系统176可访问。
[0092] 在一些实现中,磁盘映像134包含准备要在计算机系统100上执行的一个版本的客户操作系统176,这样使得不再需要安装程序。在一些例子中,我们提到“安装”客户操作系统176可以是指将磁盘映像134复制到存储器120中而不运行安装程序的简单动作。在一些例子中,客户操作系统176可以仅仅被安装用于计算机系统100的单次使用,这样使得在每一次计算机系统100通电时,从客户操作系统磁盘映像134重新安装客户操作系统176。例如,主机操作系统170可以被配置为当计算机系统100被通电时重新安装客户操作系统176。在一些实现中,可以从客户操作系统磁盘映像134将客户操作系统176重新安装到存储设备
130并且随后安装到存储器120中。在一些实现中,可以将客户操作系统磁盘映像134直接复制到存储器120中。
[0093] 在一些例子中,在单次使用计算机系统100期间,还可以多次安装客户操作系统176。例如,每次终止并且重新激活虚拟机172时(这可能在单次使用计算机系统100期间多次发生)可以重新安装客户操作系统176。例如,可以以定期的或者不定期的进度终止并且重新激活虚拟机172,或者响应于主机操作系统170检测到的状态而终止并且重新激活虚拟机172,或者可以因为另一原因而终止并且重新激活虚拟机172。
[0094] 在一些实现中,同时运行多个虚拟机172的实例。程序的实例是执行中的程序的副本(例如,程序的可执行编码和数据结构的副本)。例如,虚拟机172的一个实例可以运行一个客户操作系统176的实例,并且虚拟机172的第二实例可以运行客户操作系统176或者不同的客户操作系统的第二实例。当终止虚拟机172的一个实例时,可以使用虚拟机172的第二实例向用户165呈现客户操作系统176的第二实例。如果虚拟机172的第二实例已经是活动的并且准备好使用,那么减少在客户操作系统176的实例之间进行切换所需的时间数量(例如,所述的减少是与在终止客户操作系统176的较早实例的之后,重新安装客户操作系统176的方案相比)。
[0095] 在一些例子中,在磁盘映像上可以使除了操作系统以外的其他程序可用。例如,存储设备130可以存储应用磁盘映像136(例如,第二主映像、第三主映像等等),每个磁盘映像存储安装软件应用实例的程序。这里,我们使用术语软件应用来包括例如除了操作系统以外的其他程序,例如可以向计算机系统100的用户165提供功能和特征的程序(所述用户为例如,使用输入/输出外围设备160操作计算机系统100的用户165)。
[0096] 软件应用程序的例子包括网页浏览器、电子邮件程序、文字处理器或者另一类型的程序,或者两个或者多个那些的任意组合。在一些例子中,应用磁盘映像136(有时称为程序包)可以包含用于在客户操作系统176上运行的软件应用138的安装程序137。例如,当从磁盘映像134安装客户操作系统176时,可以从磁盘映像136安装各自的软件应用以在客户操作系统176上运行。例如,安装在客户操作系统176的软件应用,例如,被安装在存储器上客户操作系统176可访问的软件应用,可以在客户操作系统176上运行。虽然客户操作系统176在虚拟机172上运行,但是诸如软件应用的程序180以如同客户操作系统176是在诸如计算机系统100的实体系统上运行一样(尤其是考虑到他的用户)的同样方式运行。
[0097] 在单次使用计算机系统100的期间,可以重新安装(这个处理有时被称为刷新)客户操作系统176多次。例如,主机操作系统170可以开始客户操作系统176的重新安装。在一些实现中,主机操作系统170可以终止客户操作系统176的执行,从客户操作系统磁盘映像134开始客户操作系统176的重新安装,并且重新加载客户操作系统176用于执行。这个终止、重新安装并且重新加载客户操作系统176的处理有时被称为刷新客户操作系统176。
[0098] 刷新客户操作系统176可能有多种目的之一或者这些目的的两个或多个任意组合。在一些例子中,在客户操作系统176的运行期间,可能以有害的方式改变组成客户操作系统176的可执行编码。我们有时将这种有害的修改称为损害操作系统的完整性。例如,程序180可能已经以致使客户操作系统176以料想不到的方式改变了客户操作系统176。该料想不到的方式可能是有害的,例如导致删除存储设备130存储的数据,或者将存储设备130存储的数据暴露给未被授权访问该数据的实体(例如,可能使用网络144访问计算机系统100的实体)。
[0099] 做出有害改变的程序可以是用户165使用的软件应用,例如或者该程序可以是诸如病毒或者特洛伊木马的恶意程序。这里,如果,例如程序或者指令致使诸如删除数据、损害计算机系统100或者将数据暴露于未被授权的实体,我们则将该程序或者指令称为“恶意的”。如果客户操作系统176已经被改变,则当刷新客户操作系统176时除去这些改变。主机操作系统170可能生成指令来刷新客户操作系统176,以减轻由对客户操作系统176进行的料想不到的修改所引起的任何损害。例如,主机操作系统170可以以定期的间隔刷新客户操作系统176,诸如一小时一次、一天一次、或者另一间隔、或者随机间隔、或者两个或多个这些的一些组合。在一些实现中,主机操作系统170可以监视客户操作系统176的修改或者故障(例如,客户操作系统176料想不到的行为)并且当检测到修改或者故障时刷新客户操作系统176。
[0100] 在一些实现中,仅仅刷新一部分客户操作系统176并且不刷新一部分客户操作系统176。例如,主机操作系统170或者另一个系统可以识别已经被恶意改变或者相反的被指定刷新的一部分客户操作系统176。该部分客户操作系统176可以是客户操作系统176的组成部分,诸如操作系统核心、设备驱动、实用软件应用或者另一组成部分。在一些例子中,计划在不同的时间刷新客户操作系统176的不同部分。
[0101] 在一些实现中,在执行磁盘映像中包含的任何程序之前,可以将任何或者全部磁盘映像132、134、136复制到存储器120。例如,主机操作系统170可以将客户操作系统磁盘映像134复制到存储器120(例如,从存储设备130复制)。如果在单次使用计算机系统100期间,主机操作系统170多次访问客户操作系统磁盘映像134,例如重新安装客户操作系统176,则客户操作系统磁盘映像134将中存储器120中可用。在一些例子中,当客户操作系统磁盘映像134在存储器120中可用时,提高访问的速度。
[0102] 因为客户操作系统176在虚拟机172内部操作,所以在客户操作系统176上运行的程序180一般不能引起对主机操作系统170的修改,因为虚拟机或者主机操作系统本身,或者他们两者遮蔽(screen)了对主机操作系统进行这种修改。因此,刷新客户操作系统176将除去在客户操作系统176上运行的程序180所引起的任何故障或者其他的恶意结果,并且将计算机系统返回到它的正常、想要的操作状态。
[0103] 在一些实现中,磁盘映像132、134、135和136对于主机操作系统170是可以访问的,并且对于客户操作系统176是不能访问的。以这种方法,如果任何恶意的指令致使客户操作系统176可访问数据的修改,那么将不会修改磁盘映像132、134、136中任何一个。例如,如果组成客户操作系统176的可执行编码被修改了,那么主机操作系统170可以从保持未被修改的客户操作系统磁盘映像134重新安装客户操作系统176。
[0104] 如果程序运行在主机操作系统170上,那么可以修改主机操作系统170和磁盘映像132、134、136。例如,诸如病毒的恶意程序可以导致对主机操作系统170或者磁盘映像132、
134、136的修改,或者诸如计算机系统的用户165使用的程序180的另一程序可以导致可能对主机操作系统170或者磁盘映像132、134、136的完整性有害的修改。在一些实现中,主机操作系统170被配置为减少或者最小化对主机操作系统170做出任何改变的任何机会,例如由另一程序引起的改变。
[0105] 在一些例子中,诸如在一个磁盘映像136上包含的软件应用的程序180可以导致可能对客户操作系统176的完整性有害的修改。主机操作系统170可以检测到该修改。例如,主机操作系统176可以对客户操作系统176的状态与之前它的状态的记录进行定期地比较,并且检测变化。当刷新客户操作系统176并且从磁盘映像136重新安装软件应用时,主机操作系统170可以选择不重新安装引起该修改的软件应用。主机操作系统170还可以选择删除包含软件应用的磁盘映像136以避免将来有害的修改。主机操作系统170可以以这种方法在检测到软件应用执行了任何恶意活动的时候禁用或者删除软件应用。可以警告用户软件应用是恶意活动的来源,例如以用户接口中的警告信息警告。
[0106] 在一些实现中,主机操作系统170可以被配置为计算机系统100的用户165不能访问。典型地,主机操作系统170可以包括使其能够在计算机系统100上(例如,在诸如计算机监视器、触摸屏或者其他设备的输入/输出外围设备160之一上)呈现用户接口162的功能。当使用那些功能时,用户接口162允许用户165与主机操作系统170进行交互,例如,来在主机操作系统170上安装并且运行软件应用,或者对主机操作系统170的配置做出改变。为了减少那些将危害主机操作系统的活动的机会,主机操作系统170的用户接口162可以被禁用,以便用户165不具有对主机操作系统170的访问。例如,可以修改或者配置主机操作系统
170以在计算机系统100上运行主机操作系统170时,不进行提供用户接口或者显示用户接口162的处理。
[0107] 在一些例子中,主机操作系统170被配置为在计算机系统100上运行并且在不存在来自用户165的输入的情况下,激活(例如加载并且执行)虚拟机172。当虚拟机172被激活时,主机操作系统170激活该客户操作系统176。例如,主机操作系统170可以将客户操作系统176加载到存储器120中并且在虚拟机172上运行它。在一些例子中,主机操作系统170从磁盘映像134安装客户操作系统176。当客户操作系统176已经被激活时,客户操作系统176进行提供用户接口并且在计算机系统100上显示用户接口164的处理。
[0108] 计算机系统100的用户165可以随后使用客户操作系统176的用户接口164与计算机系统100进行交互,例如,在计算机系统100上运行(在客户操作系统176上运行的)软件应用。因为主机操作系统170不是负责提供用户接口的软件并且不显示用户接口162,所以用户165不需要与主机操作系统170进行相互。进一步地,用户165可以不知道并且不需要知道主机操作系统170在计算机系统100上运行或者主机操作系统170不是向用户展示用户接口的实体。
[0109] 因为用户165不与主机操作系统170进行相互,所以主机操作系统170可以独立于用户165的任何动作来控制计算机系统100的服务(例如,硬件的资源或者特征或者功能)。例如,主机操作系统170可以独立于用户165的控制来使能或者禁用计算机系统100的服务。
[0110] 在一些例子中,如果计算机系统100在特定的地理或者网络可访问的区域(例如拥有计算机系统100的公司的办公楼)中被激活,那么主机操作系统170可以启动网络通讯设备142。如果主机操作系统170检测到计算机系统100的位置已经发生了变化(例如,使用GPS或者其他计算机系统100的位置服务),那么主机操作系统170可以禁用网络通讯设备142。以这种方法,计算机系统100仅仅在特定地理区域中对于网络服务可用。
[0111] 在一些例子中,主机操作系统170可以减少客户操作系统176对计算机系统100的服务的访问,但是不需要完全禁用那些服务。例如,如果主机操作系统检测到计算机系统100的位置已经发生了变化,那么主机操作系统170可以改变网络设备142的配置,以便网络通讯设备142不能被用来发送或者接收特定种类的数据,但是可用于发送或者接收其他种类的数据。例如,主机操作系统170可以改变网络通讯设备142的配置,以便被指定为敏感的或者秘密的数据仅仅能够在特定地理区域中被发送或者接收。
[0112] 在一些例子中,主机操作系统170可以使能或者禁用网络通讯设备142的一部分功能。例如,主机操作系统170可以为了安全原因禁用网络通讯设备142的功能。主机操作系统170可以被配置为不允许使用网络通讯设备142用于桥接两个网络。以这种方法,主机操作系统170不会允许网络通讯设备142进行从与网络通讯设备142通讯的一个网络与与网络通讯设备142通信的另一个网络之间的通信交换。如果一个网络是局域网(例如诸如公司或者政府机构的组织的内部网络),并且其他网络是广域网(例如因特网),那么在局域网上的通信不能被传输到广域网。因为计算机系统100的用户仅仅与客户操作系统176交互,所以计算机系统100的用户将不能绕过主机操作系统170或者网络通讯设备142的配置。可以为了提高安全的目的以其他方式配置网络通讯设备142。例如,网络通讯设备142可以被配置为作为单向防火墙运行,以此使得网络通讯设备142可以接收来自一个网络上的设备的网络通信,但是该网络通信不被传输到那个网络上的其他设备。在一些例子中,可以通过主机操作系统170或者网络通讯设备142或者两者对网络通讯设备142通信的一些或者全部网络通信进行加密。
[0113] 在一些例子中,主机操作系统170可以保证网络通讯设备142的一部分功能维持有效的。例如,网络通讯设备142可以允许网络服务与主机操作系统170、客户操作系统176或者两者进行交互。网络服务可以是允许实体访问计算机系统100的远程管理服务。例如,计算机系统100的管理员可以从与网络144通信的另一个计算机系统访问客户操作系统176的功能。主机操作系统170可以被配置为允许管理员使用远程管理服务访问客户操作系统176。因为计算机系统100的用户165不具有对主机操作系统170的访问,所以不能通过用户
165禁用远程管理服务。在一些实现中,主机操作系统170可以将计算机系统100的服务展示给客户操作系统176。服务可以包括可以通过客户操作系统176定址(从中读取、向其中写入或者两者)而不是响应于客户操作系统176定址虚拟硬件而通过虚拟机172定址的硬件。例如,主机操作系统170可以启动在客户操作系统上运行的程序180以访问计算机系统100的服务。可以选择服务来最小化程序180可以以恶意的方式使用所展示的服务,或者相反地致使主机操作系统170故障的危险。例如,主机操作系统170可以将服务展示给客户操作系统
176,例如将数据提供给程序180但是不从程序180接受数据或者仅仅以有限的方式接受数据的服务。例如,主机操作系统170可以展示例如程序180仅仅从摄影机接收视频数据的摄影机的服务。在一些例子中,主机操作系统170可以展示这样的服务,例如允许程序180接收关于计算机系统100发送和接收的网络通信的数据的网络监视服务。在一些例子中,主机操作系统170可以向客户操作系统176展示一部分服务并且拒绝客户操作系统176访问该服务的其他部分。例如,主机操作系统170可以向客户操作系统176展示一部分存储设备,这样使得在客户操作系统176上运行的程序180可以向一部分存储设备写入并且不向另一部分存储设备写入。
[0114] 在一些实现中,主机操作系统170可以以程序可以使用主机操作系统170的设备驱动的方式(例如向客户操作系统176上运行的程序180)展示服务。例如,如果程序180是视频会议程序,那么程序180可以使用摄影机设备驱动使得称为主机操作系统170可用。使用这种技术,程序180可以在不支持设备驱动使用该服务的客户操作系统176上起作用。对客户操作系统176进行的改变不需要影响程序180的功能,例如否则,如果设备驱动运行在客户操作系统176上,那么对客户操作系统176进行的改变将影响程序180与设备驱动进行交互的能力。用户可以升级客户操作系统176或者使用不同的客户操作系统176并且程序仍然可用服务,因为设备驱动和主机操作系统170保持不变。
[0115] 在一些实现中,主机操作系统170和客户操作系统176中的任一个或者两者是可以在计算机硬件的多个配置上运行的操作系统,有时被称为通用操作系统。因为使用了两个操作系统,所以可以基于对特征和能力的单独的要求的集合,选择这两个操作系统。
[0116] 在一些例子中,可以基于安全和可靠性的要求选择主机操作系统170。例如,主机操作系统170可以是基于Unix的操作系统或者类似Unix操作系统,例如Linux操作系统或者BSD操作系统。
[0117] 在一些例子中,可以基于用户接口要求或者软件应用有效性选择客户操作系统176。例如,客户操作系统176可以是Windows操作系统或者Mac OS操作系统或者*nix操作系统(例如,Unix、Linux、BSD、等等)。在不使用主机操作系统170的用户接口162的例子中,在选择或者配置主机操作系统中,不需要考虑主机操作系统170的用户接口能力。
[0118] 因为通过主机操作系统170管理在计算机系统100的虚拟机172和硬件(例如处理器110、存储器120及其他硬件)上运行的客户操作系统176,所以可以独立于在任何给定计算机系统100上可用或者不可用的服务(例如硬件)来选择客户操作系统176。可以例如取决于用户的偏爱,选择任何的多个客户操作系统。
[0119] 大量的和多种不同的计算机系统都可以寄存给定的客户操作系统和相关的应用,只要主机操作系统可以在全部不同的计算机系统上运行,并且可以通过主机操作系统将虚拟机托管在可以运行客户操作系统的每个计算机系统上。这使得客户操作系统和相关的应用程序高效地从一个计算机系统携带到另一个计算机系统。
[0120] 虽然图1示出了在单个计算机设备100上执行主机操作系统170和客户操作系统176的例子,但是在其他例子中,可以用多个计算机设备代替计算机设备100。例如,可以在第一计算机设备上执行主机操作系统170,并且在不同的第二计算机设备上执行客户操作系统。在这种示例中,通过客户操作系统176在第二计算机设备上使用虚拟化硬件174将导致通过主机操作系统170对第一计算机设备中包括的硬件(例如网络通讯设备)进行直接操作。
[0121] 图2是计算机系统200和存储设备210、220的方框图。计算机系统200可以是图1所示的计算机系统100的示例,并且存储设备210、220可以是图1所示的存储设备130的示例。在一些实现中,存储设备210、220中任一个或者两者是可附接到计算机系统100并且可以从计算机系统100分开的外存储器设备,有时也被称为可移去存储设备。例如,存储设备210、
220可以附接到计算机系统的设备接口,例如USB(通用串行总线)端口或者用于连接可移去存储设备的其他接口。在一些例子中,存储设备210、220的一个或者两者都没有实际上依附到计算机系统200。例如,可以通过例如图1所示的网络144的网络访问存储设备210、220的一个或者两者。在一些实现中,第一存储设备210包含主机操作系统磁盘映像212和客户操作系统磁盘映像214。磁盘映像212、214可以是图1所示的磁盘映像132、134的例子。主机操作系统磁盘映像212可用于在计算机系统200上(或者在主机操作系统可以运行的任何计算机系统上)安装主机操作系统202。客户操作系统磁盘映像214可用于在计算机系统200上(或者在主机操作系统提供能够运行客户操作系统的虚拟机的任何计算机系统上)安装客户操作系统204。例如,客户操作系统204可以运行在在主机操作系统202上运行的虚拟机上(例如图1所示的虚拟机172)。在一些实现中,可以将主机操作系统磁盘映像和客户操作磁盘映像存储在不同的设备上。
[0122] 在一些实现中,第一存储设备210被配置为自动地在计算机系统200上安装主机操作系统202。在一些实现中,计算机系统100被配置为识别磁盘映像212并且从第一存储设备210安装主机操作系统202。在一些例子中,可以将主机操作系统202安装到存储器或者计算机系统的存储设备130(图1)中。在一些实现中,第一存储设备210包含可用于从第一存储设备210引导计算机系统的形式的主机操作系统202的可执行编码。以这种方法,不需要将主机操作系统202安装在计算机系统200上。在一些实现中,主机操作系统磁盘映像212被用于将主机操作系统202安装在第一存储设备210上,该第一存储设备210随后可以用于引导计算机系统200。
[0123] 可以从客户操作系统磁盘映像214安装客户操作系统204。例如,可以安装客户操作系统204来在主机操作系统202上运行的虚拟机上运行。在一些例子中,主机操作系统202使得客户操作系统204被安装,例如发送命令或者触发过程来安装客户操作系统204。
[0124] 在一些使用的例子中,计算机系统200的用户206可以例如通过将闪速存储器插入USB端口中,将第一存储设备210连接到计算机系统200。安装主机操作系统202并且主机操作系统202开始在计算机系统200上运行并且执行虚拟机。安装客户操作系统204并且随后可以在虚拟机上运行并且呈现用户206可以用来进行交互的用户接口。从用户206的视角来看,计算机系统200显现为仅仅运行客户操作系统204。例如,如果操作系统204是微软的Windows,并且主机操作系统202是Linux,用户将具有计算机系统是运行在微软的Windows上的感觉,并且可能不会意识到主机操作系统202是Linux。
[0125] 用户206可以将计算机系统200运行得好像仅仅安装了客户操作系统204。例如,用户206可以通过与客户操作系统204的相互影响使用计算机系统200的硬件资源,例如输入/输出外围设备208。因为主机操作系统202管理与计算机系统200的硬件之间的交互,所以客户操作系统204不需要被配置为管理与计算机系统200或者输入/输出外围设备208之间的直接的交互。单个客户操作系统204可以与多种类型的计算机系统和多种类型的输入/输出外围设备及其他硬件一起使用,只要该计算机系统、输入/输出外围设备或者其他硬件是主机操作系统202支持的并且主机操作系统202运行可以运行客户操作系统204的虚拟机。用户206可以使用第一存储设备210来引导图2所示的计算机系统200以及其他计算机系统。在这个意义上,客户操作系统204变得容易在多个机器和多个种类的机器之间携带。客户操作系统204可以在与所设计的不同的类型的机器上运行。例如,客户操作系统204可能已经被设计为在例如桌面或者膝上型计算机的个人计算机上运行,但是使用这里描述的技术,该客户操作系统204可以在例如智能电话的移动设备上运行。
[0126] 在一些实现中,第二存储设备220包含客户应用磁盘映像222或者用户数据224或者两者。例如,客户应用磁盘映像222可用于在客户操作系统204上安装软件应用。用户数据224可以包含用于软件应用的数据,例如用户206生成并且操作的数据。在一些实现中,第一存储设备210是只读存储设备。例如,存储在第一存储设备210上(例如操作系统磁盘映像
212、214)的数据,可能是不可变的(例如为了安全或者稳定性的原因)。
[0127] 因为用户206可能希望具有对客户操作系统204不包括的软件应用的访问,或者因为用户206可能希望生成并且改变数据同时使用计算机系统200,所以用户可以使用第二存储设备220作为可重写的存储设备以及只读第一存储设备210。即使第一存储设备210不接受对它的数据的任何修改,用户206也自由地在第二存储设备220上放置软件应用和用户数据。第二存储设备220可以随后被用来不仅从一个计算机系统到另一个计算机系统移动操作系统,还移动用户的数据和应用,所述计算机系统包括不同类型的计算机系统。
[0128] 在一些实现中,计算机系统200使用网络访问第二存储设备220。例如,可以通过“云计算”服务提供第二存储设备220,其中“云计算”服务向计算机系统200的用户提供固定的或者可变数量的存储器。“云计算”是指使用例如因特网的网络提供服务的技术。第二存储设备220可以是云计算服务分配的存储器而不是实体设备。在一些布置中,计算机系统200可以具有使用例如USB的非网络通讯技术可访问的只读存储器,并且具有使用例如云计算服务的网络通讯技术可访问的可重写存储器。在这些布置中,计算机系统200不需要具有任何使用非网络通讯技术访问的可重写存储器,这样使得计算机系统200可用的全部可重写存储器是“云计算”存储器。例如,用户不需要携带实体可重写存储设备或者具有对该实体可重写存储设备的访问,可以丢失或者遗忘所述实体可重写存储设备,潜在地向用户提供安全性、简单性和机动性。
[0129] 图3是显示用于配置数据存储设备(例如图1所示的存储设备130或者图2所示的存储设备210)来启动(或者“引导”)计算机系统(例如图1所示的计算机系统100或者图2所示的计算机系统200)的示例过程300的流程图。
[0130] 在操作302中,生成主机操作系统磁盘映像。例如,磁盘映像可以是图1所示的主机操作系统磁盘映像132或者图2所示的主机操作系统磁盘映像212。
[0131] 在操作304中,将操作系统(例如,诸如图1所示的主机操作系统170的主机操作系统或者图2所示的主机操作系统202)安装到主机操作系统磁盘映像中。在一些例子中,可以执行用于操作系统的安装程序来生成配置版本的操作系统,有时被称为操作系统的安装。例如,操作系统可以被配置为在计算机硬件的特定配置上运行,诸如计算机系统的特定配置和输入/输出外围设备。在一些实现中,操作系统被配置为不向用户显示用户接口元件,例如因为用户将与客户操作系统交互并且没有操作系统用作主机操作系统。
[0132] 在操作306中,将虚拟机安装在主机操作系统磁盘映像上。可以将虚拟机配置为在主机操作系统上运行,例如,在主机操作系统磁盘映像上安装的操作系统上运行。在一些实现中,虚拟机被配置为在主机操作系统处于活动的任何时候都运行。在一些实现中,虚拟机的多个实例被配置为在主机操作系统处于活动时运行。在一些实现中,虚拟机被配置不显示用户接口元件(例如,否则将允许用户禁用客户操作系统或者虚拟机的按钮或者工具栏)。在一些实现中,虚拟机被配置为不接受对专用于虚拟机的输入。例如,虚拟机可以允许特定键击(或者用户在输入/输出外围设备上做出的其他输入)激活或者停用虚拟机的功能。当安装虚拟机时可以禁用专用于虚拟机的键击或者其他输入的组合。
[0133] 在操作308中,生成客户操作系统磁盘映像。例如,磁盘映像可以是图1所示的客户操作系统磁盘映像134或者图2所示的客户操作系统磁盘映像214。
[0134] 在操作310中,将操作系统(例如,诸如图1所示的客户操作系统176的客户操作系统或者图2所示的客户操作系统204)安装到客户操作系统磁盘映像中。例如,可以执行用于操作系统的安装程序来生成操作系统的安装。因为这个操作系统将被用作客户操作系统,可以将操作系统配置为在安装在主机操作系统上的虚拟机上运行。在一些实现中,被用作客户操作系统的操作系统的配置不包括对操作系统的任何修改,例如对操作系统的可执行编码的修改。
[0135] 在操作312中,主机操作系统被配置为向文件系统提供对客户操作系统的访问。通常,操作系统的一个功能是通过应用程序提供对存储器中的文件系统中组织的文件的访问。访问存储在文件系统中的文件可以启动具有访问的程序而导致文件的污染。为了减少这个机会,在一些例子中,客户操作系统使用与主机操作系统不同的文件系统来读取并且写入数据。
[0136] 主机操作系统可以被配置为以客户操作系统可用的格式提供对数据存储器(例如图1所示的存储设备130或者图2所示的存储设备220)保持的文件系统的文件的访问。在一些例子中,客户操作系统使用诸如SMB(服务器消息块)的基于网络的文件系统协议。主机操作系统可以被配置为使用基于网络的文件系统协议来提供对客户操作系统的访问。在一些实现中,主机操作系统可以被配置为启动使用基于网络的文件系统协议可访问的辅助存储设备(例如,图2所示的第二存储设备220)。
[0137] 在操作314中,主机操作系统被配置为刷新客户操作系统。在一些实现中,主机操作系统可以被配置为以定期的进度或者定期的间隔刷新客户操作系统。例如,主机操作系统可以被配置为使用周期性终止客户操作系统、(例如从磁盘映像)重新安装客户操作系统、并且开始客户操作系统的新的实例的进度表程序。主机操作系统可以一天一次、一小时一次、一周一次或者任何其他的间隔时间这样做。在一些实现中,客户操作系统可以以不定期的或者不根据定期的进度的间隔刷新。
[0138] 在一些实现中,可以基于一个或者多个内部或者外部触发事件或者他们的组合刷新客户操作系统。在一些例子中,主机操作系统被配置为在主机操作系统检测客户操作系统中存在的状态时,刷新客户操作系统。在一些例子中,该状态可以是安全状态,例如检测到客户操作系统中的病毒或者其他恶意程序。在一些例子中,状态可以是例如在客户操作系统中的错误、客户操作系统中的无限循环、操作系统中的存储器溢出、导致客户操作系统停止操作(有时称为崩溃或者冻结)的状态的故障状态,或者其他类型的故障状态。
[0139] 在操作316中,主机操作系统被配置为将软件应用安装在客户操作系统上。在一些实现中,软件应用被存储在磁盘映像中,例如图1所示的磁盘映像136或者图2所示的磁盘映像222。例如,磁盘映像可以被存储在辅助存储设备上,诸如图2所示的第二存储设备220。在一些实现中,每次刷新客户操作系统时,将软件应用重新安装在客户操作系统上。
[0140] 在操作318中,主机操作系统磁盘映像和客户操作系统磁盘映像被复制到存储设备。在一些例子中,存储设备可以是诸如图2所示的存储设备210的可移去存储设备。在一些实现中,存储设备被配置为当将存储设备附接到计算机系统时引导计算机系统。在一些例子中,存储设备可以被配置为当计算机系统通电时,将主机操作系统磁盘映像复制到存储器或者计算机系统的数据存储器。在一些例子中,存储设备可以被配置为当磁盘映像维持在存储设备上时,允许从主机操作磁盘映像执行主机操作系统。例如,存储设备可以被配置为表明作为可启动的存储设备的计算机系统,并且该计算机系统可以从存储设备执行主机操作系统。
[0141] 图4是显示用于生成软件应用磁盘映像(例如,图1所示的磁盘映像136或者图2所示的磁盘映像222)的示例过程400的流程图。磁盘映像可以被放置在将要安装在客户操作系统上(例如图1所示的客户操作系统176或者图2所示的客户操作系统204)的数据存储设备上(例如图2所示的存储设备220)。
[0142] 在操作402中,客户操作系统被激活。客户操作系统可以运行在主机操作系统上运行的虚拟机上。在一些例子中,客户操作系统被刷新并且随后被激活,以便客户操作系统以已知状态运行(例如,不存在用户或者软件应用做出的任何改变),
[0143] 在操作404中,安装封装记录器被激活。安装封装记录器跟踪随着安装软件应用而对操作系统做出的改变。例如,安装封装记录器保持跟踪在安装期间在操作系统中增加或者改变了什么数据。安装封装记录器生成可以在稍后的时间里重复安装软件应用的安装封装。例如,安装封装记录器可以生成包含这样软件的安装封装,在执行该软件时,安装软件应用。在一些例子中,安装封装是具有结构的存储文件。例如,安装封装可以是MSI文件。
[0144] 在操作406中,软件应用被安装。软件应用可以是图1所示的程序180的示例。可以使用这样的安装程序安装软件应用,所述安装程序将软件应用的可执行编码和数据放置在客户操作系统可访问的存储器中,并且将该软件配置为在客户操作系统上运行。在一些例子中,软件应用具有可以配置的用户设置,例如用户接口设置。在一些例子中,软件应用具有对存储数据的位置的设置。例如,软件应用可以被配置为在特定存储设备上储存数据。
[0145] 在操作408中,停用安装封装记录器并且生成安装封装。在一些例子中,安装封装可以被放置在磁盘映像中,例如图1所示的客户应用映像136之一或者图2所示的客户应用映像222。
[0146] 在操作410中,将安装封装复制到存储设备。例如,存储设备可以是图2所示的存储设备220。如果存储设备是可重写存储设备,那么存储设备可以包含其他安装封装并且可以在稍后将其他安装封装放置在存储设备上。
[0147] 图5是包含计算机系统和操作系统的微芯片(microchip)500的示意图。例如,微芯片500可以是图1所示的计算机系统100的示例。微芯片500具有对应于其他类型的计算机系统组件的嵌入组件。微芯片500可以包括中央处理单元502,例如能够运行通用操作系统的中央处理单元。
[0148] 微芯片500可以包括存储器504,例如可以通过通用操作系统定址的随机访问存储器。例如,存储器504可以是图1所示的存储器120的示例。
[0149] 微芯片500可以包括操作系统映像506。操作系统映像506可以包含可以在微芯片500上运行的操作系统。例如,操作系统映像506可以是包含如图1所示的主机操作系统170、虚拟机172和客户操作系统176的一个或者多个磁盘映像。
[0150] 微芯片500可以包括输入输出端口508、510。例如,输入输出端口508、510可用于连接输入/输出外围设备,例如图1所示的输入/输出外围设备160。微芯片500可以包括输入/输出固件512。例如,输入/输出固件512可以独立于操作系统来管理与(例如连接到输入输出端口508、510的)输入/输出外围设备的交互。微芯片500可以包括显示适配器514。例如,显示适配器可以连接到诸如计算机监视器或者电视屏幕或者投影仪或者其他类型的显示系统的显示系统,以向微芯片500的用户显示用户接口部件。
[0151] 微芯片500可以包括网络接口516。网络接口516可以是图1所示的网络通讯设备142的示例。网络接口516可以连接到诸如局域网(LAN)或者因特网或者两者的网络,或者连接到其他类型的网络。例如,网络可以是图1所示的网络144。在一些例子中,网络接口516是与使用实体连接的电线的网络进行通信的有线接口。在一些例子中,网络接口516是与使用无线信号的网络(例如使用频率无线频率(RF)信号)进行通信的无线接口。微芯片500可以包括扩展总线518。例如,扩展总线518可以连接到外部外围设备,例如以诸如通用串行总线(USB)的通讯标准运行的外围设备。微芯片500可以包括存储卡接口520。存储卡接口520可以连接到可以用作存储器的存储卡,例如用来存储在微芯片500上运行的操作系统操作或者生成的数据。因为运行在微芯片上的操作系统可以被存储在只读介质上,所以微芯片不需要诸如大容量可重写硬盘驱动器的硬件。
[0152] 图5所示的微芯片500可以向用户提供与通用计算机相同的功能。通用计算机可以具有分离的组件,诸如母板(motherboard)、硬盘驱动器、可去除媒体驱动器和扩充端口,并且可以被包含在具有桌面或者膝上型形式因素的外壳中。微芯片500可以被容纳在更小的封装中。例如,微芯片500和相关的组件可以被容纳在单个集成电路封装中(例如引脚网络阵列封装、触电阵列封装、超小型封装或者其他类型的集成电路封装)。
[0153] 如图6所示,微芯片500可以被容纳在手持式设备600中。例如,该手持式设备600可以采取“keychain(钥匙链)”大小的设备的形式。在一些例子中,手持式设备600还可以具有第二个功能。例如,手持设备600可以是这样的移动电话或者个人数字助理(PDA),其具有不是这里描述的功能的功能,该功能包括可以不与微芯片500的功能相关的功能。例如,手持式设备600可以能够打电话。在一些例子中,手持式设备600可以是数字钟或者其他个人电子设备的形式。
[0154] 在一些例子中,手持式设备600可以连接到多种类型的显示系统和输入/输出外围设备上。例如,相同的手持式设备600可以连接到具有显示器和输入/输出外围设备的计算机监视器、键盘和鼠标602、膝上型计算机监视器、键盘和触控板604、个人数字助理或者智能电话606、电视608,平板计算机610或者其他类型的系统。在一些例子中,手持式设备600可以连接到现有的计算机系统(例如膝上型计算机)并且与该现有的计算机系统的显示器和输入/输出外围设备进行连接。不需要使用该现有计算机系统的组件,诸如该现有计算机系统的微处理器和硬盘驱动器,虽然在一些实现中可以使用他们。在一些例子中,可以和手持式设备600一起使用多种显示系统或者输入/输出外围设备。例如,手持式设备600可以连接到感应条624,其允许手持式设备600的用户620使用指套622来指示光标移动或者用他的手指在用户接口上选择,而不是使用诸如鼠标或者触控板的指示设备。例如,感应条624可以跟踪指套622的移动。在一些例子中,手持式设备600可以使用显示设备显示键盘映像626。用户620可以使用指套622做出对应于在键盘映像626上按下按键的手势。以这种方法,即使手持式设备600运行被设计为用诸如键盘和鼠标的输入/输出外围设备操作的通用操作系统,也不需要与手持式设备600一起使用诸如键盘和鼠标的输入/输出外围设备(虽然当然可以使用他们)。因为可以与手持式设备600一起使用诸如显示器和输入/输出外围设备的广泛法内的外围设备,所以可以选择比设计用于特定计算机系统使用的外围设备更便宜的外围设备。
[0155] 在一些例子中,可以将类似图5所示的微芯片500的设备与个人计算机的母板集成在一起。例如,可以将操作系统映像506放置在只读存储介质中并且该只读存储介质可以被永久地与母板集成在一起。在一些例子中,主机操作系统可以在微芯片500的中央处理单元502上运行并且客户操作系统可以在母板的中央处理单元上运行。虚拟机可以是可选的例子,其中,在与主机操作系统不同的中央处理单元上运行客户操作系统。
[0156] 这里描述的技术可以用于多种方案。在一个示例方案中,图5所示的微芯片500可以与诸如口袋寻呼机的手持式设备集成在一起。该口袋寻呼机可以是图6所示的手持式设备600的示例。在家的技术人员(诸如信息技术支持技术人员)在寻呼机上接收请求技术人员对技术支持事件进行援助的消息。技术人员可以将他的寻呼机插入到家庭电视中,并且开始使用电视与寻呼机是运行的操作系统接口。
[0157] 在另一个示例方案中,用户具有类似图6所示的手持式设备600的手持式设备。她在工作日期间,通过将手持式设备连接到计算机监视器和输入设备,来在她的工作站网络上工作。在白天结束时,她可以离开办公室并且搭火车回家。当她上火车时,她将手持式设备连接到她的手持式电话并且使用它的接口特征来将电话转为完全成熟的通用计算机。作为另一个示例,手持式电话本身可以合并图500所示的微芯片500,并且因此,手持式电话可以在工作日期间连接到计算机监视器和输入设备,并且也可以被用作为便携式计算机。
[0158] 在另一个示例方案中,如图1所示的计算机系统100具有集成的可视会议服务,其独立于选定的在计算机系统100上运行的客户操作系统176工作。该可视会议服务可以在主机操作系统170上运行并且可以是计算机系统100的用户可用,而与运行哪个客户操作系统176和用户使用哪个客户操作系统176无关。
[0159] 在另一个示例方案中,如图1所示的计算机系统100具有集成的屏幕共享服务,其独立于选定的在计算机系统100上运行的客户操作系统176工作。屏幕共享服务可以在主机操作系统170上运行并且允许在网络144上的另一个用户觉察客户操作系统176的当前视图。另一个用户可以是被打电话叫来用客户操作系统176补救问题的支持技术人员。
[0160] 在另一个示例方案中,如图1所示的计算机系统100可以用于学术环境。主机操作系统170可以被配置为筛选通过网络通讯设备142进来的通信。例如,可以过滤或者阻挡不适当的或者非学术资料。学生仅仅具有对客户操作系统176的访问,因此不能绕过网络配置。
[0161] 在另一个示例方案中,如图1所示的计算机系统100可以用于安全-敏感环境,诸如政府机构。主机操作系统170可以被配置为筛选通过网络通讯设备142进来的通信。例如,可以防止通过网络通讯设备142传送被识别为敏感或者秘密的数据。在一些例子中,主机操作系统170可以被配置为仅仅在网络144上接收数据并且不在网络上发送数据。用户或者雇员仅仅具有的客户操作系统176的访问,因此不能绕过网络配置。
[0162] 在另一个示例方案中,可以将图1所示的计算机系统100新增加到局域网,例如,诸如公司的组织的局域网。计算机系统100可以被配置为运行主机操作系统170、虚拟机172和客户操作系统176来支持计算机系统100的安全。
[0163] 在另一个示例方案中,图1所示的计算机系统100可以被配置为使用在网络144上可用的代理服务器发送并且接收网络通信。代理服务器是接收并且转播网络通信的实体,例如使网络通信的来源模糊,或者加密网络通信。主机操作系统170可以被配置为将全部网络通信发送给选择的代理服务器。计算机系统100的用户仅仅具有的客户操作系统176的访问,因此不能绕过网络配置。
[0164] 在另一个示例方案中,图1所示的计算机系统100可以被配置为在两个网络144上运行但不是同时运行。一个网络可以是诸如因特网的外部网络并且另一个网络可以是隔离了与外部网络通信的内部网络。主机操作系统170可以被配置为如果计算机系统100正在使用一个网络,则禁用对另一个网络的访问。计算机系统100的用户仅仅具有的客户操作系统176的访问,因此不能绕过网络配置。
[0165] 在另一个示例方案中,图1所示的计算机系统可以被配置为作为位置定位系统设备运行。计算机系统100可以合并确定计算机系统100的位置的一个或者多个设备。设备可以包括使用全球定位系统(GPS)技术或者不使用GPS技术的技术的设备。例如,该设备可以包括加速度传感器或者测量计算机系统100的相对运动的其他设备。主机操作系统170可以被配置为使用设备来计算计算机系统100的位置。可以使用除了位置定位系统设备以外的其他类型的设备。例如,该设备可以测量天气条件、诸如汽车交通的附近实物的运动、或者其他类型的数据。如果计算机系统采取图5所示的微芯片500的形式,可以将许多微芯片放置在例如房间、建筑、旷野、或者其他位置的实际位置上。每个微芯片500可以使用上面描述的任何定位技术确定它自己的位置。微芯片500可以彼此通信来向彼此提供位置数据,例如来改善精确性或者来证实位置数据。在一些例子中,可以测量潜在的这些对多个设备的通讯传输作为对相对位置或者确定物理障碍的指示。
[0166] 在其他示例方案中,可以将图5所示的微芯片500与诸如条形码扫描器的手持式设备集成在一起。条形码扫描器可以是图6所示的手持式设备600的示例。条形码扫描器可用于扫描具有条形码或者诸如QR编码的其他编码的物品。因为条形码扫描器具有计算机系统的能力,所以条形码扫描器可以通过网络访问关于物品的数据并且显示该数据。如果该物品是包裹,条形码扫描器可以显示装运信息,并且如果物品是产品,条形码扫描器可以显示产品手册。
[0167] 在其他示例方案中,图1所示的计算机系统100可以具有在需要授权密钥来运行的客户操作系统176上运行的程序180。可以通过程序180的制造商提供该授权密钥并且确保只有程序的购买者才可以运行程序,作为防止软件侵权的保护。可以通过主机操作系统170将该授权密钥存储在主机操作系统170可访问的数据存储器中并且在运行程序180时将该授权密钥提供给客户操作系统176。在这种布置下,用户不能访问授权密钥来复制或者修改授权密钥。例如,用户不能将授权密钥复制到其他计算机系统而未授权就运行程序180。
[0168] 在另一个示例方案中,可以通过包括被放置在微型计算机系统或者只读设备内部的主机或者客户操作系统内部的软件来防止软件侵权。这将使未被授权的复制很难执行,因为将软件嵌入到计算机系统内部,并且购买授权的复制将会比试图通过复制另一个相当的硬件设备来进行未被授权的复制更便宜。通过加密和哈希算法可以更加增强这种保护。
[0169] 在另一个示例方案中,图1所示的计算机系统100可以被配置为与数据存储系统接口,例如使用输入/输出设备140之一或者使用网络通讯设备142可访问的数据存储系统。如果数据存储系统包含认为是敏感的数据,那么在计算机系统100上运行的主机操作系统170可以被配置为禁用将数据写入可写入存储器(例如存储设备130)的全部操作。由此,不能通过计算机系统100的用户165将数据从数据存储系统复制到另一个数据存储器设备。因为用户165不具有对主机操作系统170的访问,所以用户165不能绕过主机操作系统170的配置来允许复制数据。这将允许计算机系统连接到内部和外部网络/存储器两者并且允许从内部网络/存储器向外部网络/存储器传输敏感数据。可以通过将文档发现代理放置为将发现计算机系统本地存储器上的文件(包括存在于存储器中的虚拟存储器、电子邮件、文件档案、系统配置/定制等)的计算机系统的一部分,将所述文档发现代理分类并且将他们放置在中央电子发现系统的内部来增强这种功能。这将提供文档保护,防止未被授权的使用/分配以及在保存/备份数据之前的意外删除。一旦相对于用户透明的重新连接,这些代理就可以从中央储存库下载文件。这将为计算机系统增加冗余而不需要其他的本地冗余硬件/软件。
[0170] 在另一个示例方案中,可以通过在计算机系统电路(诸如单个芯片系统)内部的永久只读存储器内部包括哈希识别来防止计算机系统的未被授权的复制。随后,即使当实际复制该芯片时,它也不会起作用,因为哈希识别不匹配。通过嵌入将制成不同于原型的复制的ID的识别生成时间戳可以提高这种技术。此外,代替这个时间戳,可以使用另一个环境参数,其将会使成功的复制该识别很难。
[0171] 在另一个示例方案中,通过不许用户或者客户操作系统修改用于用户不能访问的主机操作系统内部存储的客户操作系统的映像,可以保证计算机系统不得到将会永久损害存储在计算机系统上的数据的病毒。计算机系统可以被配置为在计算机系统起动时或者在客户操作系统起动之前要求扫描并且和病毒去除。主机操作系统可能强制运行/更新病毒保护软件来防止运行时间的病毒。
[0172] 在另一个示例方案中,通过主机操作系统向客户操作系统呈现虚外围设备或者设备、并且使主机操作系统经由网络服务发送和接收的数据更新它本身(从客户操作系统看来将是无缝的),计算机系统可以延伸硬件支持用于新创的硬件/固件更新而不修改客户操作系统。这将在安全性和设备支持方面扩展客户操作系统,而不需要修改或者很多情况下中断客户操作系统。
[0173] 在另一个示例方案中,通过制成具有双核的电路,存在没有一点故障的冗余计算机系统,其中电路的第二核将共享对系统存储器的访问用于存储器复制。这将允许比当前冗余系统设计具有更强大的性能和在这种系统的制造中的成本降低,所述当前的冗余系统设计包括单独的冗余硬件组件、冗余控制器来整合容错,或者大尺寸的铜线(copper traces)等。这可能是因为操作系统映像是静态的,并且由于主机操作系统和客户操作系统可以存在于中央处理单元内部,并且核心客户操作系统功能不需要使用辅助的I/O子系统,所以对在处理器和物理存储器之间用于数据传输的介质组件(BUS)和对辅助I/O子系统的需求将会减少。
[0174] 在另一个示例方案中,通过上面描述的其中第二核心具有对可写存储库的访问的冗余双核心计算机系统设计(由于向这种可写存储器传送数据可能比进程间通信更慢,所以那些写入可能经由总线缓存),可以持续主处理单元的有源存储状态而不影响主处理单元(核心)的性能。这可能是因为操作系统映像是静态的,并且由于主机操作系统和客户操作系统可以存在于中央处理单元内部,并且核心客户操作系统功能不需要使用辅助的I/O子系统,所以对在处理器向物理存储器之间用于数据传输的介质组件(BUS)和对辅助I/O子系统的需求将会减少。
[0175] 在另一个示例方案中,维护客户操作系统的多个运行实例。在诸如错误(bug)或者病毒的错误状态导致当前活动的实例失败的事件中,系统可以无缝地转换到不同的运行实例,依赖以上描述的客户操作系统和用户数据的逻辑分类,快速地将用户状态转换到新的实例。
[0176] 在另一个示例方案中,通过同时运行多个版本的客户操作系统,并且依赖于以上所述的客户操作系统和用户数据的逻辑分离,以利用不同版本的客户操作系统并且切换到实例来快速地将用户状态转换到实例,可以以不中断用户的方式执行客户操作系统的实时更新。
[0177] 在另一个示例方案中,可以维护不同类型和/或多个版本的客户操作系统的多个实例。这些实例可以通过在每个实例中安装网格软件代理来互相操作。
[0178] 在另一个示例方案中,可以通过运行多个客户操作系统的多个实例在各种通信/应用协议之间生成桥,所述多个客户操作系统各自支持多种协议并且经由公共协议在他们之间内部运行。例子包括在注入NetBIOS、TCP/IP和SNA、IP4、IP6、邮件协议、隧道、EDI、诸如DDE的网络使能进程间通信等等的网络协议当中生成路由/互操作性。可以在生成下一代网络切换中使用这个技术。
[0179] 在另一个示例方案中,通过在各种协议之间生成桥,可以加快进程间进程通信(IPC)协议。例如,诸如DDE的一些协议在IPC生成中是极有效率的,同时,其他的协议在路由和负载管理中更有效率。使用单个协议可能导致部分协议虚弱的瓶颈,但是在单个操作系统内部转化将导致一些性能上的下降。相反,集成管理各种协议和/或在多处理核心当中分布工作荷载的多客户操作系统可以消除那些瓶颈。
[0180] 在另一个示例方案中,通过有本地协议能力的多个客户操作系统当中分布生成/检索,可以使用本地协议对各种内容执行内容生成/检索。
[0181] 在另一个示例方案中,通过将操作系统转换为主机操作系统并且通过包括已经具有想要的功能或者具有生成这种软件的工具/开发资源的客户操作系统来引入额外的软件功能,可以将额外的软件功能添加到操作系统。可以通过转换软件来扩展这种能力,所述转换软件可以分析引入的软件组件的功能并且将他们转换为对于主机操作系统来说是本地的格式或者其他公用格式。
[0182] 在另一个示例方案中,消费者可以通过自动计算机制造系统或者对新生成的计算机系统的PROM的更新来选择客户操作系统和安装在其上的软件。
[0183] 在另一个示例方案中,通过实际附接软件盒(attaching software cartridges)/文件而不对核心客户操作系统做出任何修改,可以在客户操作系统上安装软件,并且通过拆下软件盒/清除文件来卸载该软件。
[0184] 在另一个示例方案中,以上所述的主机操作系统和客户操作系统可以被实体化而不使用管理程序。这个公开中描述的至少一个设计的普通原理是解耦主机操作系统和客户操作系统以及对他们的角色的分离。例如,主机操作系统提供整个系统的硬件资源、一般服务、维护策略和增强服务质量(QoS);并且客户操作系统在客户操作系统本身分离为分离的结构的同时维护用户交互和状态、安装在客户操作系统的应用/结构集群(Application/ConfigurationGroup,ACG)和用户数据。
[0185] 由此,包含主机操作系统的数据结构可以在各种主机/客户对上是静态的。此外,用于客户操作系统的数据结构在各种主机/客户对之间可以是共用的。在每个主机/客户对之间,应用/配置群可能不是共用的,但是是可重复的。用户数据通常是对于主机/客户唯一的,但是通常是相对小的尺寸和高度的压缩。因此,可以从这些数据结构重建位于任何地理位置(物理地或者逻辑地)的主机/客户对实例在一些例子中,可以提供使用网格和云服务执行认证、用户数据检索和主机/客户对构建的整体管理层(OML)。在这种例子中,不要求用于主机/客户对的主机操作系统和客户操作系统的各自计算机设备位于物理临近的位置。例如,客户操作系统的实例可以存在于最小操作环境内部,诸如根据靠近用户的预期被指定为“虚拟BIOS”的资源和特征的最小主机,并且将资源请求发送给上述网格或云,以向主机计算机设备分配运行时间操作的期间,在主机/客户对中的主机角色。可以经由嵌入到客户操作系统实例或者OML内部的API包括的虚拟驱动中的应用编程接口(API)执行客户和主机操作系统之间的通讯。
[0186] 在另一个示例方案中,主机操作系统可以执行对客户操作系统应用组件的扫描并且开始或者执行对有缺陷的/被侵染的应用或者应用组件的去除。替选地,可以通过隔离程序代替所述去除,在所述隔离程序中,组件被移动到客户操作系统不会利用他们的另一个位置,并且可以再稍后时间修复和/或研究所述组件。这个公开中描述的至少一个设计的普通原理是解耦主机操作系统和客户操作系统以及对他们的角色的分离。例如,主机操作系统提供整个系统的硬件资源、一般服务、维护策略和增强服务质量(QoS),并且客户操作系统在客户操作系统本身分离为离散结构的同时维护用户交互和状态、安装在客户操作系统上的应用/配置群(ACG)和用户数据。如果引入或者识别出缺点或者病毒,它经常可能位于专用ACG或者用户数据内部。因此,可以例如在客户操作系统被实例化之前,通过主机操作系统扫描ACG或用户数据可以自动地消除这种缺点或病毒。通过知晓专用ACG或用户数据碎片上一次已经被扫描,可以显著地减少这个扫描时间。在一个示例中,可以使用MD5签名或者其他数据哈希技术完成对没有改变的证实。如果确定ACG或者用户数据碎片是有缺陷的,可以去除或者隔离它。以这种方式,可以自动的防止有缺陷的数据保持或者将它自己注入到客户操作系统提供的用户运行时间环境中。
[0187] 在另一个示例方案中,可以从客户操作系统向主机操作系统委派口令管理。用户口令引发出很多共同的安全危险,例如在多个应用中(特别是网页应用)使用单一口令或者相似口令的用户,使用简单的或者共同的口令易受到词典攻击,并且将更强的口令存储在文件中,这些文件可以被敌对让访问并且解密。然而,以上所述的技术能够解耦主机操作系统和客户操作系统,这样使得他们不具有对彼此的运行时间数据的直接访问,除非这种数据被明确的共享。由此,通过将口令存储在主机操作系统内部,在客户操作系统内部运行的处理不能访问这种口令。可以在主机操作系统内部将一个或多个服务配置为识别并且去除客户操作系统内部的存储的口令的副本,当利用口令时(例如生成账户、登录账户和修改口令)通过分析HTTP通信来检测,并且保证利用通过主机操作系统生成和管理的强口令(例如随机生成的对于各自应用唯一的口令),并且优选的经由安全信道(例如HTTPS)发送。因为这是通过主机操作系统自动和透明地执行的,所以客户操作系统的用户不被暴露来访问并且可以不访问专用应用所使用的实际的强口令。这将防止共同使用的“社会工程”攻击检索用户-管理口令。额外的,这可以通过消除用户需要记住口令来提高用户体验。每个目标应用/用户组合都可以被分配唯一的口令。主机操作系统还可以保证包括口令的HTTP要求被真正发送到它的适当目的地IP并且不仅仅是通过敌对方“被抢劫”。
[0188] 虽然以上已经结合上述附图描述了实例计算机系统,但是可以在其他类型的数字电路、或者在计算机软件、固件或者硬件中实现以上描述的主题和功能性操作的实现,包括在该说明中公开的结构和他们的就结构等同物,或者他们中的一个或多个的组合。在本说明书中描述的主题的实现可以被实现为一个或多个计算机程序产品,即,在有形程序载体上编码的一个或多个模拟计算机程序指令,所述程序载体例如是计算机可读介质,用于通过处理系统执行或者控制处理系统的运行。计算机可读介质可以是机器可读存储设备、机器可读的存储基底、存储设备、影响机器可读传播信号的事件的成分或者他们中的一个或多个的组合。
[0189] 术语“系统”可以包括用于处理数据的所有装置、设备和机器,包括示例性的可编程处理器、计算机或者多处理器或者计算机。处理系统可以包括硬件,此外还包括生成用于正被讨论的计算机程序的执行环境,例如组成处理器固件、协议栈、数据库管理系统、操作系统、或者一个或多个他们的组合的编码。
[0190] 可以用任何形式的编程语言编写计算机程序(也被称为程序、软件、软件应用、脚本、可执行逻辑或者编码),所述编程语言包括编译或者翻译语言,或者说明或过程语言,并且可以用任何形式展开,包括作为独立程序或者作为适用于计算环境的模块、组件、子程序或者其他单元。计算机程序不需要对应于文件系统中的文件。可以将程序存储在容纳其他程序或者数据的一部分文件中(例如,存储在标注语言文档中的一个或者多个脚本)、专用于正被讨论的程序的单个文件、或者多个整合文件中(例如,存储一个或者多个模块、子程序或者部分编码的文件)。可以配置计算机程序以在一个计算机或者位于一个位置或者分散的多个位置中并且通过通信网络互连的多个计算机上执行该计算机程序。
[0191] 适于存储计算机程序指令和数据的计算机可读介质包括全部形式的非易失性或者易失性存储器、介质和存储设备,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或者可去除的磁盘或者磁带;磁光盘;以及CD-ROM和DVD-ROM磁盘。可以通过专用逻辑电路或者合并到专用逻辑电路中来增补处理器和存储器。有时,服务器是通用计算机,并且有时它是定制的专用电子设备,并且有时它是这些的组合。
[0192] 实现可以包括例如数据服务器的后端组件,或者例如应用服务器的中间组件,或者例如具有图形用户界面或者网页浏览器的客户计算机的前端组件,(其中,用户可以通过所述图形用户界面或者网页浏览器于该说明书中描述的主题的实现进行交互),或者一个或者多个这种后端、中件、或者前端组件的任意组合。可以通过任何形式或者例如通信网络的数字数据通信的介质互连系统的组件。通信网络的例子包括局域网(“LAN”)和例如因特网的广域网(“WAN”)。
[0193] 还可以以单个实现的组合实现在上文中描述的单独实现的特定特征。相反的,可以单独在多个实现中或者在任何子组合中实现上文描述的单个实现的特征。
[0194] 可以改变上面描述的执行操作的命令。在特定环境中,多任务和并行处理可能是有利的。不应当将上面描述的实现中的系统元件分离理解为必须这样分离。
[0195] 虽然在两个单独的操作系统、每个都具有其自己架构和功能的主机和客户的环境下描述了这里说明的系统,但是这里描述的技术不局限于这种分支结构。在一些实现中,两个操作系统都被包装在单个计算机程序的内部,所述计算机系统具有如同是独立系统的、彼此合作的两个扇区,其中,在与计算机系统的通信层和硬件单独接口的第二扇区的控制下,周期性地刷新直接与用户接口的扇区。
[0196] 例如,一些操作系统被设计为在核心空间和用户空间之间划分操作。核心空间程序代码管理用户空间中的应用使用的计算资源。用于核心空间程序代码的示例功能包括但不局限于处理机管理、存储器管理和设备管理。可以提供核心抽象层用于需要的隔离,来保护主机操作系统资源不被客户操作系统用户空间过程(诸如虚拟机程序)损害。反过来,客户操作系统在核心和用户空间之间划分操作,并且提供在客户操作系统内部执行的用户空间过程的隔离。在客户操作系统和主机操作系统之间的虚拟化层可以在客户操作系统是不安全的、并且允许用户空间过程直接或间接影响核心空间对象的情况下提供额外的隔离层。
[0197] 在一些实现中,通过使用功能完善的操作系统来实现本申请中描述的技术,例如商业上可买到的“现成”的操作系统和操作系统之间的虚拟化层。然而,在其他实现中,代替功能完善的操作系统,类似于操作系统的组件和虚拟化层也可以用来实现这种隔离,尽管可能遗漏典型存在于功能完善的操作中的其他的特征。
[0198] 其他实现都在以下权利要求的范围之内。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用