US20110173429A1 - Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing - Google Patents

Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing Download PDF

Info

Publication number
US20110173429A1
US20110173429A1 US13/073,686 US201113073686A US2011173429A1 US 20110173429 A1 US20110173429 A1 US 20110173429A1 US 201113073686 A US201113073686 A US 201113073686A US 2011173429 A1 US2011173429 A1 US 2011173429A1
Authority
US
United States
Prior art keywords
task
volatile memory
computer apparatus
operating systems
initialization routine
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.)
Abandoned
Application number
US13/073,686
Inventor
William K. Hollis
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.)
III Holdings 1 LLC
Original Assignee
Hollis William K
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 Hollis William K filed Critical Hollis William K
Priority to US13/073,686 priority Critical patent/US20110173429A1/en
Publication of US20110173429A1 publication Critical patent/US20110173429A1/en
Assigned to III HOLDINGS 1, LLC reassignment III HOLDINGS 1, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HOLLIS, WILLIAM K.
Abandoned legal-status Critical Current

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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Definitions

  • the present invention relates to operating systems for computer apparatuses, and more particularly, to a method to reduce and improve the initial program load time of a computing apparatus operating system and shut down processing associated therewith.
  • RAM Random Access Memory
  • computing apparatus When a computing apparatus is power on, numerous and varied software components are loaded into its RAM (Random Access Memory).
  • RAM Random Access Memory
  • the term computing apparatus is used synonymously with the terms personal computers, portable personal electronic devices, personal digital assistants (PDA's), and other similarly intended apparatus.
  • PDA's personal digital assistants
  • RAM Random Access Memory
  • auxiliary devices and functions are integrated into computing apparatuses additional RAM is required to accommodate operating and application system functionality requirements.
  • additional software must also be loaded into RAM during device initialization to drive such functionality.
  • RAM must be validity checked during and after every power on sequence to verify its continuing integrity and associative increase in the time required for RAM validation is often perceived by the user of the apparatus.
  • boot is used synonymously with the initial program (IPL) of one or more operating system or application program sequence necessary to execute a desired function).
  • shut down processing or termination processing should require the simple act of minimal cleanup by the operating system resulting in almost immediate shut down of the computing apparatus.
  • the status of the present art requires the operating system, or more precisely an operating system or application program processing component associated therewith to attempt to shut down each and every task, and each and every device attached to the computing apparatus to cease operation (even if that task/device is not responding or otherwise presently active in the terminating computer device).
  • the method and system include generating a shut down command to computer and storing interface screen and any data files that are open at the time of turning off the computer.
  • the interface screen and data files are stored so that upon subsequently turning off the computer, computer displays interface screen in the shortened predetermined time.”
  • the disk drive accesses the previously requested data and copies it onto the cache of the disk drive, from where it is transferred to the host computer when the host computer requests it.
  • the preftech table is updated to reflect disk location changes for the various records, or to reflect new records that were requested by the host computer but not found in cache during the previous power-on/reset).
  • U.S. Pat. No. 6,122,677 entitled “Method of Shortening Boot Uptime In a Computer System” purports to disclose a method of configuring peer devices without the unnecessary delay in boot up time using a compatibility bridge and discloses in part, “Upon initiating a configuration cycle, a BIOS initialization scans all peer devices located on the host bus. A watchdog timer times out after a predetermined duration when the intended apparatus fails to respond to the configuration cycle. A bit corresponding to the particular apparatus is set in a scorecard register. The compatibility bridge responds to the configuration cycle after the watchdog time-out period)”
  • U.S. Pat. No. 5,269,022, entitled “Method and Apparatus for Booting a Computer System by Restoring the Main Memory from a Backup Memory” purports to disclose a method of generating a boot image and using the boot image to restore a computer system having a processor, an operating system, physical memory, virtual memory and disk storage.
  • a system initialization code of the operating system is then replaced with new system initialization code that branches to restart code that accesses to the designated area of the nonvolatile memory such that when the computer system is again powered on, the restart code accesses the designated area of the nonvolatile memory for the data to restore the computer system to the state before the computer system was powered off.
  • the invention features a method for enabling a user of a computer to rapidly begin using an application which had been previously placed in a non-running state.
  • information defining an image of an interactive screen associated with the application is stored in the memory of the computer and locked to prevent corruption by other running applications.
  • the image defined by the stored information is displayed to the user. In this way the user is given the impression that the application has become immediately available.
  • the common deficiency in all of the above-noted prior art references is that each reference expressly or implicitly attempts to restore the computing apparatus to a state reflecting its most recent status prior to shut down or termination processing. Consequently, the common deficiency in all of these references each is that each attempts to restore the computing apparatus to reflect its most recent fully loaded and executing status prior to termination.
  • Applicant has developed an innovative method of optimizing the booting of a computing apparatus to allow that apparatus to function as quickly as possible for its main (intended purpose) by loading portions of the operating system as needed.
  • Processes of the instant invention are equally applicable to any number of computing apparatuses.
  • illustrative examples of the instant invention's practice with respect to a PC and personal digital device (herein synonymously referred to as “PDA”) as well as user module interfaces are provided.
  • the inventions methodology assumes and expects all software to maintain logs of changes to its data files (user input) to expedite the shut down of the apparatus.
  • User shut down or loss of power input causes NVRAM buffers to be flushed (hard drives, etc.) (as indicated in block 20 ) to the static memory of the NVRAM apparatus and the apparatus to be shut down (as indicated in block 21 ).
  • an object of the invention is a prioritization of loadable tasks wherein only operationally essential tasks are loaded into RAM and executed as quickly as possible with ancillary functions loaded subsequent thereto, if at all.
  • the methodology of the instant invention is equally applicable to a variety of computing apparatuses, such as but not limited to personal computers, routers, and hand-held personal devices (digital assistants, MP3 players, etc.).
  • computing apparatuses such as but not limited to personal computers, routers, and hand-held personal devices (digital assistants, MP3 players, etc.).
  • digital assistants digital assistants, MP3 players, etc.
  • the immediately following discussion illustrates “commonality” of the instant invention's practice with respect to personal computers, routers, hand held personal devices during boot execution and shut down/termination processing of each device type.
  • any RAM not specifically required for initial startup is verified/validated on a as needed basis (i.e., when to load a “primary” function) or as free CPU cycles allow).
  • errors in RAM will not preclude the apparatus from booting (as indicated in block 7 ). Such errors are maintained in a table as memory address(es) to be avoided. The user is notified of errors within the apparatus, RAM and the apparatus error address(es) “patcharound.”
  • “Highest priority” tasks are loaded next (as indicated in block 9 ).
  • BIOS basic input/output system
  • the router next concentrates interface(s) execution with respect to the OSI (Open Systems Interconnection) seven layer model. Concentration emphasis is on layer one (“line up”), then layer two (“protocol up”) and last layer 3. 3.
  • the image booting next determines the type routing (layer three) required (IP (Internet Protocol), IPX (Internet Packet Exchange), Appletalk, X.25, Frame Relay, etc.) and loads only those portions of the IOS (Cisco's Internet Operating System) that are required. If BGP (Border Gateway Protocol) is not in the configuration, the BGP is not loaded. 4.
  • IP Internet Protocol
  • IPX Internet Packet Exchange
  • Appletalk X.25, Frame Relay, etc.
  • An additional feature of the instant invention is to accommodate a router's maintaining of statistics (stored in NVRAM and regularly updated to allow for changes in traffic flows) which interfaces are busiest and thus allowing prioritization for making those interfaces operational. 5.
  • the invention allows user interaction via the console should be run (on exception to this is, of course, allowing operator input to stop the initial boot sequence to correct router problems).
  • C. On a hand held “personal device” 1. The display is immediately visible (a “splash” screen can be shown first if absolutely necessary) showing the “main function” of the apparatus.
  • a cell phone would display the main menu b) a MPEG (Moving Pictures Expert's Group) would display video c) A MP3 player would display the songs that are on the playlist d) A hand held video game would display the start screen 2 . Function buttons are next made accessible to the user 3 .
  • the apparatus then load, tasks that are its “primary” function a.) A cell phone would load the task to access its directory of phone numbers b.) A MP3 player would load the task to play music (with pointers to the current song, the past two songs and the next two songs) c.) A hand held video game would load the start of the game
  • Application software executing on this computing apparatus should “play well” with the operating system. That is, application software (when started) should be compatible with and adhere to the above “fast boot” checkpointing methodology of the instant invention. Plugins should be loaded only when needed. As an example, an initial “splash” screen should be minimal followed by a “untitled” word processing document ready for editing, or another document requested by the user.
  • Apparatus power off can be either user initiated or can be loss of power to the apparatus (plug pulled, battery runs out) (as indicated in blocks 20 , 21 and 22 ).
  • the instant invention assumes the apparatus is designed to allow the core task has enough time and power to flush all NVRAM buffers. An interrupt from the power supply to the core task would be best approach towards ensuring this capability.
  • FIG. 1 is a logic flow illustration of the invention's practice with respect to a general purpose personal computing apparatus.
  • FIG. 2 is a logic flow illustration of an embodiment of the instant invention further illustrating user interface sequencing with respect to the invention's methodology.
  • FIG. 3 is a logic flow illustration of the instant invention wherein the computing apparatus practiced is a personal digital assistant.
  • the apparatus and the method of the instant invention rely upon processing steps which first requires the loading and initiation of a BIOS (Built In Operation System) initialization routine.
  • BIOS Bus In Operation System
  • the instant invention next limitedly validates that portion of RAM (as indicated in block 3 ) to be used accommodate the selective BIOS “load” initialization routine to ensure it is free of addressing or error exceptions. To the extent that portion necessary to accommodate the initialization routine, and only that portion necessary in order to accommodate the initialization routine, is checked for validated addressability thus saving the necessity of validating all RAM accessible to the device.
  • the instant invention practice is to patch around such invalid addresses and allow the loading of the device to proceed (as indicated in block 7 ). Consequently, the portion of the operating system to be loaded into RAM would be comprised of a core task manager (CTM) and memory task manager (MTM) with the function of the CTM to manage and prioritize tasks (operating systems tasks and program system calls, etc.) and the function of the MTM to manage memory, ram, virtual memory, vm paging, etc.
  • the MTM tracks RAM usage and, if required, facilitates paging in and out of virtual memory (as indicated in block 9 ).
  • the MTM also tracks which tasks (driver system) are no longer active and determines if additional RAM is required, such RAM can be reused (as indicated in block 9 ). Should a system routine be resident in memory (but not active) it can be immediately reactivated and used without requiring the instructions to be reloaded into memory from non-volatile RAM.
  • Start (as indicated in block 1) /*SizeOfCTMMTM is the total size of the RAM needed to load CTM and MTM driver. 25989 bytes is just an example number for size of CTM and MTM, and SizeOfMemory is just an example size of 256 Mb RAM (Total System Memory).
  • the operating system of the instant invention first interrogates an audit reference to identify those minimally essential operating system and application program (as indicated in block 8 , FIG. 1 ) startup processing components necessary to effectuate user communication with the apparatus.
  • These device dependent audit references are contained within a data reference accessible to the device and most easily comprehended as checkpoint records wherein the operating system and application program prosecution status is recorded for later reference.
  • the instant invention next selectively retrieves the identified startup program components and thereby bypasses at least a portion of BIOS instruction set normally required for establishing interactive communication between a user and the apparatus. That is, the instant invention identifies those portions of the BIOS initialization to be loaded to RAM to effectuate such communication and then bypasses other “standard” portions of BIOS processing which are necessary to effectuate almost instantaneous user communication.
  • the instant invention next determines an apparatus specific highest priority task and initiates execution of the task (as indicated in block 12 ).
  • Such tasks are obviously determined by the function of the device with the tasks and the respective priorities stored a non-volatile memory as a task list (TL) or as a table in the CTM and ROM.
  • the CTM then passes the name and size of the application to the MTM and loads the task into memory and passes the task back to the CTM for execution.
  • the first task on a personal computer is the loading of the driver for hard drive for the additional driver application can be loaded.
  • While the first task of any personal device is to display and the first task of a router would be to determine whether there was a valid boot entry on its non-volatile RAM, a flash card or hard drive (as indicated in block 18 , FIG. 3 ).
  • the instant invention next highest determines what is the next execution priority task in the task list, and executes that task and continues to execute each subsequent “next priority task” until the task load is completed (as indicated in block 30 ). Once all such tasks are loaded dispatching control of the operating system is turned to all system and application components necessary to effectuate normal operation. During this normal or standard operation, the MTM initiates all tasks and tracks the task memory requirements (as indicated in blocks 36 and 39 ).
  • Each task is individually responsible for managing its own temporary files and logging all modifications to those files as such modifications were made.
  • the files are saved, the original file plus the logged or audit changes are kept in a file. The original file is kept until creation is completed. Then and only then is the old file deleted from the non-volatile RAM device.
  • applications should load with the minimal amount of software to allow the main page and menu to be displayed.
  • Plugins and other “extraneous” subroutines should not load until the operator requests that function/subroutine.
  • the system should display a “out of memory/bad memory” error and halt. */ IF MTM returns “No Memory Available” error, then display error message and halt /*
  • the priority of the NVRAM task is dependent on each device. In the example of a personal computer the NVRAM task should have a lower priority than the Display, keyboard or mouse task.
  • the NVRAM table has a list of “high priority” tasks (and their associated priority) that need to be read from BIOS into main memory, a list of the BIOS tasks that have updated code that resides on NVRAM (again with a priority) an the History data.
  • the “History data” is device dependent (see below). Note: A default table can reside in BIOS for initial device operation or if the NVRAM table is destroyed.
  • the load/run bit tells whether the task is preloaded into RAM, but not executed until the device requests them (e.g. task for what to do when the user presses a particular button of the front panel or the application the user “usually” double clicks on first) or tasks that are not the absolute highest priority but still need to be loaded and run at device startup (e.g. tasks for interface operation on a router or on a server the applications that run on the server at initialization).
  • the “load” tasks are “historically” the first tasks that the system executes after it is fully operational.
  • the “Load and Run” tasks are configured by the operator of the device.
  • the MTM tracks which tasks (drivers, system calls, applications) are active and which are no longer active so that if RAM is required then that RAM can be reused. Memory is not changed until something is loaded into that address space. If a system routine is already in memory (albeit not active at the moment) then it can be immediately reactivated and used without requiring the instructions/data be reloaded into memory from NVRAM (a waste of load time and presumably NVRAM is a slower access device than RAM).
  • the history table needs to be updated on a device by device basis.
  • the MTM should track the first “X” tasks the user requests and combine that information in the history table with respect to the previous information to give a cumulative history of the user's actions at startup.
  • the router In the case of a router the router should keep a history of the highest traffic interfaces and write that information to NVRAM on a periodic basis. This gives the router an idea next time it starts up which interfaces should have the highest priority task initialization/ execution.
  • the MP3 player should track which button is historically pusher first and load that task first.
  • the task should set a flag indicating such and immediately return */ Allow task MTMTaskTable[Looptasks] to operate (CPUTime / (Priority +1)) instructions /* If the just executed task requires subtasks to run then it set a flag, returns the task name it needs to MTM and ends.
  • That task will now be brought into memory and all the passed parameters passed to that subtask */ IF NeedTask flag for task MTMTaskTable[Looptasks] is set DO IF Task Requested is in MTMTaskTable, Pass task name to MTM to pass parameters and update MTM table with calling task, set LoadTask flag ELSE Pass task to MTM to allocate memory / load task and passed parameters, set AddTask flag ENDIF /* Likewise if a task is releasing a subtask or the task is terminating then the invention can release any subtasks to that task */ IF DontNeedTask flag for task MTMTaskTable[Looptasks] is set or Terminate flag is set DO IF DontNeedTask flag is set, Pass task and subtask name to MTM and set DontNeedTask flag If task is terminating then pass task name to MTM and set Terminate flag ENDIF ENDWHILE ENDSUBROUTINE
  • FIGS. 1 through 3 flowcharts of logic flow sequencing associated with FIGS. 1 through 3 are immediately provided for purposes of full and enabling disclosure while illustrative logic step sequencing is denoted no such restriction is herein intended, rather the invention is capable of being practiced in a number of contexts as indicated in its versatility with respect to varying type computer apparatuses. Consequently logic flow sequencing may be altered in association therewith as will be readily apparent to those skilled in the art.

Abstract

A method to reduce and thereby improve the initial program load time of a computing apparatus operating system and thus provides for near instantaneous user interaction. When practicing the instant invention, a computing apparatus operating system or application processing component is loaded neither sequentially nor completely, but rather on an as required basis. The invention's “required only” loading of processing components persist through subsequent operation and shut down of the computing apparatus with each loaded task creating a checkpoint record of processing modifications to non-volatile memory. Such checkpointing allows shut down processing of the apparatus to consist of merely flushing memory buffers in the apparatus checkpointed non-volatile memory of the apparatus to permanent storage and powering off of the apparatus, with subsequent initial program load (IPL) sequencing referencing the checkpointed records to minimize future system initialization elapsed time.

Description

    PRIORITY CLAIM
  • This application is a continuation of currently pending Reissue application Ser. No. 12/614,184, filed Nov. 6, 2009, based on Issued U.S. Pat. No. 7,299,346, issued Nov. 20, 2007, which is a continuation-in-part of abandoned application Ser. No. 10/183,709, filed Jun. 27, 2002.
  • BACKGROUND OF THE INVENTION
  • 1. Technical Field of the Invention
  • The present invention relates to operating systems for computer apparatuses, and more particularly, to a method to reduce and improve the initial program load time of a computing apparatus operating system and shut down processing associated therewith.
  • 2. Background of the Invention
  • When a computing apparatus is power on, numerous and varied software components are loaded into its RAM (Random Access Memory). As used herein, the term computing apparatus is used synonymously with the terms personal computers, portable personal electronic devices, personal digital assistants (PDA's), and other similarly intended apparatus. As more and more auxiliary devices and functions are integrated into computing apparatuses additional RAM is required to accommodate operating and application system functionality requirements. Further, users continue to demand enhanced functionality of hardware devices, additional software must also be loaded into RAM during device initialization to drive such functionality. As RAM must be validity checked during and after every power on sequence to verify its continuing integrity and associative increase in the time required for RAM validation is often perceived by the user of the apparatus.
  • It would seem as processors increase in speed, computing apparatuses operating under control of their respective control programs should be able to boot (a.k.a. “load”) faster. However, given the requirements for additional functionality associated with these computing apparatuses and the necessity of ensuring the integrity of RAM processing, such devices require more time than ever to boot (as used herein the term “boot” is used synonymously with the initial program (IPL) of one or more operating system or application program sequence necessary to execute a desired function).
  • In an associative manner shut down processing or termination processing, given the advances of the art, should require the simple act of minimal cleanup by the operating system resulting in almost immediate shut down of the computing apparatus. However, the status of the present art requires the operating system, or more precisely an operating system or application program processing component associated therewith to attempt to shut down each and every task, and each and every device attached to the computing apparatus to cease operation (even if that task/device is not responding or otherwise presently active in the terminating computer device).
  • In a number of prior art references, improvements in initial program load time(s) have been asserted. For example, U.S. Pat. No. 5,968,173 entitled “Method and System for Maximizing the Apparent Initial Processing Capability of a Computer” purports to disclose and claim a method and system reduce the apparent time between turning on a computer and making available the computer processing capability. The method and system of the '173 patent includes and states in part “ . . . displaying within a shortened predetermined time period an interface screen that includes a plurality of interface checkpoints and address data relating to application programs associated with the user interface checkpoints. The shortened predetermined time period has a duration substantially shorter than the period associated with booting the associated application programs. In turning off computer, the method and system include generating a shut down command to computer and storing interface screen and any data files that are open at the time of turning off the computer. The interface screen and data files are stored so that upon subsequently turning off the computer, computer displays interface screen in the shortened predetermined time.”
  • Another example of a prior art reference purporting to accelerate processes associated with initial program load and/or termination processing are disclosed in association with U.S. Pat. No. 6,073,232, entitled “Method for Minimizing a Computer's Initial Program Load Time after a System Reset or a Power-on Using Non-volatile Storage” discloses in part a method for increasing boot speed of a host computer with associated hard disk drive generates a preftech table that contains pointers to disk locations and lengths of the records of an application program requested by the host computer during an initial power-on/reset. During the next power on/reset, before the host computer is ready for data but after the disk drive has completed its reset routine, using the preftech table the disk drive accesses the previously requested data and copies it onto the cache of the disk drive, from where it is transferred to the host computer when the host computer requests it. The preftech table is updated to reflect disk location changes for the various records, or to reflect new records that were requested by the host computer but not found in cache during the previous power-on/reset).
  • Yet another reference allegedly shortening the time required to “boot” a computer system is found in U.S. Pat. No. 6,098,158, entitled “Software-enabled to Fast Boot” wherein the abstract of said reference discloses a method of generating a boot image and using the boot image to restore a computer system having a processor, an operating system, physical memory, virtual memory and disk storage. The method may be initiated from any particular software application, or at multiple execution points within a particular application. By providing full virtual memory support in the boot image, the computer system may be restored to any predetermined operating state.
  • U.S. Pat. No. 6,122,677, entitled “Method of Shortening Boot Uptime In a Computer System” purports to disclose a method of configuring peer devices without the unnecessary delay in boot up time using a compatibility bridge and discloses in part, “Upon initiating a configuration cycle, a BIOS initialization scans all peer devices located on the host bus. A watchdog timer times out after a predetermined duration when the intended apparatus fails to respond to the configuration cycle. A bit corresponding to the particular apparatus is set in a scorecard register. The compatibility bridge responds to the configuration cycle after the watchdog time-out period)”
  • U.S. Pat. No. 5,269,022, entitled “Method and Apparatus for Booting a Computer System by Restoring the Main Memory from a Backup Memory” purports to disclose a method of generating a boot image and using the boot image to restore a computer system having a processor, an operating system, physical memory, virtual memory and disk storage.
  • U.S. Pat. No. 5,269,022, according to the Abstract stated therein, purportedly discloses, “In a computer system, when the system is first booted in a normal mode, main memory data stored in a main memory immediately after the system is booted, is stored as backup data in a backup memory or the like. A backup flag representing whether or not the backup data can be restored is set and the system is rebooted. When the system is next booted in the normal mode, the backup data stored in the backup memory or the like is restored as the main memory data in the main memory. The backup flag is automatically reset in a maintenance mode.
  • U.S. Pat. No. 5,710,930, entitled “Apparatus and a Method for Allowing an Operating System of a Computer to Persist Across a Power Off and On Cycle”, wherein said patent's abstract purports to disclose, “A method of allowing an operating system of a computer system to persist across a power off and on cycle is described. The method includes the step of detecting if the computer system is to be powered off. If the computer system is detected to be powered off, the state of the computer system is then preserved by storing data representing the state of the computer system in a designated area of nonvolatile memory of the computer system. A system initialization code of the operating system is then replaced with new system initialization code that branches to restart code that accesses to the designated area of the nonvolatile memory such that when the computer system is again powered on, the restart code accesses the designated area of the nonvolatile memory for the data to restore the computer system to the state before the computer system was powered off.
  • U.S. Pat. No. 5,797,003, entitled “Quick Access to Computer Applications” wherein the abstract purports to disclose, “In general, in one aspect, the invention features a method for enabling a user of a computer to rapidly begin using an application which had been previously placed in a non-running state. Prior to the time when the application was placed in the non-running state, information defining an image of an interactive screen associated with the application is stored in the memory of the computer and locked to prevent corruption by other running applications. Then, in response to a request from the user to begin using the application, and before the application has been fully loaded into memory and is again running, the image defined by the stored information is displayed to the user. In this way the user is given the impression that the application has become immediately available.
  • As distinguished from the disclosure and claims of the instant invention, the common deficiency in all of the above-noted prior art references is that each reference expressly or implicitly attempts to restore the computing apparatus to a state reflecting its most recent status prior to shut down or termination processing. Consequently, the common deficiency in all of these references each is that each attempts to restore the computing apparatus to reflect its most recent fully loaded and executing status prior to termination.
  • Again using the “standard” approach for a boot all memory must first be verified error free and the state of the machine must be loaded from non-volatile random access memory NVRAM (hard drive, flash, etc.). While this approach does reduce time in loading each component from the NVRAM apparatus and integrating it into the operating system, it fails to address or remedy errors in the previously saved image. Had saved information been save incorrectly, if there were errors in software executing at the time it was saved as an image, such errors are routinely loaded back into memory when the apparatus is again activated.
  • Consequently, this flawed methodology requires the computer to be shut down and rebooted yet again after loading the flawed image.
  • Another flawed approach to enhance boot improvement and termination processing found in the contemporary art is the loading of a memory image to disk once the apparatus has been booted (attempting to minimize the above errors). However, if new software has been loaded, subsequent to this image copy, the computer then must be completely rebooted to recreate a current accurate image of the operating system (as used herein, the term operating system is used synonymously with the term “control program” and relates both to processes associated with initial program load and termination processing as well as dispatching control exercised over application end user oriented programs.
  • BRIEF SUMMARY OF THE INVENTION
  • Responsive to the foregoing challenges, Applicant has developed an innovative method of optimizing the booting of a computing apparatus to allow that apparatus to function as quickly as possible for its main (intended purpose) by loading portions of the operating system as needed. Processes of the instant invention are equally applicable to any number of computing apparatuses. For purposes of full and enabling disclosure, illustrative examples of the instant invention's practice with respect to a PC and personal digital device (herein synonymously referred to as “PDA”) as well as user module interfaces are provided.
  • The inventions methodology assumes and expects all software to maintain logs of changes to its data files (user input) to expedite the shut down of the apparatus. User shut down or loss of power input causes NVRAM buffers to be flushed (hard drives, etc.) (as indicated in block 20) to the static memory of the NVRAM apparatus and the apparatus to be shut down (as indicated in block 21).
  • When practicing the instant invention, the computing apparatus is booted from software which is stored on nonvolatile random access memory device and not from an “executing” image of RAM when it was last shut down. Consequently, an object of the invention is a prioritization of loadable tasks wherein only operationally essential tasks are loaded into RAM and executed as quickly as possible with ancillary functions loaded subsequent thereto, if at all.
  • As will be described throughout the disclosure of the instant invention, the methodology of the instant invention is equally applicable to a variety of computing apparatuses, such as but not limited to personal computers, routers, and hand-held personal devices (digital assistants, MP3 players, etc.). For purposes of full and enabling disclosure as well as ease in comprehending the adaptability and versatility of the instant invention to a variety of computing devices, the immediately following discussion illustrates “commonality” of the instant invention's practice with respect to personal computers, routers, hand held personal devices during boot execution and shut down/termination processing of each device type.
  • INVENTION BOOT PROCESSING SUMMARY
  • When the apparatus is powered on (as indicated in block 1), only the amount of RAM required to load (as indicated in block 3) core operating system processing components is checked for errors (this initial RAM check may be avoided in computing machinery executed exclusively from NVRAM on the apparatus). As practiced by the instant invention, any RAM not specifically required for initial startup is verified/validated on a as needed basis (i.e., when to load a “primary” function) or as free CPU cycles allow). In the instant invention, errors in RAM will not preclude the apparatus from booting (as indicated in block 7). Such errors are maintained in a table as memory address(es) to be avoided. The user is notified of errors within the apparatus, RAM and the apparatus error address(es) “patcharound.”
  • “Highest priority” tasks (and all sub-tasks required to support these tasks) are loaded next (as indicated in block 9). The following are examples of such task loading by device type: A. On a personal computer, the monitor driver, the mouse driver and the keyboard driver (in that order). 1. The monitor driver maintains a small database on the hard drive consisting of the background and all icons displayed on the desktop. This database is displayed almost instantaneously by the instant invention. 2. The mouse driver is loaded next as this is generally typically what the user will require next. B. On a router (such as, but not limited to a Cisco® router). 1. The basic input/output system (BIOS) loads only enough of itself to determine if a valid image in flash memory exists and if the configuration boots to that image. If found, then the image in flash memory starts booting. 2. The router next concentrates interface(s) execution with respect to the OSI (Open Systems Interconnection) seven layer model. Concentration emphasis is on layer one (“line up”), then layer two (“protocol up”) and last layer 3. 3. The image booting next determines the type routing (layer three) required (IP (Internet Protocol), IPX (Internet Packet Exchange), Appletalk, X.25, Frame Relay, etc.) and loads only those portions of the IOS (Cisco's Internet Operating System) that are required. If BGP (Border Gateway Protocol) is not in the configuration, the BGP is not loaded. 4. An additional feature of the instant invention is to accommodate a router's maintaining of statistics (stored in NVRAM and regularly updated to allow for changes in traffic flows) which interfaces are busiest and thus allowing prioritization for making those interfaces operational. 5. When the router has completed all tasks related to “routing”, the invention allows user interaction via the console should be run (on exception to this is, of course, allowing operator input to stop the initial boot sequence to correct router problems). C. On a hand held “personal device” 1. The display is immediately visible (a “splash” screen can be shown first if absolutely necessary) showing the “main function” of the apparatus. a) A cell phone would display the main menu b) a MPEG (Moving Pictures Expert's Group) would display video c) A MP3 player would display the songs that are on the playlist d) A hand held video game would display the start screen 2. Function buttons are next made accessible to the user 3. The apparatus then load, tasks that are its “primary” function a.) A cell phone would load the task to access its directory of phone numbers b.) A MP3 player would load the task to play music (with pointers to the current song, the past two songs and the next two songs) c.) A hand held video game would load the start of the game
  • INVENTION EXECUTION SUMMARY
  • After the absolute highest priority tasks are loaded (as indicated in block 3) attention is turned to performing highest priority tasks interspersed with cycles for lower priority tasks. Some of the lower priority tasks would include, but not limited to: completion of checking RAM for errors and/or keeping track of user initial actions and pro-actively loading those tasks into main memory in anticipation of what the user may do (and updating a database that record user actions).
  • Application software executing on this computing apparatus should “play well” with the operating system. That is, application software (when started) should be compatible with and adhere to the above “fast boot” checkpointing methodology of the instant invention. Plugins should be loaded only when needed. As an example, an initial “splash” screen should be minimal followed by a “untitled” word processing document ready for editing, or another document requested by the user.
  • INVENTION SHUTDOWN PROCESSING SUMMARY
  • Apparatus power off can be either user initiated or can be loss of power to the apparatus (plug pulled, battery runs out) (as indicated in blocks 20, 21 and 22). In its practice, the instant invention assumes the apparatus is designed to allow the core task has enough time and power to flush all NVRAM buffers. An interrupt from the power supply to the core task would be best approach towards ensuring this capability.
  • If all software running on the apparatus “plays well” as in the preceding paragraph, then a simple flush of the NVRAM buffers would save all logged information just before shut down. After the flush of buffers, the apparatus then powers off.
  • Additional objects and advantages of the invention are set forth, in part, in the description which follows and, in part, will be apparent to one of ordinary skill in the art from the description and/or from the practice of the invention.
  • These together with other objects of the invention, along with the various features of novelty which characterize the invention, are pointed out with particularity in the claims annexed to and forming a part of this disclosure. For a better understanding of the invention, its operating advantages and the specific objects attained by its users, reference would be had to the accompanying drawings, depictions and descriptive matter in which there is illustrated preferred embodiments and results of the invention.
  • BRIEF SUMMARY OF THE DRAWINGS
  • FIG. 1 is a logic flow illustration of the invention's practice with respect to a general purpose personal computing apparatus.
  • FIG. 2 is a logic flow illustration of an embodiment of the instant invention further illustrating user interface sequencing with respect to the invention's methodology.
  • FIG. 3 is a logic flow illustration of the instant invention wherein the computing apparatus practiced is a personal digital assistant.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
  • It is understood that both the foregoing general description and the following detailed description are exemplary and explanatory only, and are not restrictive of the invention as claimed. The accompanying drawings, which are incorporated herein by reference, and which constitute a part of this specification, illustrate certain embodiments of the invention and, together with the detailed description, serve to explain the principles of the present invention.
  • In this respect, before explaining at least one embodiment to the invention in detail, it is to be understood that the invention is not limited in this application to the details of construction and to the arrangement so the components set forth in the following description or illustrated in the drawings.
  • The invention is capable of other embodiments an of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting. As such, those skilled in the art will appreciate that the conception, upon which this disclosure is based, may readily be utilized as a basis for the designing of other structures, methods and systems for carrying out the several purposes of the present invention. It is important, therefore that the claims be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the present invention.
  • Further, the purpose of the foregoing abstract is to enable the U.S. Patent and Trademark Office and the public generally, and especially the design engineers and practitioners in the art who are not familiar with patent or legal terms or phraseology, to determine quickly from a cursory inspection the nature and essence of the technical disclosure of the application. The abstract is neither intended to define the invention of the application, which is measured by the claims, nor is it intended to be limiting as to scope of the invention in any way.
  • The apparatus and the method of the instant invention rely upon processing steps which first requires the loading and initiation of a BIOS (Built In Operation System) initialization routine.
  • The instant invention next limitedly validates that portion of RAM (as indicated in block 3) to be used accommodate the selective BIOS “load” initialization routine to ensure it is free of addressing or error exceptions. To the extent that portion necessary to accommodate the initialization routine, and only that portion necessary in order to accommodate the initialization routine, is checked for validated addressability thus saving the necessity of validating all RAM accessible to the device.
  • Should an error be found in the RAM thus verified, the instant invention practice is to patch around such invalid addresses and allow the loading of the device to proceed (as indicated in block 7). Consequently, the portion of the operating system to be loaded into RAM would be comprised of a core task manager (CTM) and memory task manager (MTM) with the function of the CTM to manage and prioritize tasks (operating systems tasks and program system calls, etc.) and the function of the MTM to manage memory, ram, virtual memory, vm paging, etc. The MTM tracks RAM usage and, if required, facilitates paging in and out of virtual memory (as indicated in block 9). The MTM also tracks which tasks (driver system) are no longer active and determines if additional RAM is required, such RAM can be reused (as indicated in block 9). Should a system routine be resident in memory (but not active) it can be immediately reactivated and used without requiring the instructions to be reloaded into memory from non-volatile RAM.
  • For purposes of full and enabling disclosure, processing steps which facilitate the loading and initiation of a bios initialization routine for the instant invention are immediately provided in commentary and pseudocode format.
  • Start (as indicated in block 1)
    /*SizeOfCTMMTM is the total size of the RAM needed to load CTM and MTM driver.
    25989 bytes is just an example number for size of CTM and MTM, and SizeOfMemory is
    just an example size of 256 Mb RAM (Total System Memory).*/
    SizeOfCTMMTM=25989
    SizeOfMemory=256000000
    Base= 0
    Mem= 0
    /*Verify the memory needed for the CTM and MTM*/ (as indicated in block 3)
    WHILE (Mem − Base) <SizeOfCTMMTM and Mem <SizeofMemory DO
    Verify memory location Mem does not have errors
    IF location Mem has errors Base = Mem +1
    Mem=Mem+1
    ENDWHILE
    IF Base=SizeOfMemory them display memory error message and halt. No room to load tasks
    /* Load the CTM and MTM and execute. CTM and MTM have the highest priority of all
    tasks, level 0. */
    Load CTM and MTM tasks into RAM locations Base thru Mem and start execution of CTM
    and MTM at priority 0
    /* Keep track of how many tasks there are. CTM and MTM are required and do not count as
    tasks. All tasks except CTM and MTM should be eligible to be swapped out of memory.
    RCT does count as a task. */
    Tasks=0
    /* Set up start of memory for RCT*/
    RCTMem=Mem +1
  • Following initiation of the initialization routine for a personal computer, the operating system of the instant invention, first interrogates an audit reference to identify those minimally essential operating system and application program (as indicated in block 8, FIG. 1) startup processing components necessary to effectuate user communication with the apparatus. These device dependent audit references are contained within a data reference accessible to the device and most easily comprehended as checkpoint records wherein the operating system and application program prosecution status is recorded for later reference. Having once interrogated the audit reference, the instant invention next selectively retrieves the identified startup program components and thereby bypasses at least a portion of BIOS instruction set normally required for establishing interactive communication between a user and the apparatus. That is, the instant invention identifies those portions of the BIOS initialization to be loaded to RAM to effectuate such communication and then bypasses other “standard” portions of BIOS processing which are necessary to effectuate almost instantaneous user communication.
  • The instant invention next determines an apparatus specific highest priority task and initiates execution of the task (as indicated in block 12). Such tasks are obviously determined by the function of the device with the tasks and the respective priorities stored a non-volatile memory as a task list (TL) or as a table in the CTM and ROM. The CTM then passes the name and size of the application to the MTM and loads the task into memory and passes the task back to the CTM for execution. As an example, the first task on a personal computer is the loading of the driver for hard drive for the additional driver application can be loaded. While the first task of any personal device (MP3 player, PDA, etc.) is to display and the first task of a router would be to determine whether there was a valid boot entry on its non-volatile RAM, a flash card or hard drive (as indicated in block 18, FIG. 3). The instant invention next highest determines what is the next execution priority task in the task list, and executes that task and continues to execute each subsequent “next priority task” until the task load is completed (as indicated in block 30). Once all such tasks are loaded dispatching control of the operating system is turned to all system and application components necessary to effectuate normal operation. During this normal or standard operation, the MTM initiates all tasks and tracks the task memory requirements (as indicated in blocks 36 and 39). Each task is individually responsible for managing its own temporary files and logging all modifications to those files as such modifications were made. When the files are saved, the original file plus the logged or audit changes are kept in a file. The original file is kept until creation is completed. Then and only then is the old file deleted from the non-volatile RAM device.
  • As a natural extension of this embodiment, applications should load with the minimal amount of software to allow the main page and menu to be displayed. Plugins and other “extraneous” subroutines should not load until the operator requests that function/subroutine.
  • For purposes of full and enabling disclosure, commentary and illustrative pseudocode is immediately provided which further illustrates and discloses the invention processing component execution sequencing.
  • Core Task Manager (a.k.a. “CTM”) Main Execution (as indicated in block 27)
    Pass NVRAM task to MTM to allocate memory/ load NVRAM task
    Tasks = Tasks +1
    (as indicated in block 25)/* The MTM Task Table is an array holds an array of data that
    pertains to each task. Items this table contains about each task are, for example, the task
    memory location, priority, passed parameters, whether that task is executing or just loaded, a
    list of tasks that call that task */ MTM Task Table [Task] = NVRAM Task information /*
    NVRAM task, MTM, RCT and the NVRAM table (see below) are most likely “critical”
    components of operation. If the MTM returns a memory allocation error then the system
    should display a “out of memory/bad memory” error and halt. */ IF MTM returns “No
    Memory Available” error, then display error message and halt /* The priority of the NVRAM
    task is dependent on each device. In the example of a personal computer the NVRAM task
    should have a lower priority than the Display, keyboard or mouse task. */ Start execution of
    NVRAM task at priority X (as indicated in block 30) Pass RCT task to MTM to allocate
    memory / load RCT task Tasks = Tasks + 1 MTM Task Table [Tasks] = RCT Task
    information IF MTM returns “No Memory Available” error, then display error message and
    halt (as indicated in block 36) RCT task is lowest priority (priority Y) on the CTM task list.
    RCT is to run only when there are free CPU cycles or at a high priority if MTM needs more
    memory to load a task. */ Start execution of RCT task at priority Y /* The NVRAM table has
    a list of “high priority” tasks (and their associated priority) that need to be read from BIOS
    into main memory, a list of the BIOS tasks that have updated code that resides on NVRAM
    (again with a priority) an the History data. The “History data” is device dependent (see
    below). Note: A default table can reside in BIOS for initial device operation or if the
    NVRAM table is destroyed. */ Read NVRAM table of BIOS tasks, Updated BIOS tasks and
    history from NVRAM /* Entries in the NVRAM table should include task location, size,
    priority “Z” */ WHILE entries in BIOS / NVRAM task list DO Pass task to MTM to allocate
    memory / load task Tasks = Tasks + 1 MTM Task Table [Tasks] = BIOS / NVRAM Task IF
    MTM returns “No Memory Available” error, then display error message and halt Start
    execution of task at priority Z (as indicated in block 30) /* Continue execution of tasks in the
    MTM task table. */ CALL Execute Tasks ENDWHILE /* The entries in the History table
    include a priority level and a “load/run” bit. The load/run bit tells whether the task is
    preloaded into RAM, but not executed until the device requests them (e.g. task for what to do
    when the user presses a particular button of the front panel or the application the user
    “usually” double clicks on first) or tasks that are not the absolute highest priority but still
    need to be loaded and run at device startup (e.g. tasks for interface operation on a router or on
    a server the applications that run on the server at initialization). The “load” tasks are
    “historically” the first tasks that the system executes after it is fully operational. The “Load
    and Run” tasks are configured by the operator of the device. */ WHILE entries in history
    table Run bit set DO Pass task to MTM to allocate memory/load task Tasks = Tasks + 1
    MTM Task Table [Tasks] = Task Start execution of task at priority indicated in History table
    /* Continue execution of tasks in the MTM task table. */ CALL Execute Tasks ENDWHILE
    (as indicated in block 23) /* If the invention receive operator input while the invention are
    loading tasks, stop loading tasks and execute operator requested task */ WHILE entries in
    history table Load bit set AND no operator input DO Pass task to MTM to allocate
    memory/load task Tasks = Tasks + 1 MTM Task Table [Tasks] = Optional Task CALL
    Execute Tasks ENDWHILE (as indicated in block 20, 21, 23 and 33) /* CTM Main loop.
    The Shutdown flag is set to 1 upon interrupt from the user (graceful shutdown) or upon
    receipt of a power loss interrupt from the power supply (immediate shutdown). Upon receipt
    of either flag the CTM should IMMEDIATELY branch to the shutdown routine. */
    Shutdown = 0 WHILE Shutdown Flag not set DO CALL Execute Tasks ENDWHILE CALL
    Shutdown MEMORY TASK MANAGER (a.k.a. “MTM”) SUBROUTINE /* The MTM
    tracks RAM usage and (if required/if available) does paging in/out of Virtual Memory (VM).
    The CTM or MTM protects the tasks from other tasks overwriting them (segmentation
    violations) and should discourage self modifying programs via not allowing “data” to be
    executed (helps prevent possible viral attacks/buffer overflow attacks). Memory protection
    would be via memory protection hardware or strong memory protection AKAUNIXOS. The
    MTM tracks which tasks (drivers, system calls, applications) are active and which are no
    longer active so that if RAM is required then that RAM can be reused. Memory is not
    changed until something is loaded into that address space. If a system routine is already in
    memory (albeit not active at the moment) then it can be immediately reactivated and used
    without requiring the instructions/data be reloaded into memory from NVRAM (a waste of
    load time and presumably NVRAM is a slower access device than RAM). */ /* MTM Called
    to add task if DontNeedTask = 0 */ (as indicated in block 34) IF DontNeedTask = 0 THEN
    DO /* The history table needs to be updated on a device by device basis. In the case of a
    personal computer the MTM should track the first “X” tasks the user requests and combine
    that information in the history table with respect to the previous information to give a
    cumulative history of the user's actions at startup. In the case of a router the router should
    keep a history of the highest traffic interfaces and write that information to NVRAM on a
    periodic basis. This gives the router an idea next time it starts up which interfaces should
    have the highest priority task initialization/ execution. In the case of an MP3 player the MP3
    player should track which button is historically pusher first and load that task first. */
    SizeOfMemory = Size of task to be loaded IF (Memory available) < SizeOfMemory then DO
    /* Try to complete checking more RAM to load task */ WHILE RCTComplete = 0 and
    (Memory available) < SizeOfMemory DO Execute RCT Task ENDWHILE /* Check and see
    if there is enough memory now. If not then free up memory from tasks that are not required.
    Worst case page out to Virtual Memory (if available) */ IF (Memory available) <
    SizeOfMemory then DO MTMTask = 1 WHILE ((Memory available)<SizeOfMemory) and
    MTMTask<Tasks DO /* If there is a task in memory that is not called by anything then that
    task is eligible to be freed. Add that task to the memory available list */ IF
    MTMTaskTable[MTMTask, AvailableForRAM] = 0 then DO
    add that RAM to Memory Available
    Clear MTMTaskTable[MTMTask]
    Tasks = Tasks− 1
    ENDIF
    MTMTask = MTMTask + 1
    ENDWHILE
    /* If the invention still don't have memory then try Virtual Memory or error out */
    IF VirtualMemory is available DO
    Swap task(s) to VirtualMemory until ((Memory available)>SizeOfMemory
    ELSE DO
    Display error Message out of memory
    CALL Shutdown
    ENDIF
    ENDIF
    ENDIF
    Load Task into RAM
    Task = Task + 1
    MTMTaskTable[Tasks] = Task (as indicated in block 39)
    /* Load Task is set to 1 to just load task, set to 0 if task is to be loaded and run after it is
    loaded */
    MTMTaskTable[Tasks, Load Task] = Load Task
    /* Otherwise it is a Delete Task call */
    ELSE DO
    MTMTaskTable[MTMTask, AvailableForRAM] = 0
    MTMTask = 1 /* If the task is not required any more, go thru the list of tasks and remove
    that task from the called subtask list also. If the subtask is needed in the future it can be
    added/reloaded at a later time */
    WHILE MTMTask< Task DO
    IF MTMTaskTable[Looptasks] is in the MTMTaskTable[MTMTask] list then remove
    MTMTAskTable[Looptasks] from that list
    MTMTaskTable = MTMTask + 1
    ENDWHILE
    ENDIF
    /* Set all the flags back to 0 (Not Set) */
    Load Task = 0
    DontNeedTask = 0
    ENDSUBROUTINE
    RCT SUBROUTINE
    RCTComplete = 0
    While RCTMem < SizeOfMemory DO
    Verify RCTMem is free of errors
    /* Since most memory errors occur in “Blocks” the MEMBad table will most likely consist
    of list of blocks of bad memory cells rather than individual cells that are bad. If any memory
    cells are found to be bad then that should somehow be reported to the user of the device. */
    IF RCTMem is not free of errors, add that memory location to the MEMBad table
    RCTMem = RCTMem + 1
    ENDWHILE
    RCTComplete = 1
    ENDSUBROUTINE
    SUBROUTINE Execute Tasks
    /* The Execute Tasks subroutine should follow the paradigm of the UNIX operating system
    with respect to tasks. Specifically the Execute Tasks should perform process scheduling for
    time-shared operations. No task should “lock up” the machine. Rogue tasks, if detected,
    should be terminated without prejudice. */ Looptasks = 0 /* The idle loop goes thru the tasks
    and gives them CPU time. While a plethora of queuing algorithms can be used (and the
    Execute Tasks would be modified accordingly) this loop will use a simple equation of
    Execution time = (CPUTime/ (Priority + 1)) scheme where CPUTime is “X” instructions.
    This allows all tasks some access to the CPU and does not starve out any task. Standard OS
    contention / semaphore algorithms apply to preclude deadlocking processes. */ CPUTime =
    10000 WHILE Looptasks <= Tasks do /* Allow task to operate AT MOST (CPU Time /
    (Priority + 1)) instructions. If the task does not need that many cycles (i.e. it is idle) then the
    task should set a flag indicating such and immediately return */ Allow task
    MTMTaskTable[Looptasks] to operate (CPUTime / (Priority +1)) instructions /* If the just
    executed task requires subtasks to run then it set a flag, returns the task name it needs to
    MTM and ends. That task will now be brought into memory and all the passed parameters
    passed to that subtask */ IF NeedTask flag for task MTMTaskTable[Looptasks] is set DO IF
    Task Requested is in MTMTaskTable, Pass task name to MTM to pass parameters and
    update MTM table with calling task, set LoadTask flag ELSE Pass task to MTM to allocate
    memory / load task and passed parameters, set AddTask flag ENDIF /* Likewise if a task is
    releasing a subtask or the task is terminating then the invention can release any subtasks to
    that task */ IF DontNeedTask flag for task MTMTaskTable[Looptasks] is set or Terminate
    flag is set DO IF DontNeedTask flag is set, Pass task and subtask name to MTM and set
    DontNeedTask flag If task is terminating then pass task name to MTM and set Terminate
    flag ENDIF ENDWHILE ENDSUBROUTINE (as indicated in blocks 20, 21 and 22)
    SUBROUTINE Shutdown /* There should be sufficient power in the power supply so that
    after the CTM is notified of power loss a final write of all buffers on the non-volatile
    memory can be accomplished (if required) by the CTM. At that time the device can be shut
    down. The fast shutdown of the device requires that all tasks appends a “log” file (changes to
    that file) to the NVRAM file as changes are made to that file. When a file is “saved” the new
    file consists of the original file plus the “logged” changes to that file. When the new file is
    completely written then the old file can be deleted. This process allows the system to just
    flush all the buffers an not require a graceful shutdown of all tasks. */ Flush NVRAM
    Buffers to NVRAM device (if required) Shut down the device ENDSUBROUTINE
  • Complimenting the abstract, summary and detailed description as provided herein, flowcharts of logic flow sequencing associated with FIGS. 1 through 3 are immediately provided for purposes of full and enabling disclosure while illustrative logic step sequencing is denoted no such restriction is herein intended, rather the invention is capable of being practiced in a number of contexts as indicated in its versatility with respect to varying type computer apparatuses. Consequently logic flow sequencing may be altered in association therewith as will be readily apparent to those skilled in the art.
  • While this invention has been described to illustrative embodiments, this description is not to be construed in a limiting sense. Various modifications and combinations of the illustrative embodiments as well as other embodiments will be apparent to those skilled in the art upon referencing this disclosure. It is therefore intended that this disclosure encompass any such modifications or embodiments.

Claims (15)

1. A method for initializing start up of a computer apparatus, the method comprising:
loading and executing a first portion of an initialization routine from a non-volatile memory to a first portion of a volatile memory;
identifying a first one of a plurality of operating systems and application programs to initially run on the computer apparatus, the identifying based upon interrogation of a device dependent audit reference that has appended thereto a most recent first occurrence of one of the application programs that is minimally essential to the computer apparatus;
loading the identified first one of the plurality of operating systems and application programs into a second portion of the volatile memory at startup if the computer apparatus is idle and a user has not requested an application program to start; and
executing the loaded first one of the plurality of operating systems and application programs,
wherein the loading and the executing of the first one of the plurality of operating systems and application programs is performed prior to executing a second portion of the initialization routine, and
wherein subsequent to initializing start up of a computer apparatus, recording in the audit reference the first application program the user requests.
2. The method of claim 1, wherein the first portion of the initialization routine is associated with establishing interactive communications between a user and the computer apparatus.
3. The method of claim 1, wherein identifying the first one of the plurality of operating systems and application programs comprises:
interrogating an audit reference to identify the first one of the plurality of operating systems and application programs, wherein the plurality of operating systems and application programs initially run on the computer apparatus.
4. The method of claim 3, wherein the audit reference specifies a relative priority of the plurality of operating systems and application programs.
5. The method of claim 4, further comprising:
loading and executing the plurality of identified operating systems and application programs in an order based upon the relative priority specified in the audit reference.
6. The method of claim 1, further comprising:
identifying minimally essential operating systems and application programs from the plurality of operating systems and application programs based upon the interrogation of the audit reference.
7. The method of claim 1, further comprising:
bypassing at least a portion of instructions of the initialization routine, wherein the portion of bypassed initialization routine instructions includes at least one routine that establishes interactive communication between a user and the computer apparatus.
8. The method of claim 7, wherein after the plurality of operating systems and application programs are executed, further comprising:
executing the bypassed initialization routine instructions.
9. The method of claim 1, further comprising:
error checking the first portion of the volatile memory prior to loading the initialization routine from the non-volatile memory to the first portion of the volatile memory.
10. The method of claim 1, wherein the volatile memory is random access memory (RAM).
11. The method of claim 1, wherein the initialization routine is a built in operation system (BIOS) initialization routine.
12. A method for loading software elements of a computer apparatus comprising:
initiating a initialization routine residing in a non-volatile memory;
validating a portion of a volatile memory sufficient to load at least the initialization routine;
loading the initialization routine from the non-volatile memory to the volatile memory portion;
identifying a plurality of programs to initially run on the computer apparatus; and
executing the plurality of programs in a prioritized order at startup if the computer apparatus is idle and a user has not requested an application program to start,
wherein the prioritized order is based upon interrogation of a device dependent audit reference that has appended thereto a most recent first occurrence of one of the plurality of operating systems and application programs that is minimally essential to the computer apparatus, and
wherein subsequent to initializing the computer apparatus, a first application program the user requests is recorded in the audit reference.
13. The method of claim 12, further comprising loading the identified plurality of programs into the volatile memory in the prioritized order.
14. The method of claim 12, wherein the audit file is a history table with the priority order of the plurality of programs, and further comprising:
accessing the history table for the prioritized order of the plurality of programs.
15. The method of claim 12, wherein the initialization routine is a built in operation system (BIOS) initialization routine.
US13/073,686 2002-06-27 2011-03-28 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing Abandoned US20110173429A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/073,686 US20110173429A1 (en) 2002-06-27 2011-03-28 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US18370902A 2002-06-27 2002-06-27
US10/342,020 US7299346B1 (en) 2002-06-27 2003-01-14 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
US12/614,184 USRE42936E1 (en) 2002-06-27 2009-11-06 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
US13/073,686 US20110173429A1 (en) 2002-06-27 2011-03-28 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/614,184 Continuation USRE42936E1 (en) 2002-06-27 2009-11-06 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Publications (1)

Publication Number Publication Date
US20110173429A1 true US20110173429A1 (en) 2011-07-14

Family

ID=38691065

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/342,020 Ceased US7299346B1 (en) 2002-06-27 2003-01-14 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
US12/614,184 Expired - Lifetime USRE42936E1 (en) 2002-06-27 2009-11-06 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
US13/073,686 Abandoned US20110173429A1 (en) 2002-06-27 2011-03-28 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10/342,020 Ceased US7299346B1 (en) 2002-06-27 2003-01-14 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
US12/614,184 Expired - Lifetime USRE42936E1 (en) 2002-06-27 2009-11-06 Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Country Status (1)

Country Link
US (3) US7299346B1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070185933A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Predictive data object retrieval
US20100180015A1 (en) * 2009-01-15 2010-07-15 Microsoft Corporation Performing configuration in a multimachine environment
WO2013028203A1 (en) * 2011-08-25 2013-02-28 Intel Corporation Determining, at least in part, one or more respective amounts of buffer memory field
US9110677B2 (en) 2013-03-14 2015-08-18 Sandisk Technologies Inc. System and method for predicting and improving boot-up sequence
CN105278370A (en) * 2015-09-30 2016-01-27 小米科技有限责任公司 Power-saving mode starting method and device
US20160337458A1 (en) * 2010-08-16 2016-11-17 International Business Machines Corporation Locating service endpoints from a service registry
CN109194521A (en) * 2018-09-29 2019-01-11 新华三技术有限公司 A kind of flow forwarding method and equipment

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299346B1 (en) * 2002-06-27 2007-11-20 William K. Hollis Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
US7607000B1 (en) * 2003-05-13 2009-10-20 Apple Inc. Method for booting an operating system
US7937198B2 (en) * 2004-12-29 2011-05-03 Snap-On Incorporated Vehicle or engine diagnostic systems supporting fast boot and reprogramming
US7590839B2 (en) * 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US7523323B2 (en) * 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7500091B2 (en) * 2005-11-30 2009-03-03 Microsoft Corporation Delay start-up of applications
US20070234029A1 (en) * 2006-03-28 2007-10-04 Rothman Michael A Methods and apparatus for context sensitive component dispatch management
US20070266231A1 (en) * 2006-05-15 2007-11-15 Huey-Tyug Chua Portable Electronic Device and Method for Loading Resource Data of the Portable Electronic Device
US8055719B2 (en) * 2008-07-16 2011-11-08 International Business Machines Corporation Performance and reduce network traffic for remote hardware data scan operations
US7958398B2 (en) * 2008-07-16 2011-06-07 International Business Machines Corporation Reference state information generation
US20100292102A1 (en) * 2009-05-14 2010-11-18 Ali Nouri System and Method For Preventing Synthesis of Dangerous Biological Sequences
US8538587B2 (en) * 2009-05-21 2013-09-17 Lennox Industries Inc. HVAC system with automated blower capacity dehumidification, a HVAC controller therefor and a method of operation thereof
CN102135910B (en) * 2011-03-03 2014-05-14 威盛电子股份有限公司 Method for switching operating systems and electronic device using same
TWI464583B (en) * 2012-03-02 2014-12-11 Wistron Corp Method of obtaining command for triggering function
CN104346194B (en) * 2014-04-18 2017-12-01 腾讯科技(深圳)有限公司 A kind of startup file loading method, device and electronic equipment
US9959187B2 (en) * 2014-04-25 2018-05-01 Lenovo (Singapore) Pte. Ltd. Decoalescing resource utilization at boot
US10216498B2 (en) * 2016-05-13 2019-02-26 Tibco Software Inc. Custom-built process engine with minimal memory and disk resource consumption
US11176009B2 (en) 2018-10-16 2021-11-16 International Business Machines Corporation Implementing power up detection in power down cycle to dynamically identify failed system component resulting in loss of resources preventing IPL
US11507383B2 (en) * 2020-03-10 2022-11-22 Dell Products L.P. Configurable boot paths

Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168555A (en) * 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5269022A (en) * 1990-03-28 1993-12-07 Kabushiki Kaisha Toshiba Method and apparatus for booting a computer system by restoring the main memory from a backup memory
US5410699A (en) * 1989-08-25 1995-04-25 International Business Machines Corp. Apparatus and method for loading BIOS from a diskette in a personal computer system
US5710930A (en) * 1995-08-04 1998-01-20 Intel Corporation Apparatus and a method for allowing an operating system of a computer system to persist across a power off and on cycle
US5748957A (en) * 1995-06-27 1998-05-05 Klein; Dean A. Computer system usage determination based on hard disk drive activity
US5884211A (en) * 1997-01-23 1999-03-16 Ford Global Technologies, Inc. System and method for memory reset of a vehicle controller
US5935228A (en) * 1996-04-26 1999-08-10 International Business Machines Corporation Method for automatically enabling peripheral devices and a storage medium for storing automatic enable program for peripheral devices
US5968173A (en) * 1996-10-01 1999-10-19 Texas Instruments Incorporated Method and system for maximizing the apparent initial processing capability of a computer
US6061788A (en) * 1997-10-02 2000-05-09 Siemens Information And Communication Networks, Inc. System and method for intelligent and reliable booting
US6073232A (en) * 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US6098158A (en) * 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
US6122677A (en) * 1998-03-20 2000-09-19 Micron Technology, Inc. Method of shortening boot uptime in a computer system
US6148322A (en) * 1993-11-26 2000-11-14 Siemens Aktiengesellschaft Processing unit with an improved ability to coordinate the execution of multiple tasks with varying priorities
US6202091B1 (en) * 1997-12-08 2001-03-13 Nortel Networks Limited Process and apparatus for initializing a computer from power up
US6212632B1 (en) * 1998-07-31 2001-04-03 Flashpoint Technology, Inc. Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6367074B1 (en) * 1998-12-28 2002-04-02 Intel Corporation Operation of a system
US20020199093A1 (en) * 2001-06-26 2002-12-26 Poisner David I. Method and system for using internal FIFO RAM to improve system boot times
US20030070066A1 (en) * 2001-07-28 2003-04-10 Cross Edward A. System for detection and routing of platform events in a multi-cell computer
US6553432B1 (en) * 1999-10-26 2003-04-22 Dell Usa, L.P. Method and system for selecting IDE devices
US6567912B1 (en) * 2000-03-31 2003-05-20 Motorola, Inc. Method and apparatus for robust initialization of devices
US20030135729A1 (en) * 2001-12-14 2003-07-17 I/O Integrity, Inc. Apparatus and meta data caching method for optimizing server startup performance
US6631469B1 (en) * 2000-07-17 2003-10-07 Intel Corporation Method and apparatus for periodic low power data exchange
US6883091B2 (en) * 2001-05-30 2005-04-19 Hewlett-Packard Development Company, L.P. Reducing boot times via intrusion monitoring
US6973447B1 (en) * 2000-03-23 2005-12-06 International Business Machines Corporation System apparatus and method for supporting multiple partitions including multiple systems in boot code
US7299346B1 (en) * 2002-06-27 2007-11-20 William K. Hollis Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Patent Citations (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410699A (en) * 1989-08-25 1995-04-25 International Business Machines Corp. Apparatus and method for loading BIOS from a diskette in a personal computer system
US5168555A (en) * 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5269022A (en) * 1990-03-28 1993-12-07 Kabushiki Kaisha Toshiba Method and apparatus for booting a computer system by restoring the main memory from a backup memory
US6148322A (en) * 1993-11-26 2000-11-14 Siemens Aktiengesellschaft Processing unit with an improved ability to coordinate the execution of multiple tasks with varying priorities
US5748957A (en) * 1995-06-27 1998-05-05 Klein; Dean A. Computer system usage determination based on hard disk drive activity
US5951700A (en) * 1995-06-27 1999-09-14 Micron Electronics, Inc. Methods of computer system usage determination based on hard disk drive activity
US5710930A (en) * 1995-08-04 1998-01-20 Intel Corporation Apparatus and a method for allowing an operating system of a computer system to persist across a power off and on cycle
US5935228A (en) * 1996-04-26 1999-08-10 International Business Machines Corporation Method for automatically enabling peripheral devices and a storage medium for storing automatic enable program for peripheral devices
US5968173A (en) * 1996-10-01 1999-10-19 Texas Instruments Incorporated Method and system for maximizing the apparent initial processing capability of a computer
US5884211A (en) * 1997-01-23 1999-03-16 Ford Global Technologies, Inc. System and method for memory reset of a vehicle controller
US6073232A (en) * 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US6061788A (en) * 1997-10-02 2000-05-09 Siemens Information And Communication Networks, Inc. System and method for intelligent and reliable booting
US6202091B1 (en) * 1997-12-08 2001-03-13 Nortel Networks Limited Process and apparatus for initializing a computer from power up
US6098158A (en) * 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
US6122677A (en) * 1998-03-20 2000-09-19 Micron Technology, Inc. Method of shortening boot uptime in a computer system
US6212632B1 (en) * 1998-07-31 2001-04-03 Flashpoint Technology, Inc. Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system
US6367074B1 (en) * 1998-12-28 2002-04-02 Intel Corporation Operation of a system
US6553432B1 (en) * 1999-10-26 2003-04-22 Dell Usa, L.P. Method and system for selecting IDE devices
US20010052038A1 (en) * 2000-02-03 2001-12-13 Realtime Data, Llc Data storewidth accelerator
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6973447B1 (en) * 2000-03-23 2005-12-06 International Business Machines Corporation System apparatus and method for supporting multiple partitions including multiple systems in boot code
US6567912B1 (en) * 2000-03-31 2003-05-20 Motorola, Inc. Method and apparatus for robust initialization of devices
US6631469B1 (en) * 2000-07-17 2003-10-07 Intel Corporation Method and apparatus for periodic low power data exchange
US6883091B2 (en) * 2001-05-30 2005-04-19 Hewlett-Packard Development Company, L.P. Reducing boot times via intrusion monitoring
US20020199093A1 (en) * 2001-06-26 2002-12-26 Poisner David I. Method and system for using internal FIFO RAM to improve system boot times
US20030070066A1 (en) * 2001-07-28 2003-04-10 Cross Edward A. System for detection and routing of platform events in a multi-cell computer
US20030135729A1 (en) * 2001-12-14 2003-07-17 I/O Integrity, Inc. Apparatus and meta data caching method for optimizing server startup performance
US7299346B1 (en) * 2002-06-27 2007-11-20 William K. Hollis Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
USRE42936E1 (en) * 2002-06-27 2011-11-15 Hollis William K Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838620B2 (en) * 2006-02-03 2014-09-16 International Business Machines Corporation Predictive data object retrieval
US20070185933A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Predictive data object retrieval
US20100180015A1 (en) * 2009-01-15 2010-07-15 Microsoft Corporation Performing configuration in a multimachine environment
US8271623B2 (en) * 2009-01-15 2012-09-18 Microsoft Corporation Performing configuration in a multimachine environment
US20160337458A1 (en) * 2010-08-16 2016-11-17 International Business Machines Corporation Locating service endpoints from a service registry
US11153204B2 (en) * 2010-08-16 2021-10-19 International Business Machines Corporation Locating service endpoints from a service registry
US10708177B2 (en) * 2010-08-16 2020-07-07 International Business Machines Corporation Locating service endpoints from a service registry
US10700963B2 (en) 2010-08-16 2020-06-30 International Business Machines Corporation Locating service endpoints from a service registry
US9542356B2 (en) 2011-08-25 2017-01-10 Intel Corporation Determining, at least in part, one or more respective amounts of buffer memory
CN103765398A (en) * 2011-08-25 2014-04-30 英特尔公司 Determining, at least in part, one or more respective amounts of buffer memory field
WO2013028203A1 (en) * 2011-08-25 2013-02-28 Intel Corporation Determining, at least in part, one or more respective amounts of buffer memory field
US9110677B2 (en) 2013-03-14 2015-08-18 Sandisk Technologies Inc. System and method for predicting and improving boot-up sequence
CN105278370A (en) * 2015-09-30 2016-01-27 小米科技有限责任公司 Power-saving mode starting method and device
CN109194521A (en) * 2018-09-29 2019-01-11 新华三技术有限公司 A kind of flow forwarding method and equipment

Also Published As

Publication number Publication date
USRE42936E1 (en) 2011-11-15
US7299346B1 (en) 2007-11-20

Similar Documents

Publication Publication Date Title
USRE42936E1 (en) Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing
EP3491519B1 (en) Optimized uefi reboot process
US6173417B1 (en) Initializing and restarting operating systems
US7827371B2 (en) Method for isolating third party pre-boot firmware from trusted pre-boot firmware
US6209088B1 (en) Computer hibernation implemented by a computer operating system
JP3593241B2 (en) How to restart the computer
EP1854006B1 (en) Method and system for preserving dump data upon a crash of the operating system
US6098158A (en) Software-enabled fast boot
US7941624B2 (en) Parallel memory migration
EP2189901A1 (en) Method and system to enable fast platform restart
US20090037722A1 (en) Integration Model for Instant-On Environment
US20080209198A1 (en) Boot Acceleration For Computer Systems
US7962736B1 (en) Interactive pre-OS firmware update with repeated disabling of interrupts
US7069445B2 (en) System and method for migration of a version of a bootable program
US20060036832A1 (en) Virtual computer system and firmware updating method in virtual computer system
US9471231B2 (en) Systems and methods for dynamic memory allocation of fault resistant memory (FRM)
US9235426B2 (en) Multicore processor system, computer product, and notification method for updating operating system
EP4258117A1 (en) Rapid start-up method
JPH07311749A (en) Multiprocessor system and kernel substituting method
JP2002132741A (en) Processor adding method, computer and recording medium
US20040122834A1 (en) Apparatus and method for switching mode in a computer system
JP2011060225A (en) Operating system booting method
US7577814B1 (en) Firmware memory management
US8745364B2 (en) Method and apparatus for enabling non-volatile content filtering
JPH11175397A (en) Information processor

Legal Events

Date Code Title Description
AS Assignment

Owner name: III HOLDINGS 1, LLC, DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HOLLIS, WILLIAM K.;REEL/FRAME:032609/0243

Effective date: 20131231

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION