Abstract:
The invention relates to a computer in which an image of the operating system is maintained in a secondary memory. This memory is either powered from a source independent of the main memory, or is non-volatile in nature. When the computer is reinitialized, the loader software that normally builds the operating system from components instead checks the secondary memory for the presence of an operating system image. If such an image is detected, the loader transfers the image from the secondary memory to the primary memory and transfers control of the computing system to the image of the operating system now in the primary memory. If no image is detected, the loader operates in a standard fashion. Additionally, a complete system image may be stored in the secondary memory. This would include the contents of the primary memory, the contents of the virtual memory, and the system state. As such, a preexisting version of an operational computing system may be directly loaded at boot time.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of the Invention  
           [0002]    The present invention generally relates to computer systems. More particularly, the invention relates to a computer able to start an operating system in a “fast” mode from a secondary memory.  
           [0003]    2. Description of Prior Art  
           [0004]    Typical operating systems are initiated when a user powers on a computer device. Upon powering on, the computing device initially transmits information about the hardware characteristics of itself to an initial bootstrap sequence that enables the computing device to “use its own resources.” In many personal computers, the parameters of the computer are impeded within a BIOS. Upon determination of the parameters of the computer system, typically the computer will immediately load in a machine instruction set from a preset point on a fixed memory medium. During a full boot process, the computing system initiates a set sequence of activities to build a system image that will operate the computing system.  
           [0005]    In the full boot process in a typical computing system, the computing machine program assembles and loads the various components of the operating system, eventually building an image of the system in the primary memory. After building a system image, the computing system transfers control of the function of the computing system to the system image.  
           [0006]    In a typical full boot process, the computing system seeks out all the various components of the eventual system image contained on the permanent or semi-permanent memory medium, such as a hard disk. As such, a number of slower media accesses are necessary, as well as the time for the processing unit to actually perform the operations on the material accessed. Thus, in the full boot process, the computing system needs quite a bit of time to seek out and load the various components to make a system image.  
           [0007]    Once the image of the system is complete in the primary memory, the boot process transfers operational control of the computing device to the system image assembled in the primary memory. As such, in a typical full boot or initialization process, the steps of the seeking, compiling, and assembling the various components of the system image into a cohesive operational unit may take a relatively long period of time.  
           [0008]    In many mission-critical applications, such a reinitialization or reboot of a computer is time-critical. As such, the reinitialization of a computing system after a crash or other form of stoppage is hampered by the necessity of the boot process in to finding, loading, and assembling all the different components of the operating system into a single cohesive image.  
           [0009]    Many other problems and disadvantages of the prior art will become apparent to one skilled in the art after comparing such prior art with the present invention as described herein.  
         SUMMARY OF THE INVENTION  
         [0010]    Various aspects of the invention may be found in a computing system containing a primary memory and a secondary memory. The secondary memory is either powered independently from the main computing system and primary memory, or is non-volatile memory that may be written and overwritten by the computing system itself. In exemplary embodiments, the secondary memory is powered by a battery or rechargeable power source. Or, the secondary memory may be an electrically erasable programmable memory (EEPROM).  
           [0011]    When the computing system is initiated, the computing system is directed to save an image of the system to the secondary memory. Due to the fact that this secondary memory is unaltered when the computing system crashes or is otherwise reinitialized, the system image can be reloaded directly into the primary memory. As such, the computing system need not perform a full boot or reinitialization process to restart the computing system from scratch.  
           [0012]    Additionally, the boot process may detect whether any such system image resides in the secondary memory. If so, the computing system during the boot process may transfer the stored system image to the primary memory and mask off the secondary memory to the operating system. If not, the computing system during the boot process may free the secondary memory for normal use by the operating system.  
           [0013]    Other aspects, advantages and novel features of the present invention will become apparent from the detailed description of the invention when considered in conjunction with the accompanying drawings.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0014]    [0014]FIG. 1 is a schematic block diagram of a fast bootable computing system according to the invention.  
         [0015]    [0015]FIG. 2 is a logical block diagram of the method by which the computing system of FIG. 1 may operate.  
         [0016]    [0016]FIG. 3 is a schematic block diagram of an alternative embodiment of the invention of FIG. 1.  
         [0017]    [0017]FIG. 4 is a block diagram of a method by which the invention of FIG. 3 may be implemented.  
         [0018]    [0018]FIGS. 5 a  and  5   b  are logical diagrams showing the relationship within a memory map of the primary and secondary memories of possible embodiments of the inventions of FIGS. 1 and 3.  
         [0019]    [0019]FIG. 6 is a block diagram indicating a method by which a computing system may perform such a masking operation in the memory configuration of FIG. 5.  
     
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0020]    [0020]FIG. 1 is a schematic block diagram of a fast bootable computing system according to the invention. A computing system  100  contains a primary memory  110 . During typical operation of the computing system  100 , the primary memory  110  will contain a system image  120  that operates the computing system  120 . The system image  120  is the software that is compiled, collated, and run in the normal boot process of the computing system  100  in order to execute the full functionality of the computing system  100 .  
         [0021]    It should be noted that the system image  120  may exist fully in the primary memory  120 , or may be stored in components parts in a slower storage media such as a hard disk or other type of virtual memory scheme. As contemplated in the invention, at any time the system image may be saved as a “snapshot” of the image at that particular time. Such a “snapshot” of the system image may be used to save the steps in the boot process of locating, loading, and compiling the various components into another system image. In this case, the work performed in the boot process in compiling and making the system image  120  for execution, if saved, can be retrieved at a later time to speed up the boot process of reinitializing the system image.  
         [0022]    In this case, after the boot process initially builds the system image  120 , the computing system  100  stores an image of the operating system in a secondary memory  130 . As such, the secondary memory  130  has a backup system image  140  contained within it. It should be noted that the secondary memory  130  and the primary memory  110  should be either independently powered or the secondary memory  130  should be some form of non-volatile memory (NVM). As such, when the power to the computing system  100  and primary memory  110  fails, or the computing system  100  is otherwise reinitiated, the secondary memory  130  containing the saved system image  140  will still retain the saved system image  140  after the reinitialization of the computing system  100 .  
         [0023]    As noted previously, the secondary memory  130  may be powered by an independent power source, such as a battery or a rechargeable battery. Or, the secondary memory  130  may be some sort of NVM, such as a “slow” read/write memory. In this case, the secondary memory  130  could be an EEPROM. The EEPROM may be written with the system image while the computing system  100  is in use.  
         [0024]    Thus, when the power to the computing system  100  fails, or the computing system  100  otherwise reinitializes, the computing system  100  may load the saved system image  140  directly from the secondary memory  130  into the primary memory  110  upon a restart. As such, the steps of the loader in collecting, compiling, and organizing a new system image may be obviated.  
         [0025]    As such, upon reinitiation of the computing system  100  after any such failure, the computing system  100  would be operational within a much shorter time frame than when the computing system  100  needs to reassemble the system image in a conventional manner. This is due to the fact that the saved system image  140  is already contained within the computing system  100 , whereby it would be loaded in a relatively extremely fast manner with respect to a normal reinitialization.  
         [0026]    It should be clear to one skilled in the art that the computing system  100  may be any of a number of combinations of hardware and software. Additionally, the computing system may be any electronic device having a solid state memory and requiring any form of operating system, including personal digital assistants, “smart” appliances, or so-called “smart cards.” 
         [0027]    Additionally, the computing system may, from time to time, write the copy of the system image to the secondary memory. The computing system may write the system image to secondary memory upon the transfer of control of the computing system to the operational system image, or such saving may take place upon any predefined event. Or, such saving may take place upon the initiation of a command from a user, or a remote system administrator. Or, if, upon an initialization wherein the computing system determines that no system image is present, the computing system may immediately write the system image to the secondary memory as an initial step in normal operation.  
         [0028]    [0028]FIG. 2 is a logical block diagram of a method that may be employed by the computing system of FIG. 1. In a block  210 , a computing system awaits power-up. In a block  215  the computing system has received the initiation of power-up and runs a boot process for the computing system.  
         [0029]    In a block  220  the computing system executes the boot process for building an operational system image that controls the actions of the computing device. In the course of operation, the boot process determines whether a saved system image is present in a secondary memory in a block  230 . If the saved system image is not present in the secondary memory, the loader assembles the operational system image in a conventional manner in a block  235 . After assembling the operational system image from the component parts accessible to the computing system in the block  235 , the boot process transfers control of the computing system to the operational system image thus assembled in a block  250 .  
         [0030]    However, if a previously saved system image is present in a secondary memory in the block  230 , the boot process transfers the saved system image from the secondary memory to the primary memory in a block  240 . Once the transfer of the saved system image to the primary memory has completed, the operational state of the system has been restored. Next, the transferred system image is initiated in the block  250 .  
         [0031]    [0031]FIG. 3 is a schematic block diagram of an alternative embodiment of the invention of FIG. 1. A computing system  300  has a primary memory  310 , a secondary memory  320 , and a slower memory media  330 . The slower memory media  330  may be such a form as a magnetic hard disk, an optical disc, or other form of slower memory media.  
         [0032]    In this case, the secondary memory  320  contains a partial system image  325 . This may occur when the system image of the computing system  300  is larger than the secondary memory may fully contain. In this case, the remainder of the system image may be contained on the slower memory media  330  as another partial system image  335 .  
         [0033]    When the computing system  300  fails or is otherwise reinitialized, a reboot of the computing system  300  is necessary. During such reinitialization, the boot process of the computing system  300  determines whether a partial system image  325  is contained in the secondary memory  320 . When this occurs, the boot process may also determine that the remaining portion or portions of the system image are contained in the memory media  330 , ie. the partial system image  335 . As such, the boot process loads the partial system image  325  into the primary memory, and adds the partial system image  335  from the slower memory media  330  to that already transferred to the primary memory  310  from the secondary memory  320 . When both partial system images are assembled in the primary memory  310 , a full system image is present and ready to be run by the computing system  300  as an operational system image.  
         [0034]    [0034]FIG. 4 is a block diagram of a method by which the invention of FIG. 3 may be implemented. In a block  410 , the computing system awaits a power-up event. Power-up occurs in a block  415 , and the computing system initiates a boot process in a block  420 . In a block  430 , the boot process determines whether a secondary memory has a system image contained in it.  
         [0035]    If the secondary memory does not have a saved system image in it, the boot process initiates a typical assembling and loading of the operational system image in a block  440 . Upon assembling and loading of the system image in the block  440 , the computing system transfers control to the assembled and loaded system image in a block  450 .  
         [0036]    However, if the boot process detects that a saved system image is already contained within a secondary memory in the block  430 , the boot process loads that saved system image from the secondary memory into the primary memory in a block  460 . The boot process then checks if this image is a full or partial system image in a block  470 . The system image contained in the secondary memory may contain a flag indicating whether the saved image is a full or partial system image.  
         [0037]    If the system image contained in the secondary memory is determined to be a full system image, the boot process transfers control of the computing system to the system image contained in the primary memory, as shown in the block  450 . However, if the secondary memory does not contain a full system image in the block  470 , the boot process looks to another memory media, such as a hard disk, for the remainder of the system image. Upon finding the remainder of the system image, the boot process transfers the remaining portions of the system image from the alternative memory media into the primary memory in the block  480 . As before, boot process then transfers control of the computing system to the system image contained in the primary memory, as shown in the block  450 .  
         [0038]    [0038]FIGS. 5 a  and  5   b  are logical diagrams showing the relationship within a memory map of the primary and secondary memories of possible embodiments of the inventions of FIGS. 1 and 3. In FIG. 5 a , the secondary memory operates at a higher memory address than the primary memory. It should be noted that the secondary memory may contain any system image that has been previously stored into it. A computing system parameter check, such as a BIOS in many common personal computers, may determine the extent and type of the memory configuration within the computing system. In this case, the computing system would recognize that the secondary memory occupies the higher memory.  
         [0039]    The computing system recognizes that the primary memory contains all the memory locations lower than the starting memory address of the secondary memory. Sufficient secondary memory should be provided that a system image may be stored as detailed in FIG. 1 or in FIG. 3. Typically, a secondary memory storage of 32 megabytes is sufficient, although more may be utilized.  
         [0040]    Upon a normal initialization of the computing system, the boot process determines whether the sticky fast boot feature is enabled. In this is the case, the boot process masks out the upper memory locations corresponding to the secondary. As such, the operating system, when running, will not allow access to the secondary memory.  
         [0041]    In the normal operation, the operating system will not allow access to the upper memory locations, nor will it be able to overwrite the saved system image contained therein. When a request to save the system image is initiated, the operating system will then allow read and write access to the secondary memory region.  
         [0042]    However, if the boot process determines that the fast image process is disabled, the boot process may free up the secondary memory locations. This would allow the operating system to utilize this secondary memory in a typical fashion.  
         [0043]    [0043]FIG. 5 b  shows the converse case. This diagram exemplifies that the secondary memory need not exist in the higher memory addresses, but the system may also utilize the system when the secondary memory operates in the lower memory addresses.  
         [0044]    [0044]FIG. 6 is a block diagram indicating a method by which a computing system may perform such a masking operation in the memory configuration of FIG. 5. In a block  610 , the computing system awaits power-up. In a block  615 , power-up has commenced and a boot process executes in a block  620 .  
         [0045]    In a block  625 , the computer system determines whether the system contains a secondary memory. If no secondary memory is available, the computer system configures the computer system to operate with all available memory in a block  630 . Next, the computer system proceeds with the initialization of operation in a typical manner through loading and compiling a system image into primary memory in a block  635 . In a block  640 , the computer system initiates operation with the system image contained in primary memory.  
         [0046]    If a secondary memory is present, the boot process determines whether a previously saved system image is available in the secondary memory in a block  650 . If so, the computing system is initialized using the image in a block  660 , and the control reverts to the step  640 , detailed above.  
         [0047]    However if the system image is not available, the computing system determines if the sticky fast boot option is enabled in a block  670 . If so, the computer system reserves the secondary memory for a system image in a block  680 . The computing system then intializes in typical manner in the blocks  635  and  640 , described previously.  
         [0048]    If the sticky boot option is not enabled, the computing system configures the system to work with all the available memory in the block  630 . The system then intializes in the manner prescribed by the blocks  635  and  640 .  
         [0049]    As such, a fast rebooting computer system is described. In view of the above detailed description of the present invention and associated drawings, other modifications and variations will now become apparent to those skilled in the art. It should also be apparent that such other modifications and variations may be effected without departing from the spirit and scope of the present invention as set forth in the claims which follow.