专利名称:使用存储器分段和基于acpi的上下文切换加载操作系统的制作方法
技术领域:
本发明总体上涉及共享相似体系结构的个人计算机和设备,且尤其涉及用于管理、激活和控制计算装置内或单个计算机操作会话或上下文(context)内的多个操作系统环境等等的方法。
背景技术:
在近代,对包括所谓的膝上型计算机和笔记本计算机在内的PC (个人计算机)的使用日益普遍,并且计算机它们自身的功率和复杂度在发热功率减少的同时日益增加。绝大多数PC具有例如OS (操作系统)的控制软件,所述OS诸如Microsoft Windows Vista 或类似的商业产品。主要由于进行设计折衷的需要,所以可获得许多种 OS。特别地,针对伴随以速度(尤其是加载时间和操作的速度)提升的(相对)有限的能力, 对伴随以附带的复杂度和大小的特征丰富性进行折衷。因此,存在用来提供在计算机内使用多个OS的需要,并且已经使用了各种方法, 其中每一种方法具有其自身的折衷。一种方法(所谓的“双重引导(dual-boot)”方法)涉及从相对冷状态选择并加载所需0S。这具有慢的缺陷,但是具有资源是专用的而不是被共享或分区的优点。其它方法可能涉及虚拟化,其具有在OS环境之间提供快速切换的优点,但是存在的缺陷在于可获得的最为复杂和流行的OS软件未被设计为在虚拟化环境中良好工作而对结果进行进一步地折衷和影响。此外,虚拟化可能需要针对其所寻址的硬件特征并且因此是相对较不通用的应用。不幸的是,复杂OS软件的厂商几乎没有通过虚拟化而使其产品与较简单OS产品和平共存地良好工作的动机。较简单的OS产品具有除了速度以外的优点,例如在这样的OS是“开放源”的情况下,源代码更少并且因此更加易于理解。此外,较不复杂的软件趋向于较不容易受到恶意攻
击O存在对双重引导和虚拟化的其它替换形式(具有不同的再折衷)并且本发明涉及这一点。
发明内容
除了其它事物之外,本发明的实施例提供了用于寻求支持多个OS (操作系统)而提供OS操控(控制)辅助的方法。本发明提供了一种用于操作计算机以进行数据通信的方法,并且还提供了一种体现该方法的装置。此外,呈现了用于利用本发明的程序产品和其它手段。根据本发明的方面,本发明的实施例可以提供将第一和第二 OS (操作系统)加载到系统存储器的分开的分区中,执行用于改变ACPI (高级配置与电源接口)系统状态的指令请求,恢复所保存的计算机硬件状态,并且在OS之间转移控制。本发明所提供的或从实现本发明所得到的优点和/或特征是在不需要冗长的重新引导时间或者没有使用虚拟化技术时所固有的缺陷的情况下可以在多个OS(典型地为两个0S,但是任选为三个或更多)之间传递控制。从而,存在OS之间“瞬时”切换的表象,或者至少存在比所提供的先前所研发实现方式相当更快的切换。此外,通过将本发明结合到热启动序列中,可以提供或接近于即时启用(instant-on)服务。
在查看结合以下附图所进行的对本发明的以下详细描述后,本发明实施例的上面所提到的以及相关的优点和特征将变得更好理解,所述附图结合在本说明书中且构成其一部分,并且所述附示了本发明的实施例,以及其中同样的附图标记表示同样的元素,且其中
图1是根据本发明实施例的被配置为实现安全功能的电子设备的示意性框图; 图2是图示在实现本发明实施例时所实行步骤中的一些步骤的概述的流程图; 图3和4联系在一起是更加详细地图示在实现本发明实施例时所实行步骤中的一些步骤的概述的稍微更详细的流程图5是示出如何能把本发明示例性实施例编码到一个或多个计算机介质上的图解; 图6是示出如何能使用电磁波对本发明的示例性实施例进行编码、传输、接收和解码的图示。
具体实施例方式给出附图中所示出的众多组件以向本领域技术人员提供本发明实施例的全面、使得能够实现的公开内容。在此说明书内并不包括对众所周知组件的描述从而不会对本公开内容造成混淆,或者减弱或以其它方式降低本发明实施例的新颖性以及由此所提供的主要益处。现在将参考附图对本发明的示例性实施例进行描述。图1是根据本发明实施例的被配置为实现安全功能的电子设备的示意性框图。在示例性实施例中,电子设备10可以被实现为个人计算机,例如台式计算机、膝上型计算机、平板PC或其它适合的计算设备。虽然该描述概括了个人计算机的操作,但是本领域技术人员将会意识到的是,电子设备10可以被实现为PDA、无线通信设备(例如蜂窝式电话)、例如机顶盒的嵌入式控制器或设备、打印设备或其它适合的设备或者其组合,并且适合于与本发明进行操作或交互操作。电子设备10可以包括至少一个处理器或CPU (中央处理单元)12,其被配置为控制电子设备10的整体操作。类似的控制器或MPU(MiCr0pr0CesS0r Unit,微处理器单元) 是常见的。典型地,处理器12可以通过诸如FSB (Front-Side Bus,前端总线)之类的总线13耦合到诸如北桥芯片之类的总线控制器14。典型地,总线控制器14可以提供用于对诸如RAM (随机存取存储器)之类的系统存储器16进行读写的接口。在普通操作中,CPU 12可以从系统存储器16取计算机指令(也被称作计算机指令代码,图1中未示出)。CPU然后可以对所取的计算机指令进行解释并进行操作以解释所述指令,由此控制电子设备10的操作。在计算领域,对CPU、系统存储器以及典型地包括OS (操作系统)代码和其它软件的计算机指令的这样的使用是众所周知的。
总线控制器14还可以耦合到系统总线18,例如,在典型的htel 风格的实施例中的DMI (直接媒体接口)。耦合到DMI 18的可以是所谓的南桥芯片,诸如htel ICH8 (输入/输出控制器中心类型8)芯片24。典型地,南桥芯片24可以结合有第一 NIC( Network Interface controller,网络接口控制器)32,诸如连接到8PC8(8位置8触点)型的有线网络连接器31的IEEE 802. 3 (电气和电子工程师协会标准编号802. 3)1000 BASE-T型网络接口控制器。通俗来讲,8PC8 连接器31被称作RJ45端口,而IEEE 802. 3用通俗话被称作以太网。在典型的实施例中,南桥芯片M可以连接到PCI (外部组件互连)总线22,其进而可以连接到驱动无线收发器71的第二 NIC 66。无线收发器71可以遵照IEEE 802. 11或其它适合标准来操作。典型地,无线收发器71将耦合到某形式的无线电天线72。而且,典型地,南桥芯片M还将耦合到NVRAM (非易失性随机存取存储器)33。NIC 32和66之一或这二者可以传送通信信号,所述通信信号被用来形成诸如到互联网服务的逻辑网络连接。实际上,典型的计算机或类似电子设备10可以具有其它接口,例如USB (通用串行总线,其在图1中未示出)接口,所述接口进而可以连接到(例如) Bluetooth 收发器以用于本发明的一般范围内的其它通信模式。图2是图示在实现本发明实施例时所实行步骤中的一些步骤的概述的流程图。图 2中所描述的方法是简化形式并且用作浅显理解本发明重要部分的简单实施例可以如何操作的有用概述。在步骤200,开始执行BIOS指令代码的相关部分。作为此步骤的一部分,BIOS定义可由OS使用的存储器区域以及被保留供BIOS使用的那些区域(例如,EBDAC extended BIOS data area,扩展BIOS数据区域)、ACPI NVS(非易失性储存器)或 SMRAM( System Management Mode RAM,系统管理模式RAM))。可替换地,一些存储器区域可以被非BIOS但是不过是针对硬件的服务所使用,例如共享视频存储器。BIOS然后调用0SM(0S Steering Module, OS 操控模块),其对存储器进行初始化,包括创建表,保存基础存储器,保存ACPI NVS, PIC (可编程中断控制器)值;其挂钩(hook)至提供定制映射(map)的E820服务;等等。E820服务是本领域众所周知的。在本发明的实施例中,OSM从众所周知的GRUB (Grand Unified Bootloader program,大统一引导加载器程序)得出并且结合有引导加载器(bootloader) 区。因此,除了其它事情之外,可恢复的硬件上下文得以被保存。在步骤210,OSM的引导加载器区加载第一 OS (操作系统)。OS调用E820服务以确定其能够使用物理主存储器的哪些区域并且OS加载到该存储器中。BIOS服务知道哪个 OS在请求E820服务(例如,基于调用方的存储器地址,或者基于最近加载了哪个OS,不过对那些标准的使用仅仅作为示例)并且对其进行响应而呈现定制的存储器映射。典型地,第一 OS被加载到受限制的(相对小的)存储器分区并接着运行应用程序。 在步骤220,通过使用对每个OS中所包括的ACPI S3状态(或者保存至RAM (save-to-RAM) 服务或类似服务)的请求而开始导致进入保存状态的过程。在步骤230,OS保存该OS具有其驱动程序的每个设备的状态,例如,可以保存到存储器缓冲区中。OS还可以冲刷(flush)待定数据,典型地冲刷出至磁盘。示例性OS向ACPI 控制的寄存器PM1_CNT写入特定值,由此指示迫切地请求该OS和平台上下文转换到ACPI 系统状态S3。ACPI系统状态是本领域众所周知的。
上面所描述的对PM1_CNT寄存器的写入可以被OSM俘获(trap)(在步骤M0),所述OSM已经获取了对平台执行的控制,然后作出确定该请求是针对上下文切换(与平台休眠状态相对照)的。在本发明的实施例中,响应于OSM数据表中的控制位来作出该确定。先前研发的技术典型地足以满足平台完整性的具体多处理器方面的需求。以进入ACPI状态 S3所惯用的方式存储唤醒矢量(Wake vector).此亥lj,OSM的行为与进入ACPI状态S3所涉及的类似的(直到现在)动作存在很大不同。由于已经采取了进入ACPI状态S3之前的许多相同动作,所以OSM在准备加载第二 OS时作为替代进行创建和保存其它可恢复硬件上下文和唤醒矢量集,如下面所描述的。创建可恢复硬件上下文和唤醒矢量集的过程与上面步骤200中所描述的那些类似。在步骤250,复原步骤200中所保存的硬件上下文。这使得该平台在准备加载第二 OS时基本上返回到其初始硬件状态。然而,并不重新创建主存储器映射,相反,OSM确保了 BIOS在下一次调用E820服务时将知道第二 OS是活动的。接着加载并进入第二 OS。在步骤沈0,作为其正常初始化的一部分,第二 OS调用BIOS服务E820,其知道哪个OS正在请求E820服务。所返回的E820存储器映射把为第一 OS留出的受限制的存储器分区排除在外,并且典型地可以包括可用物理RAM的剩余部分。第二 OS然后完成其自己的初始化并且运行应用程序。在步骤270,响应于使得希望返回到第一 OS (以及在其之下所运行的应用)的上下文的激励变为活动,第二 OS诸如通过再次写入PM1_CNT ACPI寄存器而调用ACPI功能“将状态改变至S3”的功能。可以注意到,第二 OS可以也响应于(诸如通过定制键组合)切换到第一 OS的请求而请求进入状态S3。可替换地,第二 OS可以出于不相关的原因(诸如响应于非活动性计时器)而选择请求迫切进入S3模式。在步骤275,并且总的来说,虽然促使第二 OS进入S3的挂钩将是通用目的的,但是用于调用它们的装置也将采取允许OSM作出确定该请求是依据改变OS上下文的明确意愿的动作;典型地,这将涉及在对BIOS可见的寄存器中放置值,例如,只这样做的一种方式是要调用为了该明确目的而创建的BIOS服务。创建和使用这样的简单BIOS服务器来指明各种种类的模式是本领域众所周知的。在步骤观0,以与步骤MO的行为相类似的方式,OSM (典型地通过捕获对PM1_CNT 的写入)进行操纵。因此,OSM创建基本上完全保存的硬件上下文以及针对该第二 OS的上下文的唤醒矢量集。典型地,这可以重写步骤200中所保存的上下文,这是由于这些不再被需要。在步骤四0,重新加载⑶卩上面在步骤240所描述的那样保存的)针对第一 OS的硬件上下文。使用所保存的唤醒矢量重新激活第一 0S。由于第一 OS所看到的存储器映射把专用于第二 OS的存储器排除在外,所以不存在重新加载和/或重新初始化第一 OS的需要, 这是因为第一 OS仍然驻留在存储器中。对需要重新加载和重新初始化OS的此避免提供了优于许多先前所研发的解决方法的显著改进。在步骤四9,该过程继续响应于对控制转移的源自用户的(或者例如编程的其它) 请求而在第一和第二 OS之间来回传递控制。图3和4联系在一起是更加详细地图示在实施本发明的一个特定实施例时所实行步骤中的一些步骤的概述的稍微更详细流程图。此实施例应当仅被看作是纯粹示例性的而不是作为限制本发明的一般性描述。
在步骤300,如结合图2所描述的,再次开始执行BIOS指令代码的相关部分。作为此步骤的一部分,BIOS定义可由OS使用的存储器区域以及被保留供BIOS使用的那些区域(例如,EBDA (扩展BIOS数据区域)、ACPI NVS (非易失性储存器)或SMRAM (系统管理模式RAM))。可替换地,一些存储器区域可以被非BIOS硬件服务使用,例如共享视频存储器。 BIOS然后通过INT 19 (在本领域中断19是众所周知以用于将控制从BIOS转移给引导程序加载器)调用OSM (0S操控模块)。在步骤320,OSM对存储器进行初始化,包括创建表,保存基本存储器,保存ACPI NVS, PIC (可编程中断控制器)值;其挂钩至提供定制映射的E802服务;等等。因此,除了其它事物之外,可恢复的硬件上下文得以被保存。在步骤350,OSM调用GetBootOS服务来选择OS以进行加载。在步骤360,OSM 选择 HS (Phoenix ^Technologies 有限公司的产品 HyperSpace , 其包括在体系结构上与Linux 类似的OS和应用程序)。 在步骤370,OSM加载并接着将控制转移给HS。在步骤380,HS发现OSM被加载,并且在实际(或非实际)模式中调用众所周知的 BIOS E820服务(也被描述为int 1 调用,AX=E820h)。已知调用方为HS,BIOS为HS保留相对小的存储器部分(在一个示例性实现方式中为256兆字节)并且标记空间ARR (保留的地址范围)。在一种实现方式中,每当在引导或重新引导之后E820服务的第一调用方不是 HS时BIOS将在ARM (地址范围存储器)中保留该空间。在步骤390,HS对其存储器映射进行适配以使用256M字节的ARR (保留的地址范围)空间。HS避免加载到ARM中或者在ARM内创建堆一这种行为与正常的Linux 实践方式相反。在步骤3100,HS运行用户模式HyperSpace 应用。在步骤3110,响应于用户激励(例如,热键按压),HS准备进行上下文切换。在步骤3120,在准备系统状态变化时,HDD (硬盘驱动控制器和子系统)被带入静止和数据冲刷状态。在步骤3130,HS对ACPI寄存器(例如,PM1_CNT)进行写入,其在先前所研发的OS 中被用来请求切换到ACPI系统模式S3。ACPI模式是本领域众所周知的。在步骤3140,对PM1_CNT的写入被OSM拦截,其已经在初始化期间被OSM加挂钩。在步骤3150,HS保存唤醒矢量和寄存器以及诸如PIC和计时器设置之类的其它信息,以便随后返回到活动状态(HS上下文中的SO状态)。这些与在加载HS之前所存储的 PIC设置等分开地保存。在步骤3160,OSM GetBootOS服务选择要加载的下一个OS (S卩,非HS 0S)。在本发明的实施例中,该非HS OS是Microsoft Vista OS。在步骤3170,控制经由ht 19 (中断19)返回到0SM,其再次调用OSM GetBootOS 服务来选择OS以进行加载。在步骤3180,复原在加载HS之前所存储的设置等。在步骤3190,OSM启动加载第二 OS (在示例性实施例中的Vista )。该第二 OS不知道BIOS中E820服务例程为HS所保留的特殊空间,所以其将把自身限定到ARM区域并且因此不会通过被加载到物理系统存储器的全部单独部分而在物理存储器中盖写HS。典型地,这将不会产生资源问题,原因在于与典型的第二 OS (可能超过1. 5GB或更多)相比HS的存储器需求是适度的(典型地为256兆字节)。这完成了两个OS的加载并且使得系统准备响应于用户请求(诸如热键按压)或响应于其它编程的激励而在它们之间进行切换。对于本领域的普通编程人员而言,如何将上面过程进行扩展以在OS之间提供来回切换是显而易见的。然而,在希望离开第二 OS以返回到第一 OS和希望进入休眠状态之间要有所不同,原因在于这二者都涉及捕捉被挂钩的对ACPI寄存器的写入。通常,这可以利用具有OSM的OS在编程上予以解决,所述OSM捕捉被用来区分这两种情况的无论什么标准。关于图5,使用具有记录于其上的指令的多种可能媒体530,诸如通过使用存储记录器520,可以把要被结合到电子设备10中的计算机指令进行分布以作为制造固件和/或软件计算机产品510。常常,在与部署了本发明的产品一样复杂的产品中,可以既在分布中又在制造相关的产品中使用多于一种的介质。图5中为了简明仅示出了一种介质,但是可以使用多于一种的介质并且单个计算机产品可以在多个媒体之间进行划分。图6示出了可以如何使用电磁波对本发明的示例性实施例进行编码、传输、接收和解码。关于图6,另外且特别地由于互联网使用的增加,可以通过将它们编码到被调制为波的信号中来分布计算机产品610。所得到的波形然后可以由传输器640进行传输,作为有形的调制的电磁载波650进行传播并且由接收器660接收。在接收到之后,它们可以被解调并且所述信号在存储器或其它存储设备中被解码为计算机产品611的其它版本或副本, 所述存储器或其它存储设备作为第二电子设备11的一部分并且典型地在本质上与电子设备10相类似。也可以使用其它技术和/或设备来构建本发明的可替换实施例。上面所描述的实施例是示例性而并非限制性的,并且本发明的界限应当根据权利要求来确定。虽然已经在上文中对本发明的优选实施例进行了详细描述,但是应当清楚理解的是,可能对本领域技术人员有所显现的这里所教导的基本发明概念的许多变化和/或修改将仍然落入如所附权利要求所限定的本发明的精神和范围之内。
权利要求
1.一种操作计算机的方法,其包括将第一 OS (操作系统)加载到系统存储器的第一分区中;将第二 OS (操作系统)加载到所述系统存储器的第二分区中;执行从第二 OS所取的指令以请求改变ACPI (高级配置与电源接口)系统状态;以及响应于执行指令,(a)恢复计算机的第一保存硬件状态,和(b)将控制转移给所述第一OS。
2.如权利要求1所述的方法,其中 所述第一和第二分区是互斥的。
3.如权利要求1所述的方法,其中 所述系统状态是ACPI系统状态S3。
4.如权利要求1所述的方法,其中所述第二 OS的加载由包括引导加载器的OSM (操作系统操控模块)实行,并且响应于所述第一 OS中的ACPI请求指令序列来实行。
5.如权利要求4所述的方法,其中所述加载器调用BIOS (基本输入输出系统)服务来选择要由所述引导加载器加载的下一个 OS。
6.如权利要求4所述的方法,其中所述加载器调用BIOS (基本输入输出系统)服务来存储计算机的所述第一保存硬件状态并且进一步存储多个唤醒矢量。
7.如权利要求1所述的方法,其中所述第一分区和所述第二分区由E820服务例程形成。
8.如权利要求7所述的方法,其中所述第一分区是ARR (保留的地址范围)类型,而所述第二分区是ARM (地址范围存储器)类型。
9.如权利要求1所述的方法,还包括响应于执行从所述第一分区所取的指令,恢复计算机的第二保存硬件状态,和将控制转移给所述第二 Os。
10.如权利要求9所述的方法,还包括将系统存储器的所述第二分区的一部分页面交换到磁盘; 将所交换的系统存储器部分添加到所述第一 OS所控制的软件堆;和在执行从所述第一分区所取的指令之后和在将控制转移给所述第二 OS之前将所交换的系统存储器部分复原到所述第一分区。
11.一种计算机程序产品,其包括至少一个计算机可读介质,其具有在其中被编码的指令,所述指令在被至少一个处理器执行时促使所述至少一个处理器通过包括以下动作的步骤进行操作 将第一 OS (操作系统)加载到系统存储器的第一分区; 将第二 OS (操作系统)加载到系统存储器的第二分区;执行从所述第二 OS所取的指令以请求改变ACPI (高级配置与电源接口)系统状态;以响应于执行指令,(a)恢复计算机的第一保存硬件状态,和(b)将控制转移给所述第一OS。
12.如权利要求11所述的计算机程序产品,其中 所述第一和第二分区是互斥的,并且所述第二 OS的加载由加载器实行,并且响应于所述第一 OS中的ACPI请求指令序列来实行。
13.如权利要求11所述的计算机程序产品,其中所述第二 OS的加载由加载器实行,并且响应于所述第一 OS中的ACPI请求指令序列来实行,和所述加载器调用BIOS (基本输入输出系统)服务来选择要加载的下一个OS。
14.一种方法,其包括将信号调制到附加到有形介质中的电磁载波上的动作,或者对来自所述电磁载波的信号进行解调的动作,所述信号具有在其中被编码的指令,所述指令在被至少一个处理器执行时促使所述至少一个处理器通过包括以下动作的步骤进行操作将第一 OS (操作系统)加载到系统存储器的第一分区;将第二 OS (操作系统)加载到系统存储器的第二分区;执行从所述第二 OS所取的指令以请求改变ACPI (高级配置与电源接口)系统状态;以及响应于执行指令,(a)恢复计算机的第一保存硬件状态,和(b)将控制转移给第一 OS。
15.一种电子设备,包括 控制器;和具有在其中被编码的指令的第一系统存储器,所述指令在被所述控制器执行时促使所述控制器通过包括以下动作的步骤进行操作将第一 OS (操作系统)加载到所述第一系统存储器或第二系统存储器的第一分区; 将第二 OS (操作系统)加载到所述第一系统存储器或第二系统存储器的第二分区; 执行从所述第二 OS所取的指令以请求改变ACPI (高级配置与电源接口)系统状态;以及响应于执行指令,(a)恢复计算机的第一保存硬件状态,和(b)将控制转移给第一 OS。
16.如权利要求15所述的电子设备,其中, 所述第一和第二分区是互斥的。
17.如权利要求15所述的电子设备,其中 所述系统状态是ACPI系统状态S3。
18.如权利要求15所述的电子设备,其中所述第二 OS的加载由加载器实行,并且响应于所述第一 OS中的ACPI请求指令序列来实行。
19.如权利要求15所述的电子设备,其中OSM (0S操控模块)调用BIOS (基本输入输出系统)服务以加载所选择的0S,其中所选择的OS为所述第一 OS或所述第二 OS。
20.如权利要求15所述的电子设备,其中所述动作还包括 响应于执行从所述第一分区所取的指令,恢复计算机的第二保存硬件状态,和将控制转移给第二 OS。
全文摘要
公开了用于管理单台计算机等等内的多个OS的方法、系统、设备和程序产品。制作措施以用于通过BIOS辅助来交换OS并且符合特别如与ACPI系统休眠状态S3相关的系统状态管理的ACPI特征。
文档编号G06F9/445GK102369510SQ201080012607
公开日2012年3月7日 申请日期2010年3月16日 优先权日2009年3月20日
发明者卡马尔文施 A., 班加 G., 巴德 K. 申请人:惠普公司