[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

US20080189538A1 - Supporting multiple operating systems in media devices - Google Patents

Supporting multiple operating systems in media devices Download PDF

Info

Publication number
US20080189538A1
US20080189538A1 US11/999,605 US99960507A US2008189538A1 US 20080189538 A1 US20080189538 A1 US 20080189538A1 US 99960507 A US99960507 A US 99960507A US 2008189538 A1 US2008189538 A1 US 2008189538A1
Authority
US
United States
Prior art keywords
operating system
digital media
format
operating
media
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
Application number
US11/999,605
Other versions
US8046570B2 (en
Inventor
Brian Douglas King
James C. Finger
Praful Prataprai Chavda
Jeffrey Alan Davis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US11/999,605 priority Critical patent/US8046570B2/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KING, BRIAN DOUGLAS, CHAVDA, PRAFUL PRATAPRAI, DAVIS, JEFFREY ALAN, FINGER, JAMES C.
Priority to AU2008214236A priority patent/AU2008214236B2/en
Priority to MX2009008223A priority patent/MX2009008223A/en
Priority to CN2008800038459A priority patent/CN101606128B/en
Priority to KR1020097016093A priority patent/KR101505209B1/en
Priority to JP2009549155A priority patent/JP5215324B2/en
Priority to BRPI0806729-5A priority patent/BRPI0806729A2/en
Priority to PCT/US2008/051045 priority patent/WO2008097695A1/en
Priority to RU2009130109/08A priority patent/RU2451989C2/en
Priority to CA002675523A priority patent/CA2675523A1/en
Priority to EP08705919.2A priority patent/EP2109818B1/en
Priority to TW097102578A priority patent/TW200841710A/en
Publication of US20080189538A1 publication Critical patent/US20080189538A1/en
Priority to IL199728A priority patent/IL199728A0/en
Publication of US8046570B2 publication Critical patent/US8046570B2/en
Application granted granted Critical
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements

Definitions

  • the Detailed Description is directed to various techniques and tools for supporting multiple operating systems in consumer electronic devices. For example, techniques and tools are described that allow quickly switching between operating systems in video disc players that support different media types while reducing wait time and mitigating possible negative impacts to user experience.
  • FIG. 1 is a block diagram illustrating a generalized example of a suitable computing environment in which several of the described embodiments may be implemented.
  • FIG. 2 is a flow chart showing an example technique for a “graceful-handoff” model of handling feature changes between different operating systems according to one or more described implementations.
  • FIG. 3 is a flow chart showing an example technique for a “warm-boot” model of handling feature changes between different operating systems according to one or more described implementations.
  • FIG. 4 is a flow chart showing an example technique for graceful-handoff handling of disc format changes according to one or more described implementations.
  • FIG. 5 is a system diagram showing firmware with a boot loader and BIOS services for handling disc format changes according to one or more described implementations.
  • FIG. 6 is a flow chart showing an example technique for warm-boot handling of disc format changes according to one or more described implementations.
  • FIG. 7 is a flow chart showing an example technique for performing warm-boot media format switching operations in parallel according to one or more described implementations.
  • FIG. 1 illustrates a generalized example of a suitable computing environment ( 100 ) in which several of the described embodiments may be implemented.
  • the computing environment ( 100 ) is not intended to suggest any limitation as to scope of use or functionality, as the techniques and tools may be implemented in diverse general-purpose or special-purpose computing environments.
  • the computing environment ( 100 ) can be provided with a media device such as a portable audio player, portable video player, portable audio and video player, console audio player, console video player or console audio and video player.
  • a media device can be a stand-alone unit or included in another device (e.g., communications device or display unit).
  • the computing environment ( 100 ) includes at least two processing units ( 110 , 115 ) and associated memory ( 120 , 125 ).
  • the processing units ( 110 , 115 ) may include a CPU, a GPU for video acceleration, or other co-processing units. In FIG. 1 , this most basic configuration ( 130 ) is included within a dashed line.
  • the computing environment includes a single processing unit.
  • the processing units ( 110 , 115 ) execute computer-executable instructions and may be real or virtual processors. In a multi-processing system, multiple processing units execute computer-executable instructions to increase processing power.
  • a host encoder or decoder process uses available processing units ( 110 , 115 ) to perform encoding or decoding operations. Certain operations may be performed by a specialized processing unit such as a GPU.
  • the memory ( 120 , 125 ) may be volatile memory (e.g., registers, cache, RAM), non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or some combination of the two.
  • the memory ( 120 , 125 ) may be specific to one processor or shared by two or more processors.
  • the memory ( 120 , 125 ) stores software ( 180 ) for a device implementing strategies for supporting multiple operating systems.
  • a computing environment may have additional features.
  • the computing environment ( 100 ) includes storage ( 140 ), one or more input devices ( 150 ), one or more output devices ( 160 ), and one or more communication connections ( 170 ).
  • An interconnection mechanism such as a bus, controller, or network interconnects the components of the computing environment ( 100 ).
  • operating system software provides an operating environment for other software executing in the computing environment ( 100 ), and coordinates activities of the components of the computing environment ( 100 ).
  • the storage ( 140 ) may be removable or non-removable, and includes magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or any other medium which can be used to store information and which can be accessed within the computing environment ( 100 ).
  • the storage ( 140 ) stores instructions for the software ( 180 ).
  • the input device(s) ( 150 ) may be a touch input device such as a keyboard, mouse, pen, touch screen, or trackball, a voice input device, a scanning device, or another device that provides input to the computing environment ( 100 ).
  • the input device(s) ( 150 ) may be a sound card, video card, TV tuner card, or similar device that accepts audio or video input in analog or digital form, or a DVD, CD-ROM or CD-RW that reads encoded audio or video into the computing environment ( 100 ).
  • the output device(s) ( 160 ) may be a display, printer, speaker, CD- or DVD-writer, or another device that provides output from the computing environment ( 100 ).
  • the communication connection(s) ( 170 ) enable communication over a communication medium to another computing entity.
  • the communication medium conveys information such as computer-executable instructions, audio or video input or output, or other data in a modulated data signal.
  • a modulated data signal is a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media include wired or wireless techniques implemented with an electrical, optical, radio frequency (“RF”), infrared (“IR”), acoustic, or other carrier.
  • Computer-readable media are any available media that can be accessed within a computing environment.
  • Computer-readable media include memory ( 120 ), storage ( 140 ), communication media, and combinations of any of the above.
  • program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • the functionality of the program modules may be combined or split between program modules as desired in various embodiments.
  • Computer-executable instructions for program modules may be executed within a local or distributed computing environment.
  • Consumer electronics devices are becoming increasingly complicated and are moving support for much of their functionality from hardware to software. Older and simpler formats such as DVD often leave some of their processing to software even though they typically offload much of their processing to cheaper and simpler hardware. For example, audio and video streams can be decoded by dedicated hardware, while menu processing (or “navigation”) functionality can be implemented in software. As a result, some consumer electronics devices that support relatively simple formats such as DVD nonetheless have evolved to have complicated software.
  • high-definition video content encoded according to the HD DVD video disc standard (sometimes referred to herein as HD DVD format) can be decoded using a playback application supported by a first operating system (such as the Windows® CE operating system from Microsoft Corporation or other operating system), and high-definition video content encoded according to the Blu-ray video disc standard (sometimes referred to herein as Blu-ray format) can be decoded using a playback application supported by a second operating system (such as a Linux-based operating system, other Unix-like or Unix variant operating system, or other operating system).
  • a first operating system such as the Windows® CE operating system from Microsoft Corporation or other operating system
  • Blu-ray video disc standard (sometimes referred to herein as Blu-ray format) can be decoded using a playback application supported by a second operating system (such as a Linux-based operating system, other Unix-like or Unix variant operating system, or other operating system).
  • Dual-format discs may have still other operating system requirements.
  • Some software designed for particular operating environments has evolved over time to have dependencies on those operating environments. As a result of these and other factors, consumer electronics devices have increasingly complicated software environments.
  • a problem to be addressed by consumer electronics devices is how to run multiple software applications (each of which may require its own operating system) in a cost-effective manner.
  • One solution is to include a processor, complete with operating system and software application, for each type of media format supported.
  • a more cost-effective solution is to store multiple operating systems and software applications (e.g., up to one operating system and software application per media format) and have the player reboot when a different type of media is processed. For example, a player could have one operating system for HD DVD, another for DVD, and another for CD Audio.
  • the mapping between operating systems and supported applications need not be one-to-one. For example, DVD and CD Audio playback might run on one operating system, while HD DVD playback runs on a different operating system.
  • multi-boot techniques and tools allow devices to switch between operating systems at low cost and without undue interference to user experience.
  • dual-boot is sometimes used to describe a device that switches between two operating systems, although the ideas discussed herein can be extended to devices that are capable of running more than two operating systems.
  • Dual-boot devices with two available operating systems are a subset of multi-boot devices, which can have two or more available operating systems.
  • the terms multi-boot and dual-boot do not indicate a requirement that the device must reboot to switch between operating systems, as explained in detail below.
  • Options for multi-boot designs include the following.
  • Examples in this section describe switching between two operating systems, but it is possible to switch between more than two operating systems.
  • the steps shown in the examples below can be reordered, omitted or replaced with different steps.
  • examples that describe switching from operating system A to operating system B can be extended to switch back to operating system A by default after a requested feature of operating system B is no longer being used, or in response to a subsequent user action that uses a feature in operating system A. Transitions between operating systems can continue as long as needed or desired. Examples in which operating system A is an initial, primary operating system can be modified so that operating system B is the initial, primary operating system, or vice versa.
  • the examples are implemented with a digital media player, which can be a stand-alone device or included as part of another device. Alternatively, the examples are implemented with another consumer electronics device or other computing device.
  • a consumer electronics device is configured to allow operating system A and operating system B to run simultaneously.
  • operating system A is the primary operating system and currently controls most aspects of the device. It detects that a user is attempting to use a feature provided by operating system B (e.g., by putting a video disc of a particular format into the device).
  • the process of Example 1 includes the following steps:
  • operating system A when operating system A detects a disc in a format that it does not play, it sends a message (e.g., with a value of 2) to its messaging driver, which delivers the message to the mailbox queue of the driver of operating system B.
  • the driver for operating system B waits for messages in its mailbox queue, receives the message from operating system A, interprets the message (whose value indicates “wake up”), and takes steps to wake up operating system B and core B (for example, re-enabling drivers as appropriate).
  • Operating system A puts itself to sleep after it sends the wake-up message to operating system B, assuming that operating system B will successfully wake.
  • operating system A waits for a message from operating system B (e.g., with a value of 1) instructing operating system A to put itself in sleep mode. Having operating system B send such a message after operating system B has successfully woken allows for better error handling—if operating system A does not get such a sleep message after some period of time, operating system A can initiate error handling by informing the user, rebooting the entire system and/or taking another step.
  • operating system B e.g., with a value of 1
  • operating system A can initiate error handling by informing the user, rebooting the entire system and/or taking another step.
  • Operating system B sends a message (e.g., with a value of 2) to its messaging driver, which delivers the message to the mailbox queue of the driver of operating system A.
  • the driver for operating system A waits for messages in its mailbox queue, receives the message from operating system B, interprets the message (whose value indicates “wake up”), and takes steps to wake operating system A and core A.
  • Operating system B puts itself to sleep after it sends the wake-up message to operating system A or, alternatively, waits for a sleep message from operating system A.
  • FIG. 2 is a flow chart showing an example technique ( 200 ) according to a graceful-handoff model for using features in concurrently running operating systems.
  • the technique ( 200 ) shown in FIG. 2 differs in some respects from the steps in Example 1, above, while still achieving a smooth transition between two operating systems.
  • a boot loader is activated ( 205 ) and operating systems A and B are booted ( 210 , 255 ).
  • the operating systems start in an idle state ( 210 , 255 ).
  • Either of the operating systems can be woken up from the idle state ( 215 , 260 ) by a wake-up message ( 220 , 265 ) from the other operating system. This can occur, for example, when a user requests an operation, performs a navigation action, checks or changes a configuration setting, or changes media content (e.g., by changing a disc).
  • the activated operating system After waking, the activated operating system performs ( 225 or 270 ) feature functionality enabled using that operating system. Upon detecting a feature change ( 230 or 275 ), the activated operating system checks ( 235 or 280 ) whether it can perform the new feature. If not, the operating system prepares ( 240 or 285 ) hardware resources, as necessary, for transition to the other operating system, and sends a wake-up message ( 245 or 290 ) to the other operating system. The operating system that sends the wake-up message can then return to an idle state to await a possible wake-up message.
  • operating systems A and B initially enter idle states ( 215 , 260 ) after being booted ( 210 , 255 ).
  • one or more of the operating systems is initially in an active state.
  • a first operating system enters an initially active state when an HD DVD disc is in the player when it is turned on. Instead of entering an initial idle state and checking for a wake-up message, the first operating system performs feature functionality enabled using software running on the first operating system (e.g., launching an HD DVD menu, or starting HD DVD playback) until an event occurs that requires another operating system to become active (e.g., a user inserting a Blu-ray disc).
  • a device can be configured such that one operating system is active by default at start up.
  • operating system A and operating system B are configured to run individually, not simultaneously.
  • operating system A is the primary operating system and currently controls most aspects of the device. It detects that a user is attempting to use a feature provided by operating system B.
  • the process of Example 3 includes the following steps:
  • FIG. 3 is a flow chart showing an example technique ( 300 ) according to a warm-boot model for using features in different operating systems on a device, where the operating systems do not run concurrently.
  • the technique ( 300 ) shown in FIG. 3 differs in some respects from the steps in Example 3, above, while still achieving a smooth transition between two operating systems.
  • a boot loader is activated ( 305 ) and a flag is checked ( 310 ) that indicates whether operating system B is to be booted. If the flag is set, the device boots ( 315 ) operating system B and performs ( 320 ) feature functionality enabled using operating system B. Alternatively, an indicator other than a flag is used to indicate functions that will be performed and/or which operating system will be used.
  • the operating system determines ( 330 ) whether it supports the new feature. If it does not support the new feature, information about the feature is stored ( 335 ) in non-volatile storage. The boot flag is reset to indicate the other operating system should be used, and a reboot ( 340 ) occurs.
  • the boot loader is activated ( 305 ) and the boot flag indicates ( 310 ) that operating system A is to be booted.
  • the device boots ( 350 ) operating system A and performs ( 355 ) feature functionality enabled using operating system A. If a feature change is detected ( 360 ), the operating system determines ( 365 ) whether it supports the new feature. If it does not support the new feature, information about the feature is stored ( 370 ) in non-volatile storage and the device can reboot ( 375 ) to operating system B.
  • the reboots ( 340 , 375 ) are warm boots, since they occur after the device has been turned on.
  • One typical characteristic of a warm boot of an operating system is that not everything in the operating system is reinitialized. Examples of warm-boot functionality include “standby” or “hibernate” features in laptop computers—some state gets saved when a laptop computer enters standby or hibernate mode, so that when the laptop computer wakes back up it can more quickly resume normal operation from where it left off.
  • Examples 1, 2, 3 and 4 above differ from techniques (sometimes referred to as virtualization techniques) in which one or more operating system environments are hosted by a primary operating system, and all environments share access to the necessary hardware resources.
  • the operating system transitions in Examples 1, 2, 3 and 4 above do not necessarily result from a conscious act by a user to switch operating systems, nor do they involve one operating system hosting another operating system or emulating a platform on which the other operating system runs. The user need not have any awareness of multiple operating systems being available on the device.
  • Some advantages and improvements for described implementations include reduction in the amount of time to perform transitions between operating systems needed for specific functionality, as well as making operating system transitions unobtrusive to users.
  • operating system A supports optical disc media playback
  • operating system B supports internet browsing. While a user is browsing the internet, operating system B is in control of the device. If the user then inserts an optical disc and hits the “Play” button on the device, the user will typically expect optical media playback to occur without a specific action by the user to switch from operating system B to operating system A. Described implementations allow the operating system transition and selection to be hidden from the user.
  • the device driver will initialize the hardware to a known state. In the case of a user-visible screen or external display, this initialization may result in a user-perceivable flicker, or it may cause an external display to momentarily lose synchronization with the device's signal.
  • the initialization phase can be made to account for a current display state and not perform unnecessary initialization steps which would result in flicker, corruption, or loss-of-signal. This is one example of how the reboot sequence can be designed to make the transition between operating systems less noticeable to a user.
  • This section includes specific examples of techniques and tools for handling operating system transitions for media devices that handle different media formats (e.g., video disc formats) for audio and video playback.
  • media formats e.g., video disc formats
  • the steps shown in the examples below can be reordered, omitted or replaced with different steps.
  • examples that describe switching from a second operating system to a first operating system can be extended to switch back to the second operating system by default after a requested feature supported with the first operating system is no longer being used, or in response to a subsequent user action that uses a feature supported with the second operating system. Transitions between operating systems can continue as long as needed or desired. Examples that designate the second operating system as an initial primary operating system can be modified to designate the first operating system as the initial primary operating system, or vice versa. As another alternative, devices can use operating systems other than the first two operating systems to support different media formats.
  • Examples in this section describe performing playback operations (e.g., HD DVD, Blu-ray or DVD video playback or CD audio playback), but the operating systems may perform other operations specific to a particular operating system or common to two or more operating systems. Examples in this section describe disc changes as events that may trigger a transition between operating systems, but other events also may trigger transitions between operating systems, such as user selection of a feature supported with a particular operating system. Examples in this section describe switching between two operating systems, but it is possible to switch between more than two operating systems.
  • playback operations e.g., HD DVD, Blu-ray or DVD video playback or CD audio playback
  • Examples in this section describe disc changes as events that may trigger a transition between operating systems, but other events also may trigger transitions between operating systems, such as user selection of a feature supported with a particular operating system. Examples in this section describe switching between two operating systems, but it is possible to switch between more than two operating systems.
  • a graceful-handoff model for media format changes includes a multi-core selection process where two or more processing cores each run a different operating system that supports a different media format.
  • the graceful-handoff model can result in shorter load times for content in different formats.
  • FIG. 4 is a flow chart showing an example technique ( 400 ) for graceful-handoff handling of transitions in a device that uses a first operating system for playing HD DVD discs and a second operating system for playing discs of other disc formats.
  • a boot loader is activated ( 405 ) and the operating systems A and B are booted ( 410 , 455 ).
  • Operating system B initially checks ( 460 ) whether a disc is present in the device. If a disc is present, operating system B determines ( 465 ) whether the disc is an HD DVD disc. If the disc is not an HD DVD disc, operating system B can perform feature functionality supported using that operating system (e.g., Blu-ray, DVD or CD audio playback ( 470 )). Upon detecting a disc change ( 475 ), the operating system determines ( 465 ) whether the new disc is an HD DVD disc.
  • operating system B When operating system B is checking for a disc at startup or after a disc change, if the disc is an HD DVD disc the operating system prepares ( 480 ) hardware resources, as necessary, for transition to operating system A and sends a wake-up message ( 485 ) to operating system A. Operating system B enters an idle state ( 490 ) and checks ( 495 ) for a wake-up message from operating system A. After waking, operating system B can again perform feature functionality supported using that operating system (e.g., Blu-ray, DVD or CD audio playback ( 470 )).
  • operating system e.g., Blu-ray, DVD or CD audio playback ( 470 )
  • operating system A when operating system A is booted, it initially enters an idle state ( 415 ). Operating system A checks ( 420 ) for a wake-up message from operating system B. After waking, operating system A can perform feature functionality supported using that operating system (e.g., HD DVD video playback ( 425 )).
  • operating system A e.g., HD DVD video playback ( 425 )
  • the operating system Upon detecting a disc change ( 430 ), the operating system checks ( 435 ) whether the new disc is an HD DVD disc. If not, the operating system prepares ( 440 ) hardware resources, as necessary, for transition to operating system B and sends a wake-up message ( 445 ) to operating system B. Operating system A can then return to an idle state ( 415 ) to await a possible wake-up message.
  • a goal of the idle states for each operating system is to avoid accessing hardware in the device when the respective operating system is idle. For example, while one operating system is accessing the optical drive unit, other operating systems in idle states can be prevented from accessing the drive.
  • Idle states can be handled in different ways. For example, device drivers in the operating system may be coded to support an idle mode. Or, if the operating system supports dynamically loading and unloading device drivers, the driver can be unloaded to prevent the operating system from accessing the underlying hardware. Or, an operating system can be put to sleep: some operating systems allow their states to be saved to memory and then stopped, to be later quickly restarted. Such sleep features include the hibernate features in Windows® operating systems from Microsoft Corporation.
  • hibernation may be supported by one operating system, while another operating system only supports loading and unloading drivers.
  • An operating system supporting hibernation can implement an idle mode by entering a hibernation state, while another operating system can implement an idle mode by unloading device drivers.
  • a combination of device driver unloading and drivers directly supporting an idle mode can be used, for example, in a case where only a subset of device drivers on an operating system can be unloaded.
  • An alternative to this model is to abstract hardware components in the device to go through a layer of firmware.
  • the drivers in the operating system can communicate with the abstracted components, instead of directly with the hardware.
  • This is similar to a BIOS concept, to operating system virtualization environments, or to a model used in systems where device access is abstracted through a layer that allows the physical bus to be tunneled over another mechanism (e.g., so that a networking driver may communicate with a network card on the far side of a USB bus).
  • the idle mode functionality can then be implemented in the intermediate layer that abstracts access to the devices.
  • FIG. 5 shows an example of a dual-boot device ( 500 ) with a dual core design with firmware ( 530 ) and shared hardware resources ( 540 ).
  • a second operating system ( 510 ) (such as a Linux-based operating system, other Unix-like or Unix variant operating system, or other operating system) supports a Blu-ray player stack ( 514 ) and drivers ( 512 ) specific to the second operating system ( 510 ).
  • a first operating system ( 520 ) (such as the Windows® CE operating system or other operating system) supports an HD DVD player stack ( 524 ) and drivers ( 522 ) specific to the first operating system ( 520 ).
  • the firmware ( 530 ) includes a boot loader daemon ( 532 ) and exposes input/output services ( 534 ).
  • the firmware ( 530 ) has no affiliation with any specific operating system and is used to arbitrate a boot-loading and disc ID detection state machine.
  • the input/output services ( 534 ) allow a single point of entry to shared hardware resources ( 540 ) of the device hardware ( 550 ) for both operating systems ( 510 , 520 ).
  • the input/output services ( 534 ) are similar to existing BIOS services.
  • the input/output services ( 534 ) are simple but powerful enough to allow different operating system-specific drivers ( 512 , 522 ) to be ported without sacrificing too much performance or incurring too many fundamental changes to an existing driver. Simple read/write/open/close semantics are used, such as those associated with the “ioctl” system call found on Unix systems, which allows an application to control or communicate with a device driver.
  • the graceful-handoff model may use additional memory, modifications to operating systems to deal with hardware resource sharing, and/or communication overhead between operating systems to coordinate handoffs, but can decrease transition times and improve user experience. To reduce engineering costs, it is often desirable to do as little work as possible in the operating system. Using standard device drivers is often preferred.
  • FIG. 6 is a flow chart showing an example technique ( 600 ) for handling disc format changes in a device having first and second operating systems available according to a warm-boot model, where the operating systems do not run concurrently.
  • a boot loader is activated ( 605 ) and a flag is checked ( 610 ) that indicates whether HD DVD playback will be performed. If the flag is set, the device boots ( 615 ) a first operating system and performs functionality supported by the first operating system (e.g., HD DVD playback ( 620 )).
  • an indicator other than a flag is used to indicate functions that will be performed and/or which operating system will be used.
  • the operating system determines ( 630 ) whether it supports the new disc. If it does not support the new disc, the HD DVD flag is cleared ( 635 ), and on reboot ( 640 ) the boot loader is activated ( 605 ) and the cleared HD DVD flag indicates ( 610 ) that the second operating system is to be booted.
  • the device boots ( 655 ) the second operating system.
  • the second operating system initially checks ( 660 ) whether a disc is present in the device. If a disc is present, the second operating system determines ( 665 ) whether the disc is an HD DVD disc. If the disc is not an HD DVD disc, the second operating system can perform feature functionality specific to that operating system (e.g., Blu-ray, DVD or CD Audio playback ( 670 )). Upon detecting a disc change ( 675 ), the operating system determines ( 665 ) whether the new disc is an HDDVD disc.
  • the operating system sets ( 680 ) the HD DVD flag, and on reboot ( 685 ) the boot loader is activated ( 605 ) and the HD DVD flag indicates ( 610 ) that the first operating system is to be booted.
  • the reboots ( 640 , 685 ) are warm boots, since they occur after the device has been turned on.
  • logic can be used that loads and launches operating systems directly, rather than cycling back through the boot loader.
  • the states of some hardware resources may be persisted completely or partially across the control of the different operating systems to mitigate negative impact on user experience.
  • the state of a High-Definition Multimedia Interface (“HDMI”) controller may not be reset, or the state of a front-panel display may not be reset.
  • HDMI High-Definition Multimedia Interface
  • disc type identification can be written once and exist in the boot loader for the device.
  • the boot loader can choose the correct operating system based on the disc type identification.
  • a disc change can be handled with a shut-down and reboot in order to get boot loader logic, which may simplify the engineering effort to build the device.
  • time consuming operations can be parallelized. For example, loading the operating system and playback application from memory and the process of identifying the media type may take considerable time.
  • FIG. 7 is a flow chart showing an example technique ( 700 ) for performing warm-boot media format switching operations in parallel.
  • a playback application supported by a current operating system is initially running.
  • a disc tray is opened ( 710 ), and the device halts ( 720 ) the current playback processor, stopping the playback application. (This step is optional, but may be desirable to free some memory for the next step.)
  • the device starts loading ( 730 ) another operating system into memory (if there is enough free memory).
  • the system identifies the media type ( 750 ).
  • the operating system loading ( 730 ) can be a lengthy operation, so the device does not block on operating system loading ( 730 ), allowing it to proceed in parallel with one or more other steps (e.g., identification of media type ( 750 )).
  • Media type identification ( 750 ) also can be a lengthy operation, so it also proceeds at the same time as one or more other steps (e.g., operating system loading ( 730 )).
  • the device checks ( 760 ) whether the current operating system supports the new media. If the new media type will use the current operating system that is already running, then the loading of the new operating system ( 730 ) is aborted ( 770 ) and the proper player application is launched for the new media. If the new media type will use the operating system being loaded, the device waits for the operating system to finish loading ( 780 ) if necessary and reboots, restarting the new operating system in memory.
  • Some warm-boot implementations do not rely on a particular hardware platform, require less hardware resources, and have less overall complexity when compared with some graceful-handoff implementations. Some warm-boot implementations may include a cost of increased content load times for different content formats.
  • a device setup application is a potentially complicated software application that is not usually tied to any recorded media.
  • device setup functions are often accessed via a button on a remote control rather than by inserting a setup disc.
  • setup can be implemented on each operating system, which complicates the engineering effort to develop the device, but may yield a better user experience.
  • setup can be implemented on a single operating system, simplifying engineering effort at a possible cost of detracting from the user experience if entering setup requires the device to reboot to the operating system that supports the setup.
  • a hybrid approach can be used to obtain a mix of reduced engineering effort and increased usability.
  • Frequently accessed operations can be implemented on more than one operating system (e.g., enabling/disabling subtitles during playback), and less frequent operations can be implemented on a single operating system (e.g., setting up a network connection).
  • setup can be implemented on a single operating system and still function regardless of the type of media currently in the device. For example, setup can be implemented on a second operating system running on one CPU core, producing a user interface that is handed off to a first operating system that controls HD DVD playback.
  • the user interface can be displayed instead of, or in addition to (e.g., blended together or in a separate on-screen window) video playback.
  • a device can implement a combination of warm-boot and graceful-handoff operating system transition techniques. For example, a device can determine whether to use a graceful-handoff transition or a warm-boot transition based on factors such as resource usage, transition time, and potential impact to user experience. In this way, a device can have flexibility in handling transitions between operating systems.
  • Some media formats require advanced functionality support beyond support for playback and menu navigation, such as Extensible Markup Language (“XML”) support, support for ECMAScript (a standardized scripting language), or Java support. Selection of features that require support for these kinds of advanced functionality also can drive operating system transitions.
  • XML Extensible Markup Language
  • ECMAScript a standardized scripting language
  • Java support Selection of features that require support for these kinds of advanced functionality also can drive operating system transitions.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Stored Programmes (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)

Abstract

Techniques and tools for supporting multiple operating systems in consumer electronic devices. For example, techniques and tools are described that allow quickly switching between operating systems in video disc players that support different media types while reducing wait time and mitigating possible negative impacts to user experience.

Description

    RELATED APPLICATION INFORMATION
  • This application claims the benefit of U.S. Provisional Patent Application No. 60/899,909, filed Feb. 6, 2007, the disclosure of which is hereby incorporated by reference.
  • BACKGROUND
  • Media formats for consumer electronics devices are becoming increasingly complicated, while also moving much of their advanced functionality from hardware to software. As a result, the software environments of consumer electronics devices have become increasingly complicated.
  • In addition, older and simpler formats such as DVD still leave some of their processing to software even though they offload much of their processing to cheaper and simpler hardware. For example, while audio and video streams are likely to be decoded by dedicated hardware, menu processing (or “navigation”) functionality may be implemented in software. While basic navigation software can be relatively simple, the DVD market has evolved over time. DVD players have responded with complicated menu processing logic to correctly handle DVDs with more features. As a result, the relatively simple DVD format has evolved so that its playback software is now quite complicated. Many player manufacturers have a significant investment in this software, and the software has evolved over time to have dependencies on their operating environments.
  • With different media formats available, there exists a need for consumer electronics devices that support multiple formats. For example, when one considers that users generally expect their DVD player to also play CD Audio discs, which is a very different media format, it becomes clear that supporting multiple formats is desirable. A problem to be addressed, then, is how to run multiple software applications that may require their own operating systems in a cost-effective manner.
  • SUMMARY
  • This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
  • In summary, the Detailed Description is directed to various techniques and tools for supporting multiple operating systems in consumer electronic devices. For example, techniques and tools are described that allow quickly switching between operating systems in video disc players that support different media types while reducing wait time and mitigating possible negative impacts to user experience.
  • Additional features and advantages will be made apparent from the following detailed description of various embodiments that proceeds with reference to the accompanying drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram illustrating a generalized example of a suitable computing environment in which several of the described embodiments may be implemented.
  • FIG. 2 is a flow chart showing an example technique for a “graceful-handoff” model of handling feature changes between different operating systems according to one or more described implementations.
  • FIG. 3 is a flow chart showing an example technique for a “warm-boot” model of handling feature changes between different operating systems according to one or more described implementations.
  • FIG. 4 is a flow chart showing an example technique for graceful-handoff handling of disc format changes according to one or more described implementations.
  • FIG. 5 is a system diagram showing firmware with a boot loader and BIOS services for handling disc format changes according to one or more described implementations.
  • FIG. 6 is a flow chart showing an example technique for warm-boot handling of disc format changes according to one or more described implementations.
  • FIG. 7 is a flow chart showing an example technique for performing warm-boot media format switching operations in parallel according to one or more described implementations.
  • DETAILED DESCRIPTION
  • Techniques and tools for supporting multiple operating systems, e.g., in embedded devices such as media players, are described herein.
  • Various alternatives to the implementations described herein are possible. For example, certain techniques described with reference to flowchart diagrams can be altered by changing the ordering of stages shown in the flowcharts, by repeating or omitting certain stages, etc., while achieving the same result. Different embodiments implement one or more of the described techniques and tools. Some of the techniques and tools described herein address one or more of the problems noted in the Background. Typically, a given technique/tool does not solve all such problems, however.
  • I. Computing Environment
  • FIG. 1 illustrates a generalized example of a suitable computing environment (100) in which several of the described embodiments may be implemented. The computing environment (100) is not intended to suggest any limitation as to scope of use or functionality, as the techniques and tools may be implemented in diverse general-purpose or special-purpose computing environments. For example, the computing environment (100) can be provided with a media device such as a portable audio player, portable video player, portable audio and video player, console audio player, console video player or console audio and video player. Such a media device can be a stand-alone unit or included in another device (e.g., communications device or display unit).
  • With reference to FIG. 1, the computing environment (100) includes at least two processing units (110, 115) and associated memory (120, 125). The processing units (110, 115) may include a CPU, a GPU for video acceleration, or other co-processing units. In FIG. 1, this most basic configuration (130) is included within a dashed line. Alternatively, the computing environment includes a single processing unit. The processing units (110, 115) execute computer-executable instructions and may be real or virtual processors. In a multi-processing system, multiple processing units execute computer-executable instructions to increase processing power. In encoding or decoding scenarios, a host encoder or decoder process uses available processing units (110, 115) to perform encoding or decoding operations. Certain operations may be performed by a specialized processing unit such as a GPU. The memory (120, 125) may be volatile memory (e.g., registers, cache, RAM), non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or some combination of the two. The memory (120, 125) may be specific to one processor or shared by two or more processors. The memory (120, 125) stores software (180) for a device implementing strategies for supporting multiple operating systems.
  • A computing environment may have additional features. For example, the computing environment (100) includes storage (140), one or more input devices (150), one or more output devices (160), and one or more communication connections (170). An interconnection mechanism (not shown) such as a bus, controller, or network interconnects the components of the computing environment (100). Typically, operating system software (not shown) provides an operating environment for other software executing in the computing environment (100), and coordinates activities of the components of the computing environment (100).
  • The storage (140) may be removable or non-removable, and includes magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or any other medium which can be used to store information and which can be accessed within the computing environment (100). The storage (140) stores instructions for the software (180).
  • The input device(s) (150) may be a touch input device such as a keyboard, mouse, pen, touch screen, or trackball, a voice input device, a scanning device, or another device that provides input to the computing environment (100). For audio or video, the input device(s) (150) may be a sound card, video card, TV tuner card, or similar device that accepts audio or video input in analog or digital form, or a DVD, CD-ROM or CD-RW that reads encoded audio or video into the computing environment (100). The output device(s) (160) may be a display, printer, speaker, CD- or DVD-writer, or another device that provides output from the computing environment (100).
  • The communication connection(s) (170) enable communication over a communication medium to another computing entity. The communication medium conveys information such as computer-executable instructions, audio or video input or output, or other data in a modulated data signal. A modulated data signal is a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired or wireless techniques implemented with an electrical, optical, radio frequency (“RF”), infrared (“IR”), acoustic, or other carrier.
  • The techniques and tools can be described in the general context of computer-readable media. Computer-readable media are any available media that can be accessed within a computing environment. By way of example, and not limitation, with the computing environment (100), computer-readable media include memory (120), storage (140), communication media, and combinations of any of the above.
  • The techniques and tools can be described in the general context of computer-executable instructions, such as those included in program modules, being executed in a computing environment on a target real or virtual processor. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or split between program modules as desired in various embodiments. Computer-executable instructions for program modules may be executed within a local or distributed computing environment.
  • For the sake of presentation, the detailed description uses terms like “check” and “wake” to describe computer operations in a computing environment. These terms are high-level abstractions for operations performed by a computer, and should not be confused with acts performed by a human being. The actual computer operations corresponding to these terms vary depending on implementation.
  • II. Strategies for Supporting Multiple Operating Systems in Consumer Electronics Devices
  • Consumer electronics devices are becoming increasingly complicated and are moving support for much of their functionality from hardware to software. Older and simpler formats such as DVD often leave some of their processing to software even though they typically offload much of their processing to cheaper and simpler hardware. For example, audio and video streams can be decoded by dedicated hardware, while menu processing (or “navigation”) functionality can be implemented in software. As a result, some consumer electronics devices that support relatively simple formats such as DVD nonetheless have evolved to have complicated software.
  • In addition, playback tools for different media formats may have different operating system requirements and may further complicate the software environments of devices that handle them. For example, high-definition video content encoded according to the HD DVD video disc standard (sometimes referred to herein as HD DVD format) can be decoded using a playback application supported by a first operating system (such as the Windows® CE operating system from Microsoft Corporation or other operating system), and high-definition video content encoded according to the Blu-ray video disc standard (sometimes referred to herein as Blu-ray format) can be decoded using a playback application supported by a second operating system (such as a Linux-based operating system, other Unix-like or Unix variant operating system, or other operating system). Dual-format discs (e.g., discs with content in Blu-ray format and content in HD DVD format) may have still other operating system requirements. Some software designed for particular operating environments has evolved over time to have dependencies on those operating environments. As a result of these and other factors, consumer electronics devices have increasingly complicated software environments.
  • A problem to be addressed by consumer electronics devices is how to run multiple software applications (each of which may require its own operating system) in a cost-effective manner. One solution is to include a processor, complete with operating system and software application, for each type of media format supported. A more cost-effective solution is to store multiple operating systems and software applications (e.g., up to one operating system and software application per media format) and have the player reboot when a different type of media is processed. For example, a player could have one operating system for HD DVD, another for DVD, and another for CD Audio. The mapping between operating systems and supported applications need not be one-to-one. For example, DVD and CD Audio playback might run on one operating system, while HD DVD playback runs on a different operating system.
  • However, there are potential problems associated with running multiple operating systems. Consider a device that supports two digital video disc media formats: the HD DVD format running on a first operating system, and the Blu-ray format (sometimes referred to as Blu-ray Disc format) running on a second operating system very different than the first operating system. One issue to be considered is disc loading time when transitioning from one format to another (e.g., from Blu-ray playback, supported using the second operating system, to HD DVD-Video playback, supported using the first operating system). Another issue to be considered is how to allow users to switch between multiple software applications (that require their own operating systems) while keeping the switch between operating systems invisible to the user to reduce the potential negative impact on user experience. Described “multi-boot” techniques and tools allow devices to switch between operating systems at low cost and without undue interference to user experience. In the descriptions herein, the term “dual-boot” is sometimes used to describe a device that switches between two operating systems, although the ideas discussed herein can be extended to devices that are capable of running more than two operating systems. Dual-boot devices with two available operating systems are a subset of multi-boot devices, which can have two or more available operating systems. The terms multi-boot and dual-boot do not indicate a requirement that the device must reboot to switch between operating systems, as explained in detail below.
  • Options for multi-boot designs include the following.
      • 1. Operating system transitions are handled with a cooperative handoff (or graceful handoff) mechanism in which two or more operating systems are operating simultaneously. For example, in a described implementation a handoff between a first operating system and a second operating system is performed while both first and second operating systems are kept running. One operating system is left in an idle state after the handoff.
      • 2. Operating system transitions are handled with a hand-off mechanism that involves a warm boot to one of the operating systems. The term “warm boot” is used herein to refer to a boot of an operating system on a device that occurs after the device has already been powered on, with an operating system loaded.
        Selection between multi-boot design options can depend on a number of factors, such as: chip selection (e.g., single core or dual core), cost of implementation and external dependencies. Many chip designs have a single processor core and support one operating system at a time (unless low-level hardware threading or another technology provides support for simultaneously running multiple operating systems). Other chip designs have two processor cores, and a single symmetric multiprocessing-aware operating system typically does not use both of them. In any case, system-on-a-chip design choices often depend on more than just the processor core(s), also considering other functional units on a chip such as units for audio/video decoding, 2D graphics acceleration, decryption, etc.
    A. EXAMPLES
  • The following examples illustrate techniques for handling transitions between operating systems and account for such factors as transition time and potential impact on user experience. Examples in this section describe switching between two operating systems, but it is possible to switch between more than two operating systems. In alternative implementations, the steps shown in the examples below can be reordered, omitted or replaced with different steps. For example, examples that describe switching from operating system A to operating system B can be extended to switch back to operating system A by default after a requested feature of operating system B is no longer being used, or in response to a subsequent user action that uses a feature in operating system A. Transitions between operating systems can continue as long as needed or desired. Examples in which operating system A is an initial, primary operating system can be modified so that operating system B is the initial, primary operating system, or vice versa.
  • The examples are implemented with a digital media player, which can be a stand-alone device or included as part of another device. Alternatively, the examples are implemented with another consumer electronics device or other computing device.
  • 1. Graceful-Handoff Examples
  • Example 1
  • In this graceful-handoff scenario, a consumer electronics device is configured to allow operating system A and operating system B to run simultaneously. In this example, operating system A is the primary operating system and currently controls most aspects of the device. It detects that a user is attempting to use a feature provided by operating system B (e.g., by putting a video disc of a particular format into the device). The process of Example 1 includes the following steps:
      • 1. Store the identified feature requirement(s) (e.g., in non-volatile storage).
      • 2. Release control of hardware resources which will be used by operating system B (if necessary).
      • 3. Transfer control to operating system B.
      • 4. Determine (with operating system B) the feature required by reading the data stored in Step 1, above.
      • 5. Activate, if necessary, and use (with operating system B) the necessary hardware resources to satisfy the feature's requirements. The transition from one operating system to another can be performed gracefully for some hardware resources (e.g., displays), such that their state (e.g., currently displaying a menu) is completely or partially persisted across the handoff from operating system A to operating system B in order to reduce transition time and/or mitigate negative impact on user experience.
      • 6. Provide (with operating system B) the desired feature.
        In Step 3 of Example 1, control is transferred to operating system B by sending one or more messages to operating system B. These messages can be implemented in several ways. For example, in some implementations, each operating system/processor core (where operating system A runs on processor core A, and operating system B runs on processor core B) has a driver in it which implements a hardware mailbox queue. The mailbox queues can be simple first-in-first-out queues used for messaging between operating system A and operating system B. A controlling component for the operating system (e.g., in the driver) waits for a message to arrive in its queue to instruct it to put its operating system and core to sleep. The message can be a word of memory whose values are reserved for purposes of graceful handoffs between the operating systems (e.g., the value 1 indicates the controlling component should put its operating system/core to sleep, the value 2 indicates the controlling component should wake its operating system/core from a sleep state, and other values are reserved for other purposes). Alternatively, the messaging is implemented with another protocol and/or another type of data structure.
  • In an example mailbox-queue implementation, when operating system A detects a disc in a format that it does not play, it sends a message (e.g., with a value of 2) to its messaging driver, which delivers the message to the mailbox queue of the driver of operating system B. The driver for operating system B waits for messages in its mailbox queue, receives the message from operating system A, interprets the message (whose value indicates “wake up”), and takes steps to wake up operating system B and core B (for example, re-enabling drivers as appropriate). Operating system A puts itself to sleep after it sends the wake-up message to operating system B, assuming that operating system B will successfully wake. Alternatively, operating system A waits for a message from operating system B (e.g., with a value of 1) instructing operating system A to put itself in sleep mode. Having operating system B send such a message after operating system B has successfully woken allows for better error handling—if operating system A does not get such a sleep message after some period of time, operating system A can initiate error handling by informing the user, rebooting the entire system and/or taking another step.
  • The messaging process is reversed if operating system B encounters a disc in a format that it does not play. Operating system B sends a message (e.g., with a value of 2) to its messaging driver, which delivers the message to the mailbox queue of the driver of operating system A. The driver for operating system A waits for messages in its mailbox queue, receives the message from operating system B, interprets the message (whose value indicates “wake up”), and takes steps to wake operating system A and core A. Operating system B puts itself to sleep after it sends the wake-up message to operating system A or, alternatively, waits for a sleep message from operating system A.
  • Example 2
  • FIG. 2 is a flow chart showing an example technique (200) according to a graceful-handoff model for using features in concurrently running operating systems. The technique (200) shown in FIG. 2 differs in some respects from the steps in Example 1, above, while still achieving a smooth transition between two operating systems.
  • In the technique (200), a boot loader is activated (205) and operating systems A and B are booted (210, 255). In FIG. 2, the operating systems start in an idle state (210, 255). Either of the operating systems can be woken up from the idle state (215, 260) by a wake-up message (220, 265) from the other operating system. This can occur, for example, when a user requests an operation, performs a navigation action, checks or changes a configuration setting, or changes media content (e.g., by changing a disc).
  • After waking, the activated operating system performs (225 or 270) feature functionality enabled using that operating system. Upon detecting a feature change (230 or 275), the activated operating system checks (235 or 280) whether it can perform the new feature. If not, the operating system prepares (240 or 285) hardware resources, as necessary, for transition to the other operating system, and sends a wake-up message (245 or 290) to the other operating system. The operating system that sends the wake-up message can then return to an idle state to await a possible wake-up message.
  • In the example shown in FIG. 2, operating systems A and B initially enter idle states (215, 260) after being booted (210, 255). Alternatively, one or more of the operating systems is initially in an active state. For example, in a video disc player that plays both Blu-ray and HD DVD discs, a first operating system enters an initially active state when an HD DVD disc is in the player when it is turned on. Instead of entering an initial idle state and checking for a wake-up message, the first operating system performs feature functionality enabled using software running on the first operating system (e.g., launching an HD DVD menu, or starting HD DVD playback) until an event occurs that requires another operating system to become active (e.g., a user inserting a Blu-ray disc). Or, a device can be configured such that one operating system is active by default at start up.
  • 2. Warm-Boot Examples
  • Example 3
  • In this warm-boot scenario, operating system A and operating system B are configured to run individually, not simultaneously. In this example, operating system A is the primary operating system and currently controls most aspects of the device. It detects that a user is attempting to use a feature provided by operating system B. The process of Example 3 includes the following steps:
      • 1. Store the identified feature requirement in non-volatile storage.
      • 2. Store the operating system requirement in non-volatile storage.
      • 3. Shutdown operating system A.
      • 4. Reboot.
      • 5. Determine (with boot loader) the required operating system by reading the data stored in Step 2, above. In this example, this is operating system B.
      • 6. Boot operating system B.
      • 7. Determine (with operating system B) the feature required by reading the data stored in Step 1, above.
      • 8. Activate, if necessary, and use (with operating system B) the necessary hardware resources to satisfy the feature's requirements. The transition from one operating system to another can be performed gracefully for some hardware resources (e.g., displays), such that their state (e.g., currently displaying a menu) is completely or partially persisted across the handoff from operating system A to operating system B, in order to reduce transition time and/or mitigate negative impact on user experience.
      • 9. Provide (with operating system B) the desired feature.
    Example 4
  • FIG. 3 is a flow chart showing an example technique (300) according to a warm-boot model for using features in different operating systems on a device, where the operating systems do not run concurrently. The technique (300) shown in FIG. 3 differs in some respects from the steps in Example 3, above, while still achieving a smooth transition between two operating systems.
  • In the technique (300), a boot loader is activated (305) and a flag is checked (310) that indicates whether operating system B is to be booted. If the flag is set, the device boots (315) operating system B and performs (320) feature functionality enabled using operating system B. Alternatively, an indicator other than a flag is used to indicate functions that will be performed and/or which operating system will be used.
  • If a feature change is detected (325), the operating system determines (330) whether it supports the new feature. If it does not support the new feature, information about the feature is stored (335) in non-volatile storage. The boot flag is reset to indicate the other operating system should be used, and a reboot (340) occurs.
  • On reboot (340), the boot loader is activated (305) and the boot flag indicates (310) that operating system A is to be booted. The device boots (350) operating system A and performs (355) feature functionality enabled using operating system A. If a feature change is detected (360), the operating system determines (365) whether it supports the new feature. If it does not support the new feature, information about the feature is stored (370) in non-volatile storage and the device can reboot (375) to operating system B.
  • The reboots (340, 375) are warm boots, since they occur after the device has been turned on. One typical characteristic of a warm boot of an operating system is that not everything in the operating system is reinitialized. Examples of warm-boot functionality include “standby” or “hibernate” features in laptop computers—some state gets saved when a laptop computer enters standby or hibernate mode, so that when the laptop computer wakes back up it can more quickly resume normal operation from where it left off.
  • B. DISCUSSION
  • Examples 1, 2, 3 and 4 above differ from techniques (sometimes referred to as virtualization techniques) in which one or more operating system environments are hosted by a primary operating system, and all environments share access to the necessary hardware resources. For example, the operating system transitions in Examples 1, 2, 3 and 4 above do not necessarily result from a conscious act by a user to switch operating systems, nor do they involve one operating system hosting another operating system or emulating a platform on which the other operating system runs. The user need not have any awareness of multiple operating systems being available on the device.
  • Some advantages and improvements for described implementations include reduction in the amount of time to perform transitions between operating systems needed for specific functionality, as well as making operating system transitions unobtrusive to users.
  • Consider an example device which uses two operating systems in order to cover a range of features. In this example device, operating system A supports optical disc media playback, while operating system B supports internet browsing. While a user is browsing the internet, operating system B is in control of the device. If the user then inserts an optical disc and hits the “Play” button on the device, the user will typically expect optical media playback to occur without a specific action by the user to switch from operating system B to operating system A. Described implementations allow the operating system transition and selection to be hidden from the user.
  • Typically, when an operating system boots and device drivers are loaded, the device driver will initialize the hardware to a known state. In the case of a user-visible screen or external display, this initialization may result in a user-perceivable flicker, or it may cause an external display to momentarily lose synchronization with the device's signal. By changing the device driver implementation for each operating system instance, the initialization phase can be made to account for a current display state and not perform unnecessary initialization steps which would result in flicker, corruption, or loss-of-signal. This is one example of how the reboot sequence can be designed to make the transition between operating systems less noticeable to a user.
  • III. Example Implementations for Audio and Video Playback Devices
  • This section includes specific examples of techniques and tools for handling operating system transitions for media devices that handle different media formats (e.g., video disc formats) for audio and video playback. In alternative implementations, the steps shown in the examples below can be reordered, omitted or replaced with different steps.
  • For example, examples that describe switching from a second operating system to a first operating system can be extended to switch back to the second operating system by default after a requested feature supported with the first operating system is no longer being used, or in response to a subsequent user action that uses a feature supported with the second operating system. Transitions between operating systems can continue as long as needed or desired. Examples that designate the second operating system as an initial primary operating system can be modified to designate the first operating system as the initial primary operating system, or vice versa. As another alternative, devices can use operating systems other than the first two operating systems to support different media formats. Examples in this section describe performing playback operations (e.g., HD DVD, Blu-ray or DVD video playback or CD audio playback), but the operating systems may perform other operations specific to a particular operating system or common to two or more operating systems. Examples in this section describe disc changes as events that may trigger a transition between operating systems, but other events also may trigger transitions between operating systems, such as user selection of a feature supported with a particular operating system. Examples in this section describe switching between two operating systems, but it is possible to switch between more than two operating systems.
  • A. Graceful Handoff for Media Format Changes
  • In some implementations, a graceful-handoff model for media format changes includes a multi-core selection process where two or more processing cores each run a different operating system that supports a different media format. The graceful-handoff model can result in shorter load times for content in different formats.
  • FIG. 4 is a flow chart showing an example technique (400) for graceful-handoff handling of transitions in a device that uses a first operating system for playing HD DVD discs and a second operating system for playing discs of other disc formats. In the example shown in FIG. 4, a boot loader is activated (405) and the operating systems A and B are booted (410, 455). Operating system B initially checks (460) whether a disc is present in the device. If a disc is present, operating system B determines (465) whether the disc is an HD DVD disc. If the disc is not an HD DVD disc, operating system B can perform feature functionality supported using that operating system (e.g., Blu-ray, DVD or CD audio playback (470)). Upon detecting a disc change (475), the operating system determines (465) whether the new disc is an HD DVD disc.
  • When operating system B is checking for a disc at startup or after a disc change, if the disc is an HD DVD disc the operating system prepares (480) hardware resources, as necessary, for transition to operating system A and sends a wake-up message (485) to operating system A. Operating system B enters an idle state (490) and checks (495) for a wake-up message from operating system A. After waking, operating system B can again perform feature functionality supported using that operating system (e.g., Blu-ray, DVD or CD audio playback (470)).
  • In the example shown in FIG. 4, when operating system A is booted, it initially enters an idle state (415). Operating system A checks (420) for a wake-up message from operating system B. After waking, operating system A can perform feature functionality supported using that operating system (e.g., HD DVD video playback (425)).
  • Upon detecting a disc change (430), the operating system checks (435) whether the new disc is an HD DVD disc. If not, the operating system prepares (440) hardware resources, as necessary, for transition to operating system B and sends a wake-up message (445) to operating system B. Operating system A can then return to an idle state (415) to await a possible wake-up message.
  • In some implementations, a goal of the idle states for each operating system is to avoid accessing hardware in the device when the respective operating system is idle. For example, while one operating system is accessing the optical drive unit, other operating systems in idle states can be prevented from accessing the drive. Idle states can be handled in different ways. For example, device drivers in the operating system may be coded to support an idle mode. Or, if the operating system supports dynamically loading and unloading device drivers, the driver can be unloaded to prevent the operating system from accessing the underlying hardware. Or, an operating system can be put to sleep: some operating systems allow their states to be saved to memory and then stopped, to be later quickly restarted. Such sleep features include the hibernate features in Windows® operating systems from Microsoft Corporation.
  • The same mechanism does not need to be used to implement idle states in each operating system on a device. For example, hibernation may be supported by one operating system, while another operating system only supports loading and unloading drivers. An operating system supporting hibernation can implement an idle mode by entering a hibernation state, while another operating system can implement an idle mode by unloading device drivers. A combination of device driver unloading and drivers directly supporting an idle mode can be used, for example, in a case where only a subset of device drivers on an operating system can be unloaded.
  • An alternative to this model is to abstract hardware components in the device to go through a layer of firmware. The drivers in the operating system can communicate with the abstracted components, instead of directly with the hardware. This is similar to a BIOS concept, to operating system virtualization environments, or to a model used in systems where device access is abstracted through a layer that allows the physical bus to be tunneled over another mechanism (e.g., so that a networking driver may communicate with a network card on the far side of a USB bus). The idle mode functionality can then be implemented in the intermediate layer that abstracts access to the devices.
  • FIG. 5 shows an example of a dual-boot device (500) with a dual core design with firmware (530) and shared hardware resources (540). Referring to FIG. 5, a second operating system (510) (such as a Linux-based operating system, other Unix-like or Unix variant operating system, or other operating system) supports a Blu-ray player stack (514) and drivers (512) specific to the second operating system (510). A first operating system (520) (such as the Windows® CE operating system or other operating system) supports an HD DVD player stack (524) and drivers (522) specific to the first operating system (520). The firmware (530) includes a boot loader daemon (532) and exposes input/output services (534). The firmware (530) has no affiliation with any specific operating system and is used to arbitrate a boot-loading and disc ID detection state machine. The input/output services (534) allow a single point of entry to shared hardware resources (540) of the device hardware (550) for both operating systems (510, 520). The input/output services (534) are similar to existing BIOS services. The input/output services (534) are simple but powerful enough to allow different operating system-specific drivers (512, 522) to be ported without sacrificing too much performance or incurring too many fundamental changes to an existing driver. Simple read/write/open/close semantics are used, such as those associated with the “ioctl” system call found on Unix systems, which allows an application to control or communicate with a device driver.
  • The graceful-handoff model may use additional memory, modifications to operating systems to deal with hardware resource sharing, and/or communication overhead between operating systems to coordinate handoffs, but can decrease transition times and improve user experience. To reduce engineering costs, it is often desirable to do as little work as possible in the operating system. Using standard device drivers is often preferred.
  • B. Warm-Boot Model for Media Format Changes
  • FIG. 6 is a flow chart showing an example technique (600) for handling disc format changes in a device having first and second operating systems available according to a warm-boot model, where the operating systems do not run concurrently. In the technique (600), a boot loader is activated (605) and a flag is checked (610) that indicates whether HD DVD playback will be performed. If the flag is set, the device boots (615) a first operating system and performs functionality supported by the first operating system (e.g., HD DVD playback (620)). Alternatively, an indicator other than a flag is used to indicate functions that will be performed and/or which operating system will be used. If a disc change is detected (625), the operating system determines (630) whether it supports the new disc. If it does not support the new disc, the HD DVD flag is cleared (635), and on reboot (640) the boot loader is activated (605) and the cleared HD DVD flag indicates (610) that the second operating system is to be booted.
  • After reboot (640), or if the HD DVD flag is initially not set, the device boots (655) the second operating system. The second operating system initially checks (660) whether a disc is present in the device. If a disc is present, the second operating system determines (665) whether the disc is an HD DVD disc. If the disc is not an HD DVD disc, the second operating system can perform feature functionality specific to that operating system (e.g., Blu-ray, DVD or CD Audio playback (670)). Upon detecting a disc change (675), the operating system determines (665) whether the new disc is an HDDVD disc.
  • When the second operating system is checking for a disc at startup or after a disc change, if the disc is an HD DVD disc the operating system sets (680) the HD DVD flag, and on reboot (685) the boot loader is activated (605) and the HD DVD flag indicates (610) that the first operating system is to be booted.
  • The reboots (640, 685) are warm boots, since they occur after the device has been turned on. Alternatively, logic can be used that loads and launches operating systems directly, rather than cycling back through the boot loader.
  • On reboots or other loading and launching of different operating systems, the states of some hardware resources may be persisted completely or partially across the control of the different operating systems to mitigate negative impact on user experience. For example, the state of a High-Definition Multimedia Interface (“HDMI”) controller may not be reset, or the state of a front-panel display may not be reset.
  • Several alternatives and extensions to the warm-boot model described above are possible. For example, disc type identification can be written once and exist in the boot loader for the device. The boot loader can choose the correct operating system based on the disc type identification. A disc change can be handled with a shut-down and reboot in order to get boot loader logic, which may simplify the engineering effort to build the device.
  • As another example, time consuming operations can be parallelized. For example, loading the operating system and playback application from memory and the process of identifying the media type may take considerable time.
  • FIG. 7 is a flow chart showing an example technique (700) for performing warm-boot media format switching operations in parallel. In the example shown in FIG. 7, a playback application supported by a current operating system is initially running. A disc tray is opened (710), and the device halts (720) the current playback processor, stopping the playback application. (This step is optional, but may be desirable to free some memory for the next step.) The device starts loading (730) another operating system into memory (if there is enough free memory). When new media is inserted (740), the system identifies the media type (750). The operating system loading (730) can be a lengthy operation, so the device does not block on operating system loading (730), allowing it to proceed in parallel with one or more other steps (e.g., identification of media type (750)). Media type identification (750) also can be a lengthy operation, so it also proceeds at the same time as one or more other steps (e.g., operating system loading (730)).
  • The device checks (760) whether the current operating system supports the new media. If the new media type will use the current operating system that is already running, then the loading of the new operating system (730) is aborted (770) and the proper player application is launched for the new media. If the new media type will use the operating system being loaded, the device waits for the operating system to finish loading (780) if necessary and reboots, restarting the new operating system in memory.
  • Some warm-boot implementations do not rely on a particular hardware platform, require less hardware resources, and have less overall complexity when compared with some graceful-handoff implementations. Some warm-boot implementations may include a cost of increased content load times for different content formats.
  • IV. Extensions and Alternatives
  • A device setup application is a potentially complicated software application that is not usually tied to any recorded media. For video disc players, device setup functions are often accessed via a button on a remote control rather than by inserting a setup disc. When a single operating system is running in the device at one time, setup can be implemented on each operating system, which complicates the engineering effort to develop the device, but may yield a better user experience. Or, setup can be implemented on a single operating system, simplifying engineering effort at a possible cost of detracting from the user experience if entering setup requires the device to reboot to the operating system that supports the setup. A hybrid approach can be used to obtain a mix of reduced engineering effort and increased usability. Frequently accessed operations can be implemented on more than one operating system (e.g., enabling/disabling subtitles during playback), and less frequent operations can be implemented on a single operating system (e.g., setting up a network connection). When multiple operating systems are run on a device simultaneously, setup can be implemented on a single operating system and still function regardless of the type of media currently in the device. For example, setup can be implemented on a second operating system running on one CPU core, producing a user interface that is handed off to a first operating system that controls HD DVD playback. The user interface can be displayed instead of, or in addition to (e.g., blended together or in a separate on-screen window) video playback.
  • A device can implement a combination of warm-boot and graceful-handoff operating system transition techniques. For example, a device can determine whether to use a graceful-handoff transition or a warm-boot transition based on factors such as resource usage, transition time, and potential impact to user experience. In this way, a device can have flexibility in handling transitions between operating systems.
  • Some media formats require advanced functionality support beyond support for playback and menu navigation, such as Extensible Markup Language (“XML”) support, support for ECMAScript (a standardized scripting language), or Java support. Selection of features that require support for these kinds of advanced functionality also can drive operating system transitions.
  • Use of dual-format discs can result in events that trigger operating system transitions similar to events associated with disc changes. Techniques and tools described herein can be used in conjunction with dual-format discs.
  • Having described and illustrated the principles of our invention with reference to various embodiments, it will be recognized that the various embodiments can be modified in arrangement and detail without departing from such principles. It should be understood that the programs, processes, or methods described herein are not related or limited to any particular type of computing environment, unless indicated otherwise. Various types of general purpose or specialized computing environments may be used with or perform operations in accordance with the teachings described herein. Elements of embodiments shown in software may be implemented in hardware and vice versa.
  • In view of the many possible embodiments to which the principles of the disclosed invention may be applied, it should be recognized that the illustrated embodiments are only preferred examples of the invention and should not be taken as limiting the scope of the invention. Rather, the scope of the invention is defined by the following claims. We therefore claim as our invention all that comes within the scope and spirit of these claims.

Claims (20)

1. A method comprising:
receiving first digital media information at a digital media player having a first operating system in a first idle state in memory and having a second operating system in an active state in memory, the first digital media information being encoded according to a first media format;
waking the first operating system from the first idle state, wherein the first operating system supports media playback for the first media format, and wherein the second operating system supports media playback for a second media format different than the first media format; and
playing the first digital media information using a first application running in an operating environment provided by the first operating system.
2. The method of claim 1 further comprising:
placing the second operating system in a second idle state so as to free resources for use by the first operating system.
3. The method of claim 2 further comprising:
receiving second digital media information at the digital media player, the second digital media information being encoded according to the second media format;
placing the first operating system in a third idle state so as to free resources for use by the second operating system;
waking the second operating system from the second idle state;
playing the second digital media information using a second application running in an operating environment provided by the second operating system.
4. The method of claim 2 further comprising:
receiving a request for a navigation or configuration feature;
placing the first operating system in a third idle state so as to free resources for use by the second operating system;
waking the second operating system from the second idle state; and
presenting a menu for the navigation or configuration feature in an operating environment provided by the second operating system.
5. The method of claim 1 wherein the digital media player is a stand-alone device, a part of a communications device or a part of a display device.
6. The method of claim 1 wherein the waking the first operating system from the first idle state comprises sending a wakeup message from the second operating system in the active state to the first operating system in the first idle state.
7. The method of claim 1 wherein the first digital media information comprises high-definition video content, and wherein the first media format is a high-definition video format.
8. The method of claim 1 wherein the waking the first operating system from the first idle state is responsive to identification of the first media format in which the first digital media information is encoded.
9. The method of claim 1 wherein the waking the first operating system from the first idle state is responsive to user selection of a navigation or configuration feature supported by the first operating system.
10. A method comprising:
receiving first digital media information at a digital media player having a first operating system stored in non-volatile storage and a second operating system stored in non-volatile storage, the second operating system running in an active state in memory;
identifying a first media format according to which the first digital media information is encoded, wherein playback for the first media format is supported by the first operating system, and wherein playback for a second media format different than the first media format is supported by the second operating system; and
responsive to the identifying, loading the first operating system into memory from the non-volatile storage, wherein the first operating system provides an operating environment for playing the first digital media information when the first operating system is running in an active state in memory.
11. The method of claim 10 further comprising:
playing the first digital media information using a first application running in the operating environment provided by the first operating system, wherein the first application is operable to decode the first digital media information encoded according to the first media format.
12. The method of claim 10 wherein the digital media player is a stand-alone device, a part of a communications device or a part of a display device.
13. The method of claim 10 further comprising:
receiving a request for a navigation or configuration feature;
shutting down the first operating system;
loading the second operating system into memory from the non-volatile storage, wherein the second operating system provides an operating environment for presenting a menu for the navigation or configuration feature; and
presenting the menu in the operating environment provided by the second operating system.
14. The method of claim 10 wherein the first digital media information comprises high-definition video content, and wherein the first media format is a high-definition video format.
15. The method of claim 10 further comprising shutting down the second operating system before the first operating system is running in an active state in memory.
16. The method of claim 15 further comprising:
receiving second digital media information at the digital media player, the second digital media information being encoded according to the second media format;
identifying the second media format; and
responsive to the identifying the second media format, shutting down the first operating system and loading the second operating system into memory from non-volatile storage, wherein the second operating system provides an operating environment for playing the second digital media information.
17. A method comprising:
receiving first digital media information at a digital media player having a first operating system in a first idle state in memory and having a second operating system in an active state in memory, the first digital media information being encoded according to a first media format;
waking the first operating system from the first idle state, wherein the first operating system supports media playback for the first media format, and wherein the second operating system supports media playback for a second media format different than the first media format;
persisting a state of at least one of plural hardware components;
transferring control of the plural hardware components from the second operating system to the first operating system;
playing the first digital media information using a first application running in an operating environment provided by the first operating system.
18. The method of claim 17 wherein the at least one hardware component is a display connected to the digital media player, and wherein the persisted state comprises displayed information.
19. The method of claim 18 wherein the displayed information comprises a menu.
20. The method of claim 17 wherein a firmware layer provides input/output services to abstract access to the plural hardware components, and wherein the firmware layer implements idle mode functionality for the first idle state.
US11/999,605 2007-02-06 2007-12-06 Supporting multiple operating systems in media devices Expired - Fee Related US8046570B2 (en)

Priority Applications (13)

Application Number Priority Date Filing Date Title
US11/999,605 US8046570B2 (en) 2007-02-06 2007-12-06 Supporting multiple operating systems in media devices
RU2009130109/08A RU2451989C2 (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in multimedia devices
EP08705919.2A EP2109818B1 (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices
CN2008800038459A CN101606128B (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices
KR1020097016093A KR101505209B1 (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices
JP2009549155A JP5215324B2 (en) 2007-02-06 2008-01-15 Multiple operating system support in media devices
BRPI0806729-5A BRPI0806729A2 (en) 2007-02-06 2008-01-15 support of multiple operating systems on media devices
PCT/US2008/051045 WO2008097695A1 (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices
AU2008214236A AU2008214236B2 (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices
CA002675523A CA2675523A1 (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices
MX2009008223A MX2009008223A (en) 2007-02-06 2008-01-15 Supporting multiple operating systems in media devices.
TW097102578A TW200841710A (en) 2007-02-06 2008-01-23 Supporting multiple operating systems in media devices
IL199728A IL199728A0 (en) 2007-02-06 2009-07-07 Supporting multiple operating systems in media devices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US89990907P 2007-02-06 2007-02-06
US11/999,605 US8046570B2 (en) 2007-02-06 2007-12-06 Supporting multiple operating systems in media devices

Publications (2)

Publication Number Publication Date
US20080189538A1 true US20080189538A1 (en) 2008-08-07
US8046570B2 US8046570B2 (en) 2011-10-25

Family

ID=39677180

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/999,605 Expired - Fee Related US8046570B2 (en) 2007-02-06 2007-12-06 Supporting multiple operating systems in media devices

Country Status (14)

Country Link
US (1) US8046570B2 (en)
EP (1) EP2109818B1 (en)
JP (1) JP5215324B2 (en)
KR (1) KR101505209B1 (en)
CN (1) CN101606128B (en)
AU (1) AU2008214236B2 (en)
BR (1) BRPI0806729A2 (en)
CA (1) CA2675523A1 (en)
IL (1) IL199728A0 (en)
MX (1) MX2009008223A (en)
RU (1) RU2451989C2 (en)
TW (1) TW200841710A (en)
WO (1) WO2008097695A1 (en)
ZA (1) ZA200905419B (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010099529A1 (en) * 2009-02-27 2010-09-02 Keicy Chung Central processing unit capable of multi-boot using disjoint memory spaces
US20100241839A1 (en) * 2009-03-20 2010-09-23 Phoenix Technologies Ltd Loading operating systems using memory segmentation and ACPI based context switch
US20100299513A1 (en) * 2009-05-22 2010-11-25 Samsung Electronics Co., Ltd. Memory apparatus and method therefor
US20110053649A1 (en) * 2009-09-01 2011-03-03 Research In Motion Limited Mobile wireless communications device with reset functions and related methods
US20110143809A1 (en) * 2009-10-20 2011-06-16 Research In Motion Limited Enhanced fast reset in mobile wireless communication devices and associated methods
US20110209220A1 (en) * 2010-02-22 2011-08-25 F-Secure Oyj Malware removal
US20110208997A1 (en) * 2009-12-07 2011-08-25 SPACE MICRO, INC., a corporation of Delaware Radiation hard and fault tolerant multicore processor and method for ionizing radiation environment
US20120260084A1 (en) * 2009-12-18 2012-10-11 Beijing Lenovo Software Ltd. Method for switching system state and portable terminal
US20130152074A1 (en) * 2011-12-12 2013-06-13 Chia-Wei Yeh Method for automatic consecutive installing operating systems
JP2014531099A (en) * 2011-10-28 2014-11-20 インテル・コーポレーション Switching operating context
US9010641B2 (en) 2010-12-07 2015-04-21 Hand Held Products, Inc. Multiple platform support system and method
US20150113257A1 (en) * 2013-10-23 2015-04-23 Insyde Software Corp. System and method for dual os memory switching
EP2771784A4 (en) * 2011-10-28 2015-06-24 Intel Corp Switching between operational contexts
US11740686B2 (en) * 2008-12-31 2023-08-29 Tahoe Research, Ltd. Platform and processor power management

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI559227B (en) * 2009-01-12 2016-11-21 幸福居福爾摩沙股份有限公司 Computer system having two built-in operating devices that can be dynamically powered on or powered off
TWI395139B (en) * 2009-05-27 2013-05-01 Apacer Technology Inc An electronic device and it's power-on method
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
CN102207875B (en) 2010-03-30 2014-11-12 鸿富锦精密工业(深圳)有限公司 Media data playing device and rebooting method thereof
KR20120066846A (en) * 2010-12-15 2012-06-25 삼성전자주식회사 Mobile device
JP2012155600A (en) * 2011-01-27 2012-08-16 Fujitsu Ltd Information processing apparatus, control method and control program
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
US20120278747A1 (en) * 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for user interface in a system having two operating system environments
KR101292751B1 (en) * 2011-07-04 2013-08-05 이호준 Apparatus for home server based on multi-operating system
CN103294545B (en) 2012-02-23 2017-07-04 纬创资通股份有限公司 Method for switching dual operating systems and electronic device
CN103294562B (en) 2012-02-23 2017-03-01 纬创资通股份有限公司 Method for sharing peripheral device by dual operating systems and electronic device
TWI482021B (en) * 2012-02-23 2015-04-21 Wistron Corp Method for sharing peripheral devices in dual operating systems, and electronic device using the same
US20130293573A1 (en) 2012-05-02 2013-11-07 Motorola Mobility, Inc. Method and Apparatus for Displaying Active Operating System Environment Data with a Plurality of Concurrent Operating System Environments
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
CN103488466B (en) * 2012-06-11 2017-02-08 联想(北京)有限公司 Method and device for executing application program
US10064240B2 (en) * 2013-09-12 2018-08-28 The Boeing Company Mobile communication device and method of operating thereof
CN104142859B (en) * 2014-07-31 2016-10-26 努比亚技术有限公司 The fast switch over method of a kind of dual system, device and mobile terminal
CN106776389B (en) * 2016-11-29 2020-10-16 广州视源电子科技股份有限公司 Access method of memory and multi-system terminal
CN107479943B (en) * 2017-07-03 2020-02-21 北京东土科技股份有限公司 Multi-operating-system operation method and device based on industrial Internet operating system
US10893093B2 (en) 2018-01-18 2021-01-12 International Business Machines Corporation Translating a user's working context from one operating system and associated applications to a different operating system and associated applications
CN108833960A (en) * 2018-06-14 2018-11-16 青岛海信传媒网络技术有限公司 A kind of method and device of audiovisual applications switching
CN112650383A (en) * 2019-10-10 2021-04-13 Oppo广东移动通信有限公司 Application program control method and device, electronic equipment and storage medium

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623696A (en) * 1995-05-30 1997-04-22 International Business Machines Corporation System for formatting a request into a packet which can be read by plurality of operating systems for providing a driver for a storage device
US20030060911A1 (en) * 2000-12-01 2003-03-27 Reginia Chan Low power digital audio decoding/playing system for computing devices
US20030135771A1 (en) * 2001-03-16 2003-07-17 Cupps Bryan T. Novel personal electronics device with a dual core processor
US6631101B1 (en) * 1999-03-16 2003-10-07 Gateway, Inc. System, method, and software for recovering from interruption of DVD playback
US6654827B2 (en) * 2000-12-29 2003-11-25 Hewlett-Packard Development Company, L.P. Portable computer system with an operating system-independent digital data player
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
US20040226020A1 (en) * 2000-09-28 2004-11-11 Ati Technologies, Inc. Method and system for using general and appliance operating systems in a single information handling device
US20050066000A1 (en) * 2003-09-18 2005-03-24 Yee Liaw Multimedia-capable computer management system for selectively operating a plurality of computers
US20050193267A1 (en) * 2004-01-30 2005-09-01 Eldon Liu Application program sharing framework and method for operating systems
US20050210117A1 (en) * 2004-02-12 2005-09-22 Tung-Peng Wu Remote controlled application program sharing framework and method for operating systems
US20050223219A1 (en) * 2003-03-10 2005-10-06 Cyberscan Technology, Inc. Dynamic configuration of a gaming system
US20060010314A1 (en) * 2004-07-07 2006-01-12 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US7062766B2 (en) * 1998-01-21 2006-06-13 Nokia Corporation Embedded system with interrupt handler for multiple operating systems
US20060133362A1 (en) * 2004-12-17 2006-06-22 Stein Richard E Fast initialization of medical device system having multiple operating systems
US20060155914A1 (en) * 2005-01-07 2006-07-13 Apple Computer, Inc. Highly portable media device
US20060168440A1 (en) * 2005-01-24 2006-07-27 Lite-On Technology Corporation OS selection methods and computer systems utilizing the same
US20060179326A1 (en) * 2005-02-10 2006-08-10 Kwok-Yan Leung Security device using multiple operating system for enforcing security domain
US20060227806A1 (en) * 2005-01-17 2006-10-12 Lite-On Technology Corporation Multi-mode computer systems and operating methods thereof
US20060291800A1 (en) * 2005-06-23 2006-12-28 Kabushiki Kaisha Toshiba Information processing apparatus and picture recording control method
US20070150592A1 (en) * 2004-01-13 2007-06-28 Koninklijke Philips Electronic, N.V. Portable device for receiving media content
US7356677B1 (en) * 2001-10-19 2008-04-08 Flash Vos, Inc. Computer system capable of fast switching between multiple operating systems and applications
US20080133903A1 (en) * 2006-12-04 2008-06-05 Jun Sun System and methods for efficient and cooperative operating system switching
US7657734B2 (en) * 2005-11-03 2010-02-02 Nokia Corporation Methods and apparatus for automatically multi-booting a computer system
US20100306773A1 (en) * 2006-11-06 2010-12-02 Lee Mark M Instant on Platform

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3018336B2 (en) * 1987-10-31 2000-03-13 株式会社東芝 Information processing device
JPH0527954A (en) * 1991-07-18 1993-02-05 Toshiba Corp Computer system
JPH08227356A (en) * 1994-12-21 1996-09-03 Tec Corp Data processor
JPH09297747A (en) * 1996-04-30 1997-11-18 Mitsubishi Electric Corp Multipurpose system lsi device and personal computer
JP2000020285A (en) * 1998-06-26 2000-01-21 Toshiba Corp Computer system
EP1037133A1 (en) 1999-03-15 2000-09-20 International Business Machines Corporation Method and apparatus for alternation between instances of operating systems in computer systems
JP2001117783A (en) * 1999-08-10 2001-04-27 Seiko Epson Corp Program start system and program start control method
CN1434942A (en) 1999-12-21 2003-08-06 通用仪器公司 Abstract device driver model for the portability of device drivers across different operating system platforms
JP2001282558A (en) * 2000-03-30 2001-10-12 Hitachi Ltd Multi-operating computer system
US7890741B2 (en) * 2000-12-01 2011-02-15 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
JP2003036174A (en) * 2001-07-25 2003-02-07 Hitachi Ltd On-vehicle terminal device
JP4026383B2 (en) * 2002-03-20 2007-12-26 セイコーエプソン株式会社 Information processing system, information processing terminal, external storage device, information processing terminal control program, and external storage device control program
JP2005202691A (en) * 2004-01-15 2005-07-28 Sharp Corp Information processor, program for the same and recording medium
JP2006178816A (en) * 2004-12-24 2006-07-06 D & M Holdings Inc Digital data reproducing device, and digital data storing and reproducing device
RU2005105976A (en) * 2005-03-03 2006-08-10 Общество с ограниченной ответственностью "Активное Видео" (RU) METHOD (OPTIONS) AND SYSTEM (OPTIONS) OF MANAGING MULTIMEDIA INFORMATION AND MULTIMEDIA APPLICATIONS
JPWO2008081690A1 (en) * 2006-12-29 2010-04-30 パナソニック株式会社 Recording / reproducing apparatus, reproducing apparatus, and host apparatus

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623696A (en) * 1995-05-30 1997-04-22 International Business Machines Corporation System for formatting a request into a packet which can be read by plurality of operating systems for providing a driver for a storage device
US7062766B2 (en) * 1998-01-21 2006-06-13 Nokia Corporation Embedded system with interrupt handler for multiple operating systems
US6631101B1 (en) * 1999-03-16 2003-10-07 Gateway, Inc. System, method, and software for recovering from interruption of DVD playback
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
US20040226020A1 (en) * 2000-09-28 2004-11-11 Ati Technologies, Inc. Method and system for using general and appliance operating systems in a single information handling device
US20030060911A1 (en) * 2000-12-01 2003-03-27 Reginia Chan Low power digital audio decoding/playing system for computing devices
US6654827B2 (en) * 2000-12-29 2003-11-25 Hewlett-Packard Development Company, L.P. Portable computer system with an operating system-independent digital data player
US20030135771A1 (en) * 2001-03-16 2003-07-17 Cupps Bryan T. Novel personal electronics device with a dual core processor
US7356677B1 (en) * 2001-10-19 2008-04-08 Flash Vos, Inc. Computer system capable of fast switching between multiple operating systems and applications
US20050223219A1 (en) * 2003-03-10 2005-10-06 Cyberscan Technology, Inc. Dynamic configuration of a gaming system
US20050066000A1 (en) * 2003-09-18 2005-03-24 Yee Liaw Multimedia-capable computer management system for selectively operating a plurality of computers
US20070150592A1 (en) * 2004-01-13 2007-06-28 Koninklijke Philips Electronic, N.V. Portable device for receiving media content
US20050193267A1 (en) * 2004-01-30 2005-09-01 Eldon Liu Application program sharing framework and method for operating systems
US20050210117A1 (en) * 2004-02-12 2005-09-22 Tung-Peng Wu Remote controlled application program sharing framework and method for operating systems
US20060010314A1 (en) * 2004-07-07 2006-01-12 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US20060133362A1 (en) * 2004-12-17 2006-06-22 Stein Richard E Fast initialization of medical device system having multiple operating systems
US20060155914A1 (en) * 2005-01-07 2006-07-13 Apple Computer, Inc. Highly portable media device
US20060227806A1 (en) * 2005-01-17 2006-10-12 Lite-On Technology Corporation Multi-mode computer systems and operating methods thereof
US20060168440A1 (en) * 2005-01-24 2006-07-27 Lite-On Technology Corporation OS selection methods and computer systems utilizing the same
US20060179326A1 (en) * 2005-02-10 2006-08-10 Kwok-Yan Leung Security device using multiple operating system for enforcing security domain
US20060291800A1 (en) * 2005-06-23 2006-12-28 Kabushiki Kaisha Toshiba Information processing apparatus and picture recording control method
US7657734B2 (en) * 2005-11-03 2010-02-02 Nokia Corporation Methods and apparatus for automatically multi-booting a computer system
US20100306773A1 (en) * 2006-11-06 2010-12-02 Lee Mark M Instant on Platform
US20080133903A1 (en) * 2006-12-04 2008-06-05 Jun Sun System and methods for efficient and cooperative operating system switching

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11740686B2 (en) * 2008-12-31 2023-08-29 Tahoe Research, Ltd. Platform and processor power management
WO2010099529A1 (en) * 2009-02-27 2010-09-02 Keicy Chung Central processing unit capable of multi-boot using disjoint memory spaces
US8327174B2 (en) 2009-03-20 2012-12-04 Hewlett-Packard Development Company, L.P. Loading operating systems using memory segmentation and ACPI based context switch
US20100241839A1 (en) * 2009-03-20 2010-09-23 Phoenix Technologies Ltd Loading operating systems using memory segmentation and ACPI based context switch
US20100241821A1 (en) * 2009-03-20 2010-09-23 Phoenix Technologies Ltd Inter operating system memory hotswap to support memory growth a non-virtualized system
WO2010107757A1 (en) * 2009-03-20 2010-09-23 Phoenix Technologies Ltd. Loading operating systems using memory segmentation and acpi based context switch
KR101620655B1 (en) * 2009-03-20 2016-05-12 휴렛트-팩카드 캄파니 Loading operating systems using memory segmentation and acpi based context switch
US8489847B2 (en) 2009-03-20 2013-07-16 Hewlett-Packard Development Company, L.P. Inter operating system memory hotswap to support memory growth in a non-virtualized system
US20100299513A1 (en) * 2009-05-22 2010-11-25 Samsung Electronics Co., Ltd. Memory apparatus and method therefor
EP2256639A1 (en) * 2009-05-22 2010-12-01 Samsung Electronics Co., Ltd. Memory apparatus and method therefor
US9158475B2 (en) 2009-05-22 2015-10-13 Samsung Electronics Co., Ltd. Memory apparatus and method therefor
US9063885B2 (en) 2009-09-01 2015-06-23 Blackberry Limited Mobile wireless communications device with reset functions and related methods
US8743128B2 (en) * 2009-09-01 2014-06-03 Blackberry Limited Mobile wireless communications device with reset functions and related methods
US20110053649A1 (en) * 2009-09-01 2011-03-03 Research In Motion Limited Mobile wireless communications device with reset functions and related methods
EP2315098A3 (en) * 2009-10-20 2014-07-02 BlackBerry Limited Enhanced fast reset in mobile wireless communication devices and associated methods
US8832421B2 (en) * 2009-10-20 2014-09-09 Blackberry Limited Enhanced fast reset in mobile wireless communication devices and associated methods
US20110143809A1 (en) * 2009-10-20 2011-06-16 Research In Motion Limited Enhanced fast reset in mobile wireless communication devices and associated methods
US20110208997A1 (en) * 2009-12-07 2011-08-25 SPACE MICRO, INC., a corporation of Delaware Radiation hard and fault tolerant multicore processor and method for ionizing radiation environment
US8886994B2 (en) * 2009-12-07 2014-11-11 Space Micro, Inc. Radiation hard and fault tolerant multicore processor and method for ionizing radiation environment
US20120260084A1 (en) * 2009-12-18 2012-10-11 Beijing Lenovo Software Ltd. Method for switching system state and portable terminal
US9141401B2 (en) * 2009-12-18 2015-09-22 Lenovo (Beijing) Limited Method for switching system state and portable terminal
US20110209220A1 (en) * 2010-02-22 2011-08-25 F-Secure Oyj Malware removal
US9665712B2 (en) * 2010-02-22 2017-05-30 F-Secure Oyj Malware removal
US9785774B2 (en) 2010-02-22 2017-10-10 F-Secure Corporation Malware removal
US9010641B2 (en) 2010-12-07 2015-04-21 Hand Held Products, Inc. Multiple platform support system and method
US9396375B2 (en) 2010-12-07 2016-07-19 Hand Held Products, Inc. Multiple platform support system and method
EP2771784A4 (en) * 2011-10-28 2015-06-24 Intel Corp Switching between operational contexts
JP2014531099A (en) * 2011-10-28 2014-11-20 インテル・コーポレーション Switching operating context
US20130152074A1 (en) * 2011-12-12 2013-06-13 Chia-Wei Yeh Method for automatic consecutive installing operating systems
US20150113257A1 (en) * 2013-10-23 2015-04-23 Insyde Software Corp. System and method for dual os memory switching
US10007552B2 (en) * 2013-10-23 2018-06-26 Insyde Software Corp. System and method for dual OS memory switching

Also Published As

Publication number Publication date
AU2008214236A1 (en) 2008-08-14
ZA200905419B (en) 2010-10-27
RU2451989C2 (en) 2012-05-27
CA2675523A1 (en) 2008-08-14
RU2009130109A (en) 2011-02-10
JP5215324B2 (en) 2013-06-19
IL199728A0 (en) 2010-04-15
US8046570B2 (en) 2011-10-25
CN101606128A (en) 2009-12-16
KR101505209B1 (en) 2015-03-23
EP2109818A4 (en) 2009-12-09
EP2109818B1 (en) 2016-06-15
JP2010518512A (en) 2010-05-27
KR20090115131A (en) 2009-11-04
BRPI0806729A2 (en) 2011-09-13
TW200841710A (en) 2008-10-16
WO2008097695A1 (en) 2008-08-14
CN101606128B (en) 2013-07-24
EP2109818A1 (en) 2009-10-21
MX2009008223A (en) 2009-08-12
AU2008214236B2 (en) 2012-02-09

Similar Documents

Publication Publication Date Title
US8046570B2 (en) Supporting multiple operating systems in media devices
US7814307B2 (en) Fast booting a computing device to a specialized experience
US8725994B2 (en) Launching an application from a power management state
US7380148B2 (en) System and method for information handling system multimedia mode boot optimization
US7386746B2 (en) Information processing apparatus, method of starting up the same, and startup program of the same
US7707400B2 (en) Direct computing experience
US7584374B2 (en) Driver/variable cache and batch reading system and method for fast resume
US20060200573A1 (en) Multimedia Computer System and Method
US7464258B2 (en) Method of displaying foreground visual data in foreground and executing system booting in background for computer system
JP2007035010A (en) Method for initializing instance and executing computer program by loading operation system core program from high-speed data access memory
WO2004027609A1 (en) Method for achieving multifuncional embedded system
EP3720140B1 (en) Display apparatus and operating method thereof
US20060026612A1 (en) Method for fast activation and playing of multimedia data with non-fixed data storage media
JP2007052764A (en) Multimedia computer system with dual-cpu and its multimedia instant play method
US20080316873A1 (en) Systems and methods for improving perceived start-up time for a dvd player

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KING, BRIAN DOUGLAS;FINGER, JAMES C.;CHAVDA, PRAFUL PRATAPRAI;AND OTHERS;REEL/FRAME:020326/0223;SIGNING DATES FROM 20071205 TO 20071206

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KING, BRIAN DOUGLAS;FINGER, JAMES C.;CHAVDA, PRAFUL PRATAPRAI;AND OTHERS;SIGNING DATES FROM 20071205 TO 20071206;REEL/FRAME:020326/0223

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034542/0001

Effective date: 20141014

FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20191025