Methods and systems for running multiple operating systems in a single mobile device
First Claim
1. A method for an original operating system (a host OS) in a mobile device that supports a memory protection mechanism to run another operating system (a guest OS) within the same memory space of said host OS while preserving the current state of said host OS in memory throughout the execution of said guest OS, comprising the steps of:
- said mobile device running said host OS;
said host OS starting said guest OS through a launcher;
said launcher going through said memory protection mechanism to mark memory blocks currently used by said host OS as protected from said guest OS;
said launcher launching said guest OS;
said guest OS running, accessing only memory blocks that have not been marked as protected so that said memory blocks marked as protected are preserved throughout the execution of said guest OS;
said guest OS finishing running through an exit-code;
said exit-code restoring the state of said host OS by reverting said protected memory blocks; and
said host OS resuming its operation.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods and systems for running multiple operating systems in a single embedded or mobile device (include PDA, cellular phone and other devices) are disclosed. The invention allows a mobile device that normally can only run a single operating system to run another operating system while preserving the state and data of the original operating system. Guest OS is packaged into special format recognizable by the host OS that still can be executed in place by the system. The Methods include: Change the memory protection bits for the original OS; Fake a reduced physical memory space for guest OS; Use special memory device driver to claim memories of host OS; Backup whole image of the current OS and data to external memory card.
99 Citations
17 Claims
-
1. A method for an original operating system (a host OS) in a mobile device that supports a memory protection mechanism to run another operating system (a guest OS) within the same memory space of said host OS while preserving the current state of said host OS in memory throughout the execution of said guest OS, comprising the steps of:
-
said mobile device running said host OS; said host OS starting said guest OS through a launcher; said launcher going through said memory protection mechanism to mark memory blocks currently used by said host OS as protected from said guest OS; said launcher launching said guest OS; said guest OS running, accessing only memory blocks that have not been marked as protected so that said memory blocks marked as protected are preserved throughout the execution of said guest OS; said guest OS finishing running through an exit-code; said exit-code restoring the state of said host OS by reverting said protected memory blocks; and said host OS resuming its operation. - View Dependent Claims (2, 3, 4)
-
-
5. A method for an original operating system (a host OS) of a mobile device to start another operating system (a guest OS) while keeping the running state and data of said host OS in memory throughout the execution of said guest OS, comprising the steps of:
-
said mobile device running said host OS; said host OS starting said guest OS through a launcher; said launcher moving memory blocks in lower address space that are currently used by said host OS to free memory blocks in upper address space, and preserving current state and data of said host OS to the upper address space through the following steps; for each of said memory blocks in lower address space currently used by said host OS, finding a free memory block in the upper address space; and moving said used memory block in lower address space to said free memory block in upper address space; said launcher identifying a memory address location where memory addresses above said location contains host OS data and memory addresses below said memory address location are free to be used by said guest OS; said launcher launching said guest OS by passing said memory address location as a reduced memory size to said guest OS; said guest OS running in said reduced in size memory space and leaving memory space higher than said memory location untouched; said guest OS finishing running through an exit-code; said exit-code restoring the state and data of said host OS by reverting each of said memory blocks in said lower address space from each of said free memory blocks in said upper address space; and said host OS resuming operation. - View Dependent Claims (6, 7, 8, 9)
-
-
10. A method for an original operating system (a host OS) of a mobile device to start another operating system (a guest OS) within the same memory space of said host OS while keeping the running state of said host OS throughout the execution of said guest OS in place, comprising the steps of:
-
said mobile device running said host OS; said host OS starting said guest OS through a launcher; said launcher launching said guest OS, passing a list of memory addresses of currently used memory of said host OS to a memory device driver in said guest OS during initialization of said guest OS; said memory device driver of said guest OS claiming said list of memory addresses and keeping them from being modified by any other part of said guest OS during the execution of said guest OS; said guest OS running in the same memory space of said host OS, with memories used by said host OS being claimed and protected by said memory device driver; said guest OS finishing running through an exit-code; said exit-code restoring the state of said host OS by releasing said list of memory addresses from said device driver; and said host OS resuming operation. - View Dependent Claims (11, 12)
-
-
13. A method of packaging an image of a guest OS inside a native application of a host OS to allow in-place execution of the said guest OS image in order to reduce memory usage where the format of said native application contains multiple un-continuous data chunks in memory space, comprising the steps of:
-
compiling an image of said guest OS into multiple code segments; appending each of said multiple code segments with a jump table containing multiple jump addresses to be used to point to others of the code segments; for each of a plurality of inter-segment jump instructions in each of said code segments, linking each of said plurality of inter-segment jump instructions to point to an entry of said jump table; preparing said native application for said host OS with a startup code and multiple data chunks; each of said multiple data chunks wrapping each of said code segments of said guest OS plus each of said jump tables; said host OS launching said guest OS by running said native application; said startup code in said native application looping through entries of each of said jump table to fill in the current memory address of each corresponding code segment; each of said code segments executing a jump instruction to invoke codes in the other code segments; said executed jump instruction getting a real address of said other code segment from said jump tables; said executed jump instruction successfully jumping to the other code segments wrapped by a corresponding data chunk; and wherein said image of guest OS executes in place without the need to extract all the code segments from said native application and rearrange them in a continuous memory location. - View Dependent Claims (14, 15, 16, 17)
-
Specification