在媒体设备中支持多个操作系统
背景
用于消费电子设备的媒体格式变得日益复杂,同时也将它们的许多高级功能从硬件移到软件。结果,消费电子设备的软件环境已变得日益复杂。
此外,诸如DVD等较老且较简单的格式尽管将它们的许多处理卸载到较便宜且较简单的硬件,但它们仍然将它们的某些处理留给软件。例如,虽然音频和视频流可能由专用硬件来解码,但是菜单处理(或“导航”)功能可以用软件来实现。虽然基本导航软件可以是相对简单的,但是DVD市场已随着时间而进化。DVD播放器已经用正确地处理具有更多特征的DVD的复杂菜单处理逻辑来响应。结果,相对简单的DVD格式已经进化以致于其回放软件现在是相当复杂的。许多播放器制造商对该软件进行大量投资,而该软件随着时间进化而依赖于他们的操作环境。
由于有不同的媒体格式可用,因此存在对支持多种格式的消费电子设备的需求。例如,很明显,当考虑到用户一般期望他们的DVD播放器也播放CD唱片(CD唱片是非常不同的媒体格式)时,支持多种格式是合乎需要的。于是要解决的问题是如何以合算的方式运行可能需要其自己的操作系统的多个软件应用程序。
概述
提供本概述以用简化的形式介绍在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来限制所要求保护的主题的范围。
概括而言,详细描述针对用于在消费电子设备中支持多个操作系统的各种技术和工具。例如,描述了允许在支持不同的媒体类型的视频盘播放器中的操作系统之间快速切换,同时减少等待时间并减轻对用户体验可能的负面影响的技术和工具。
在参考附图进行的以下各实施例的详细描述中,其它特征和优点将变得显而易见。
附图简述
图1是示出其中可实现若干所描述的实施例的合适的计算环境的通用示例的框图。
图2是示出根据一个或多个所描述的实现的处理不同的操作系统之间的特征改变的“适度切换(graceful handoff)”模型的示例技术的流程图。
图3是示出根据一个或多个所描述的实现的处理不同的操作系统之间特征改变的“热引导”模型的示例技术的流程图。
图4是示出根据一个或多个所描述的实现的用于盘格式改变的适度切换处理的示例技术的流程图。
图5是示出根据一个或多个所描述的实现的具有用于处理盘格式改变的引导加载程序和BIOS服务的固件的系统图。
图6是示出根据一个或多个所描述的实现的用于盘格式改变的热引导处理的示例技术的流程图。
图7是示出根据一个或多个所描述的实现的用于并行地执行热引导媒体格式切换操作的示例技术的流程图。
详细描述
此处描述了用于例如在诸如媒体播放器等嵌入式设备中支持多个操作系统的技术和工具。
此处所描述实现的各种替换是可能的。例如,参考流程图所描述的某些技术可以通过改变流程图中所示的各阶段的排序、通过重复或省略某些阶段等来更改,而仍然达到相同的结果。不同的实施例实现所描述的技术和工具中的一个或多个。此处所描述的某些技术和工具针对背景中所提到的一个或多个问题。然而,通常,给定的技术/工具不能解决所有这种问题。
I.计算环境
图1示出其中可实现若干所描述的实施例的合适的计算环境(100)的通用示例。计算环境(100)并不旨在对使用范围或功能提出任何限制,因为这些技术和工具可以在不同的通用或专用计算环境中实现。例如,可以为计算环境(100)配备诸如便携式音频播放器、便携式视频播放器、便携式音频和视频播放器、控制台音频播放器、控制台视频播放器或控制台音频和视频播放器等媒体设备。这种媒体设备可以是独立式单元或可以包括在另一设备(例如通信设备或显示单元)中。
参考图1,计算环境(100)包括至少两个处理单元(110,115)以及相关联的存储器(120,125)。处理单元(110,125)可以包括CPU、用于视频加速的GPU或其它协同处理单元。在图1中,该最基本的配置(130)被包括在虚线内。可选地,计算环境包括单个处理单元。处理单元(110,115)执行计算机可执行指令并且可以是真实的或虚拟的处理器。在多处理系统中,多处理单元执行计算机可执行指令以提高处理能力。在编码或解码场景中,主编码器或解码器进程使用可用处理单元(110,115)来执行编码或解码操作。某些操作可以由诸如GPU等专用处理单元来执行。存储器(120,125)可以是易失性存储器(例如寄存器、高速缓存、RAM)、非易失性存储器(例如ROM、EEPROM、闪存等)或者两者的某一组合。存储器(120,125)可以专用于一个处理器或者由两个或多个处理器共享。存储器(120,125)为设备存储实现用于支持多个操作系统的策略的软件(180)。
计算环境可以具有附加特征。例如,计算环境(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(16)、以及一个或多个通信连接(170)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(100)的组件互连。通常,操作系统软件(未示出)为在计算环境(100)中执行的其它软件提供操作环境,并且协调计算环境(100)的各组件的活动。
存储(140)可以是可移动的或不可移动的,并且包括磁盘、磁带或磁带盒、CD-ROM、DVD或可用于存储信息并可以在计算环境(100)内访问的任何其它介质。存储(140)为软件(180)存储指令。
输入设备(150)可以是诸如键盘、鼠标、笔、触摸屏或跟踪球等触摸式输入设备、语音输入设备、扫描设备、或向计算环境(100)提供输入的另一设备。对于音频和视频,输入设备(150)可以是声卡、视频卡、TV调谐卡、或接受模拟或数字形式的音频或视频输入的类似设备、或将编码音频或视频读入到计算环境(100)的DVD、CD-ROM或CD-RW。输出设备(160)可以是显示器、打印机、扬声器、CD或DVD刻录机、或从计算环境(100)提供输出的另一设备。
通信连接(170)允许通过通信介质到另一计算实体的通信。通信介质在已调制数据信号中传达诸如计算机可执行指令、音频或视频输入或输出、或其它数据等信息。已调制数据信号是其一个或多个特征以在信号中编码信息的方式被设置或改变的信号。已调制数据信号指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括用电、光、射频(RF)、红外(“IR”)、声学或其它载波实现的有线或无线技术。
各技术和工具可以在计算机可读介质的一般上下文中描述。计算机可读介质是可以在计算环境内访问的任何可用介质。作为示例而非限制,对于计算环境(100),计算机可读介质包括存储器(120)、存储(140)、通信介质以及上述任何的组合。
各技术和工具可以在诸如程序模块中所包括的在计算环境中的目标真实或虚拟处理器上执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可以视需要在各实施例中在程序模块之间组合或划分。程序模块的计算机可执行指令可以在本地或分布式计算环境中执行。
为演示起见,详细描述使用如“检查”和“唤醒”等术语来描述计算环境中的计算机操作。这些术语是计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际计算机操作取决于实现而不同。
II.用于在消费电子设备中支持多个操作系统的策略
消费电子设备正在变得日益复杂,并且正在将对其许多功能的支持从硬件移到软件。诸如DVD等较老且较简单的格式尽管将它们的许多处理卸载到较便宜且较简单的硬件,但它们通常将它们的某些处理留给软件。例如,音频和视频流可由专用硬件来解码,而菜单处理(或“导航”)功能可以用软件来实现。结果,支持诸如DVD等相对简单格式的某些消费电子设备仍然发展成具有复杂的软件。
此外,用于不同媒体格式的回放工具可以具有不同的操作系统需求,并且可以进一步使得处理它们的设备的软件环境变得复杂。例如,根据HD DVD视频盘标准(本文中有时称为HD DVD格式)编码的高清晰度视频内容可以使用由第一操作系统(诸如来自微软公司的
CE操作系统或其它操作系统)支持的回放应用程序来解码,而根据蓝光视频盘标准(本文中有时称为蓝光格式)编码的高清晰度视频内容可以使用由第二操作系统(诸如基于Linux的操作系统、其它Unix类或Unix变体操作系统、或其它操作系统)支持的回放应用程序来解码。双格式盘(例如具有蓝光格式的内容和HD DVD格式的内容的盘)还可以具有其它操作系统需求。为特定操作环境设计的某些软件已随着时间进化而依赖于这些操作环境。作为这些和其它因素的结果,消费电子设备具有日益复杂的软件环境。
消费电子设备要解决的问题是如何以合算的方式运行多个软件应用程序(其中每一个可能需要其自己的操作系统)。一种解决方案是,为所支持的每种类型的媒体格式包括一处理器,其用操作系统和软件应用程序来完成。更合算的解决方案是存储多个操作系统和软件应用程序(多至每种媒体格式一个操作系统和软件应用程序)并且在处理不同类型的媒体时使得播放器重新引导。例如,播放器可以具有用于HD DVD的一个操作系统、用于DVD的另一操作系统、以及用于CD音频的又一操作系统。操作系统和所支持的应用程序之间的映射无需是一对一的。例如,DVD和CD音频回放可以在一个操作系统上运行,而HD DVD在不同的操作系统上运行。
然而,存在与运行多个操作系统相关联的各个潜在问题。考虑支持两种数字视频盘媒体格式:在第一操作系统上运行的HD DVD格式以及在与第一操作系统非常不同的第二操作系统上运行的蓝光格式(有时称为蓝光盘格式)的设备。要考虑的一个问题是当从一种格式转换到另一种格式(例如从使用第二操作系统支持的蓝光回放到使用第一操作系统支持的HD DVD视频回放)时的盘加载时间。要考虑的另一问题是保持操作系统之间的切换对用户不可见的同时如何允许用户在(需要其自己的操作系统的)多个软件应用程序之间切换,以减少对用户体验的潜在负面影响。
所描述的“多引导”技术和工具允许设备以低成本在操作系统之间切换,并且没有对用户体验的不适当的干扰。虽然本文中所描述的思想可以被扩展到能够运行超过两个操作系统的设备,但在本文的描述中,术语“双引导”有时用于描述在两个操作系统之间切换的设备。具有两个可用操作系统的双引导设备是可以具有两个或多个可用操作系统的多引导设备的子集。如下文中详细解释的,术语多引导和双引导并不指示设备必须重新引导以便在操作系统之间切换的需求。
用于多引导设计的选项包括以下各项:
1.操作系统转换是用其中两个或更多的操作系统同时操作的协作切换(或适度切换)机制来处理的。例如,在所描述的实现中,第一操作系统和第二操作系统之间的切换是在第一和第二操作系统两者都保持运行的同时执行的。在切换之后,一个操作系统被置于空闲状态。
2.操作系统转换是用涉及对操作系统之一的热引导的切换机制来处理的。术语“热引导”在此处被用于指在设备已经通电并加载了操作系统后在该设备上发生的操作系统的引导。
在多引导设计选项之间的选择可以依赖于多个因素,诸如:芯片选择(例如,单核或双核)、实现成本以及外部依赖。许多芯片设计具有单个处理器核并一次支持一个操作系统(除非低级硬件多线程或另一技术提供对同时运行多个操作系统的支持)。其它芯片设计具有两个处理器核,而单个对称多处理知晓(symmetricmultiprocessing-aware)操作系统通常不使用它们两者。无论如何,片上系统设计选择通常不仅仅取决于处理器核,还考虑芯片上的诸如用于音频/视频解码、2D图形加速、解密等的单元等其它功能单元。
A.示例
以下示例示出了用于处理操作系统之间的转换的技术并说明了诸如转换时间以及对用户体验的潜在影响等因素。该部分中的示例描述了两个操作系统之间的切换,但是在超过两个操作系统之间切换是可能的。在替换实现中,以下示例中所示的步骤可以被重新排序、省略或用其它步骤代替。例如,描述从操作系统A切换到操作系统B的示例可以被扩展成在不再使用操作系统B的所请求的特征之后或响应于使用操作系统A中的特征的后续用户动作,默认地切换回操作系统A。只要有必要或需要,操作系统之间的转换可以继续。其中操作系统A是初始主操作系统的示例可以被修改,使得操作系统B是初始主操作系统,或反之亦然。
各示例是使用可以是独立设备或作为作为另一设备的一部分来包括的数字媒体播放器来实现的。可选地,各示例使用另一消费电子设备或其它计算设备来实现。
1.适度切换示例
示例1:在该适度切换示例场景中,消费电子设备被配置成允许操作系统A和操作系统B同时运行。在该示例中,操作系统A是主操作系统,并同时控制设备的大多数方面。它检测到用户试图使用由操作系统B提供的特征(例如通过将特定格式的视频盘放入到设备中)。示例1的过程包括以下步骤:
1.存储所标识的特征需求(例如在非易失性存储中)。
2.释放对将由操作系统B使用的硬件资源的控制(如果必要)。
3.将控制转移给操作系统B。
4.通过读取以上步骤1中存储的数据,来(用操作系统B)确定所需的特征。
5.如果必要,(用操作系统B)激活并使用该必要的硬件资源以满足该特征的需求。可以为某些硬件资源(例如显示器)适度地执行从一个操作系统到另一个的转换,使得跨从操作系统A到操作系统B的切换来完全或部分地持久保持它们的状态(例如当前显示菜单),以便减少转换时间和/或减轻对用户体验的负面影响。
6.(用操作系统B)提供所需特征。
在示例1的步骤3中,通过向操作系统B发送一个或多个消息来将控制转移给操作系统B。这些消息可以用若干种方式来实现。例如,在某些实现中,每个操作系统/处理器核(其中操作系统A在处理器核A上运行,而操作系统B在处理器核B上运行)中具有实现硬件邮箱队列的驱动程序。邮箱队列可以是用于在操作系统A和操作系统B之间传递消息的简单的先进先出队列。操作系统的控制组件(例如在驱动程序中)等待消息到达其队列中,以指示它将其操作系统和内核置于休眠。该消息可以是其值出于操作系统之间的适度切换的目的而保留的存储器字(例如,值1指示控制组件应该将其操作系统/内核置于休眠,而值2指示控制组件应该将其操作系统/内核从修眠状态唤醒,并且可以保留其它值用于其它目的)。可选地,使用另一协议和/或另一类型的数据结构来实现消息传递。
在示例邮箱队列实现中,当操作系统A检测到它不播放的格式的盘时,它向其消息传送驱动程序发送消息(例如值为2),该消息传送驱动程序将该消息传递到操作系统B的驱动程序的邮箱队列。操作系统B的驱动程序等待其邮箱队列中的消息,接收来自操作系统A消息,解释消息(其值指示“唤醒”)并且采取步骤来唤醒操作系统B和核B(例如在适当时重新启用驱动程序)。在操作系统A将唤醒消息发送给操作系统B之后,它将其自身置于休眠,假定操作系统B会成功地唤醒。可选地,操作系统A等待来自操作系统B的指示操作系统A将其自身置于休眠模式的消息(例如值为1)。使操作系统B在操作系统B成功地唤醒之后发送这一消息可以允许更好的出错处理——如果操作系统A在某段时间之后没有得到这样的休眠消息,则操作系统A可以通过通知用户来启动出错处理、重新引导整个系统和/或采取另一步骤。
如果操作系统B遇到它不播放的格式的盘时,则消息传送过程可以反转。操作系统B向其消息传送驱动程序发送消息(例如值为2),该消息传送驱动程序将该消息传递到操作系统A的驱动程序的邮箱队列。操作系统A的驱动程序等待其邮箱队列中的消息,接收来自操作系统B的消息,解释消息(其值指示“唤醒”)并且采取步骤来唤醒操作系统A和核A。在操作系统B将唤醒消息发送到操作系统A之后,它将其自身置于休眠,或可选地等待来自操作系统A的休眠消息。
示例2:图2是示出根据用于使用同时运行的各操作系统中的特征的适度切换模型的示例技术(200)的流程图。图2中所示的技术(200)与上述示例1中的步骤在某些方面不同,而仍然实现在两个操作系统之间的平稳转换。
在该技术(200)中,激活引导加载程序(205)并引导操作系统A和B(210,255)。在图2中,各操作系统开始处于空闲状态(210,255)。来自任一操作系统的唤醒消息(220,265)能够将另一操作系统从空闲状态(215,260)唤醒。这可以在例如用户请求操作,执行导航动作,检查或改变配置设置,或改变媒体内容(例如通过更换盘)时发生。
在唤醒之后,所激活的操作系统使用该操作系统执行(225或270)所启用的特征功能。在检测到特征改变(230或275)后,所激活的操作系统检查(235或280)它是否能执行新特征。如果否,则操作系统在必要时准备(240或285)用于转换到另一操作系统的硬件资源,并发送唤醒消息(245或290)到另一操作系统。发送唤醒消息的操作系统接着可以返回到空闲状态以等待可能的唤醒消息。
在图2所示的示例中,操作系统A和B在被引导(210,255)后最初进入空闲状态(215,260)。可选地,操作系统中的一个或多个最初处于活动状态。例如,在播放蓝光和HD DVD盘的视频盘播放器中,当其被打开时,当HD DVD盘在播放器中时,第一操作系统进入最初活动状态。代替进入最初空闲状态并检查唤醒消息,第一操作系统使用在该第一操作系统上运行的软件来执行所启用的特征功能(例如,引导HD DVD菜单或开始HD DVD回放),直到要求另一操作系统变为活动的事件(例如用户插入蓝光盘)发生为止。或者,设备可以被配置成在启动时一个操作系统默认是活动的。
2.热引导示例
示例3:在该热引导的场景中,操作系统A和操作系统B被配置成个别地而非同时地运行。在该示例中,操作系统A是主操作系统并同时控制设备的大多数方面。它检测到用户正尝试使用由操作系统B提供的特征。示例3的过程包括以下步骤:
1.将所标识的特征需求存储在非易失性存储中。
2.将操作系统需求存储在非易失性存储中。
3.关闭操作系统A。
4.重新引导。
5.通过读取上述步骤2中存储的数据来(用引导加载程序)确定所需的操作系统。在该示例中,这是操作系统B。
6.引导操作系统B。
7.通过读取上述步骤1中存储的数据来(用操作系统B)确定所需的特征。
8.如果必要,则激活并(用操作系统B)使用必要的硬件资源以满足该特征的需求。可以为某些硬件资源(例如显示器)适度地执行从一个操作系统到另一个的转换,使得在从操作系统A到操作系统B的切换过程中完全或部分地保持它们的状态(例如当前显示菜单),以便减少转换时间和/或减轻对用户体验的负面影响。
9.(用操作系统B)提供所需特征。
示例4:图3是示出根据用于使用设备上不同操作系统中的特征的热引导模型的示例技术(300)的流程图,其中各操作系统不同时运行。图3中所示的技术(300)与上述示例3中的步骤在某些方面不同,而仍然实现在两个操作系统之间的平稳转换。
在该技术(300)中,激活(305)引导加载程序并且检查(310)指示是否要引导操作系统B的标志。如果设置了该标志,则设备引导(315)操作系统B并使用操作系统B来执行(320)所启用的特征功能。可选地,使用除标志之外的指示符来指示将执行的功能和/或将使用哪一操作系统。
如果检测到(325)特征改变,则操作系统确定(330)它是否支持新特征。如果它不支持新特征,则将关于该特征的信息存储(335)在非易失性存储中。复位引导标志以指示应该使用另一操作系统,并且发生重新引导(340)。
在重新引导(340)时,激活(305)引导加载程序并且引导标志指示(310)要引导操作系统A。设备引导(350)操作系统A并使用操作系统A来执行(355)所启用的特征功能。如果检测到(360)特征改变,则操作系统确定(365)它是否支持新特征。如果它不支持新特征,则将关于该特征的信息存储(370)在非易失性存储中,并且设备可以重新引导(375)到操作系统B。
重新引导(340,375)是热引导,因为它们是在设备被打开之后发生的。操作系统的热引导的一个典型特征是并非操作系统中的所有的东西都被重新初始化。热引导功能的示例包括膝上型计算机中的“待机”或“休眠”特征——当膝上型计算机进入待机或休眠模式时,某些状态被保存,使得膝上型计算机被唤醒回来时,它可以从其停止的地方更快地恢复正常操作。
B.讨论
上述示例1、2、3和4与其中主操作系统主存一个或多个操作系统环境并且所有环境共享对必需的硬件资源的访问的技术(有时被称为虚拟化技术)不同。例如,上述示例1、2、3和4中的操作系统转换不一定是由于用户切换操作系统的有意识的动作,它们也不一定涉及主存另一操作系统或模拟其上运行另一操作系统的平台的一个操作系统。用户一点都不需要知道在设备上有多个操作系统可用。
所描述的实现的某些优点和改进包括减少执行特定功能所需的操作系统之间的转换的时间量以及使得操作系统转换不引起用户的注意。
考虑其中使用两个操作系统以便覆盖一定范围的特征的示例设备。在该示例设备中,操作系统A支持光盘媒体回放,而操作系统B支持因特网浏览。当用户浏览因特网时,操作系统B控制该设备。如果用户接着插入光盘并按下设备上的“播放”按钮时,用户通常期望在无需用户从操作系统A切换到操作系统B的特定动作的情况下发生光盘媒体回放。所描述的实现允许向用户隐藏操作系统转换和选择。
通常,当操作系统引导并加载设备驱动程序时,设备驱动程序会将硬件初始化到已知的状态。在用户可见屏幕或外部显示器的情况下,该初始化会导致用户可察觉的闪烁,或者它可以使得外部显示器暂时性地失去与设备信号的同步。通过为每个操作系统实例改变设备驱动程序实现,可以使初始化阶段考虑当前显示状态并且不执行会导致闪烁、破坏或信号丢失的不必要的初始化步骤。这是如何可以将重新引导序列设计成使得操作系统之间的转换较不引起用户注意的一个示例。
III.音频和视频回放设备的示例实现
本节包括用于为处理不同媒体格式(例如视频盘格式)以供音频和视频回放的媒体设备处理操作系统转换的技术和工具的具体示例。在替换实现中,以下示例中所示的步骤可以被重新排序、省略或用不同的步骤代替。
例如,描述从第二操作系统切换到第一操作系统的示例可以被扩展为在不再使用第一操作系统支持的所请求的特征之后,或者响应于使用第二操作系统支持的特征的后续用户动作,默认地切换回第二操作系统。只要必要或需要,操作系统之间的转换可以继续。指定第二操作系统为最初主操作系统的示例可以被修改成指定第一操作系统为最初主操作系统,反之亦然。作为另一替换,设备可以使用除前两个操作系统之外的操作系统来支持不同的媒体格式。本节中的示例描述了执行回放操作(例如HD DVD、蓝光或DVD视频回放或CD音频回放),但是操作系统可以执行特定操作系统专用的或两个或更多操作系统通用的其它操作。本节中的示例将盘改变描述为可以触发操作系统之间的转换的事件,但是其它事件也可以触发操作系统之间的转换,诸如用户选择特定操作系统所支持的特征。本节中的示例描述了两个操作系统之间的切换,但是在超过两个操作系统之间切换是可能的。
A.用于媒体格式改变的适度切换
在某些实现中,用于媒体格式改变的适度切换模型包括多核选择过程,其中两个或多个处理核每个运行支持不同的媒体格式的不同的操作系统。适度切换模型可以导致不同格式的内容的更短的加载时间。
图4是示出用于在设备中适度切换处理转换的示例技术(400)的流程图,该设备使用第一操作系统来播放HD DVD盘并使用第二操作系统来播放其它盘格式的盘。在图4所示的示例中,激活引导加载程序(405)并引导(410,455)操作系统A和B。操作系统B最初检查(460)在设备中是否存在盘。如果存在盘,则操作系统B确定(465)该盘是否是HD DVD盘。如果该盘不是HD DVD盘,则操作系统B可以使用该操作系统来执行所支持的特征功能(例如蓝光、DVD或CD音频回放(470))。当检测到盘改变(475)时,操作系统确定(465)新的盘是否是HD DVD盘。
当操作系统B在启动时或在盘改变后检查盘时,如果盘是HD DVD盘,则操作系统在必要时准备(480)用于转换到操作系统A的硬件资源并且向操作系统A发送唤醒消息(485)。操作系统B进入空闲状态(490)并检查(495)来自操作系统A的唤醒消息。在唤醒之后,操作系统B可以再次使用该操作系统来执行所支持的特征功能(例如蓝光、DVD或CD音频回放(470))。
在图4所示的示例中,当引导操作系统A时,它最初进入空闲状态(415)。操作系统A检查(420)来自操作系统B的唤醒消息。在唤醒之后,操作系统A可以使用该操作系统来执行所支持的特征功能(例如HD DVD视频回放(425))。
当检测到盘改变(430)时,操作系统检查(435)新盘是否是HD DVD盘。如果否,则操作系统在必要时准备(440)用于转换到操作系统B的硬件资源并且向操作系统B发送唤醒消息(445)。操作系统A接着可返回到空闲状态(415)以等待可能的唤醒消息。
在某些实现中,每个操作系统的空闲状态的目标是当相应的操作系统空闲时,避免访问该设备中的硬件。例如,当一个操作系统访问光盘驱动器单元时,可以防止处于空闲状态的其它操作系统访问该驱动器。可以用不同的方式来处理空闲状态。例如,可以将操作系统中的设备驱动程序编码来支持空闲模式。或者,如果操作系统支持动态地加载和卸载设备驱动程序,则可以卸载驱动程序以防止操作系统访问底层硬件。或者,可以将操作系统置于休眠:某些操作系统允许将其状态保存到存储器中并随后停止,以供稍后快速重启。这种休眠特征包括来自微软公司的操作系统中的休眠特征。
无需使用相同的机制来在设备上的每个操作系统中实现空闲状态。例如,一个操作系统可支持休眠,而另一操作系统仅支持加载和卸载驱动程序。支持休眠的操作系统可以通过进入休眠状态来实现空闲模式,而另一操作系统可以通过卸载设备驱动程序来实现空闲模式。例如,在仅可卸载操作系统上的设备驱动程序的子集的情况下,可以使用设备驱动程序卸载和直接支持空闲状态的驱动程序的组合。
该模型的替换是抽象设备中的硬件组件以通过固件层。操作系统中的驱动程序可以与所抽象的组件通信,而非直接与硬件通信。这类似于BIOS概念,类似于操作系统虚拟化环境,或类似于系统中使用的其中通过允许通过另一机制上来对物理总线打隧道的层来抽象设备访问(例如这样使得连网驱动程序可以与USB总线的远侧的网卡通信)的模型。接着可以在抽象对设备的访问的中间层中实现空闲模式功能。
图5示出了具有双核设计的双引导设备(500)的示例,该双核设计具有固件(530)和共享硬件资源(540)。参考图5,第二操作系统(510)(诸如基于Linux的操作系统、其它Unix类或Unix变体操作系统、或其它操作系统)支持蓝光播放器栈(514)以及第二操作系统(510)专用的驱动程序(512)。第一操作系统(520)(诸如
CE操作系统或其它操作系统)支持HD DVD播放器栈(524)以及第一操作系统(520)专用的驱动程序(522)。固件(530)包括引导加载程序守护程序(532)并展示输入/输出服务(534)。固件(530)不从属于任何特定操作系统,并且被用于仲裁引导加载和盘ID检测状态机。输入/输出服务(534)允许两个操作系统(510,520)对设备硬件(550)的共享硬件资源(540)的单个进入点。输入/输出服务(534)类似于现有BIOS服务。输入/输出服务(534)是简单的但足够强大以允许移植不同的操作系统专用驱动程序(512,522)而不牺牲太多的性能或招致对现有驱动程序的太多基本改变。使用简单的读/写/打开/关闭语义,如与Unix系统中发现的“ioctl”系统调用相关联的那些语义,这允许应用程序控制设备驱动程序或与其通信。
适度切换模型可使用额外的存储器、对操作系统的处理硬件资源共享的修改、和/或操作系统之间的协调切换的通信开销,但是可以减少转换时间并改进用户体验。为了减少工程成本,在操作系统中做尽可能少的工作是合乎需要的。使用标准设备驱动程序通常是优选的。
B.用于媒体格式改变的热引导模型
图6是示出用于根据热引导模型来在具有第一和第二操作系统可用的设备中处理盘格式改变的示例技术(600)的流程图,其中各操作系统不同时运行。在该技术(600)中,激活(605)引导加载程序并检查(610)指示是否执行HD DVD回放的标志。如果设置了标志,则设备引导(615)第一操作系统并执行第一操作系统所支持的功能(例如HD DVD回放(620))。可选地,使用除标志之外的指示符来指示将要执行的功能和/或将要使用哪一操作系统。如果检测到盘改变(625),则操作系统确定(630)它是否支持新盘。如果它不支持新盘,则清除(635)HD DVD标志,并且在重新引导(640)时,激活(605)引导加载程序,并且所清除的HD DVD标志指示(610)要引导第二操作系统。
在重新引导(640)之后或者如果最初没有设置HD DVD标志,设备引导(655)第二操作系统。第二操作系统最初检查(660)在设备中是否存在盘。如果存在盘,则第二操作系统确定(665)该盘是否是HD DVD盘。如果该盘不是HD DVD盘,则第二操作系统可以执行该操作系统专用的特征功能(例如蓝光、DVD或CD音频回放(670))。在检测到盘改变(675)时,操作系统确定(665)新盘是否是HD DVD盘。
当第二操作系统在引导时或在盘改变后检查盘时,如果盘是HD DVD盘,则操作系统设置(680)HD DVD标志,并且在重新引导(685)时,激活(605)引导加载程序并且HD DVD标志指示(610)要引导第一操作系统。
重新引导(640,685)是热引导,因为它们是在设备被打开后发生的。可选地,可以直接使用加载和启动操作系统的逻辑,而非通过引导加载程序循环回来。
在不同的操作系统的重新引导或其它加载和启动时,可以跨该不同的操作系统的控制来完全地或部分地持久保持某些硬件资源的状态,以减轻对用户体验的负面影响。例如,高清晰度多媒体接口(“HDMI”)控制器的状态可不被复位,或者前面板显示器的状态可不被复位。
对上述热引导模型的若干替换和扩展是可能的。例如,盘类型标识可被写入一次并且存在于设备的引导加载程序中。引导加载程序可以基于该盘类型标识来选择正确的操作系统。可以使用关闭和重新引导来处理盘改变,以便获取引导加载程序逻辑,这可以简化构建设备的设计工作。
作为另一示例,可以使耗时操作并行化。例如,从存储器加载操作系统和回放应用程序和标识媒体类型的过程可花费相当多的时间。
图7是示出用于并行地执行热引导媒体格式切换操作的示例技术(700)的流程图。在图7所示的示例中,最初运行由当前操作系统支持的回放应用程序。打开(710)光盘托盘,设备停止(720)当前回放处理器,从而停止回放应用程序。(该步骤是可选的,但是为下一步骤释放一些存储器是合乎需要的。)设备开始将另一操作系统加载(730)到存储器中(如果由足够的空闲存储器)。当插入(740)新媒体时,系统标识媒体类型(750)。操作系统加载(740)可以是冗长的操作,所以设备不阻塞在操作系统加载(730)上,从而允许它与一个或多个其它步骤(例如媒体类型的标识(750))并行地进行。媒体类型标识(750)也可以是冗长的操作,因此它也与一个或多个其它步骤(例如操作系统加载(730))同时进行。
设备检查(760)当前操作系统是否支持新媒体。如果新媒体类型将使用已经在运行的当前操作系统,则中止(770)加载新操作系统(730)并为新媒体启动合适的播放器应用程序。如果新媒体类型将使用正在加载的操作系统,则(如果必须)设备等待操作系统完成加载(780)并且重新引导,从而重启存储器中的新操作系统。
一些热引导实现并不依赖于特定的硬件平台,需要较少的硬件资源,并且与某些适度切换实现相比具有较低的总体复杂性。一些热引导实现可以包括不同的内容格式的增加的内容加载时间的成本。
IV.扩展和替换
设备设置应用程序是潜在复杂的软件应用程序,它通常不绑定到任一记录的媒体。对于视频盘播放器,通常经由遥控器上的按钮而非通过插入设置盘来访问设备设置功能。当一次在设备中运行单个操作系统时,可以在每个操作系统上实现设置,这使得开发设备的设计工作复杂化,但是可以得到更好的用户体验。或者,可以在单个操作系统上实现设置,从而在进入设置要求设备重新引导到支持该设置的操作系统的情况下,,以可能的用户体验降低为代价来简化设计工作。可使用混合方法来获取减少的设计工作和增加的可用性的混合。频繁访问的操作可以在超过一个操作系统上实现(例如在回放期间启用/禁用字幕),而较不频繁的操作(例如设置网络连接)可以在单个操作系统上实现。当在设备上同时运行多个操作系统时,可以在单个操作系统上实现设置并仍然运作,而不管当前在设备中的媒体的类型。例如,可以在一个CPU核上运行的第二操作系统上实现设置,生成切换到控制HDDVD回放的第一操作系统的用户界面。该用户界面可以作为视频回放的替换或补充(例如,混合在一起或在分开的屏幕上窗口)来显示。
设备可以实现热引导和适度切换操作系统转换技术的组合。例如,设备可以基于诸如资源使用、转换时间和对用户体验的潜在影响来确定是使用适度切换转换还是热引导转换。这样,设备可以在处理操作系统之间的转换时具有灵活性。
某些媒体格式需要除对回放和菜单导航的支持之外的高级功能支持,诸如可扩展标记语言(“XML”)支持、对ECMA脚本(标准化的脚本语言)的支持、或Java支持。要求对这些种类的高级功能的支持的一些特征也可以驱动操作系统转换。
使用双格式盘可以导致类似于与盘改变相关联的事件的触发操作系统转换的事件。此处所描述的技术和工具可以结合双格式盘使用。
参考各实施例描述和示出了本发明的原理之后,可以认识到,可以在排列和细节上修改所述各实施例,而不脱离这些原理。应当理解,除非另外指明,否则此处所描述的程序、过程或方法不相关于或不限于任何特定类型的计算环境。可依照此处所描述的教导来使用各种类型的通用或专用计算环境或执行操作。各实施例中以软件示出的元素可以用硬件来实现,反之亦然。
鉴于可应用所公开的发明的原理的许多可能的实施例,应该认识到,所示的实施例仅是本发明的优选示例,并且不应该被认为是对本发明的范围的限制。相反,本发明的范围由所附权利要求书来定义。因此,要求保护落入这些权利要求的范围和精神之内的所有内容作为本发明。