Abstract:
Upon a computer system crash, the operating system writes data such as stored in an in-core disk to an external nonvolatile disk drive. During a reboot of the system, volatile memory is cleared; and the location of the stored user data in the nonvolatile disk drive is determined. The location of the in-core disk in the nonvolatile disk drive is identified and the in-core disk&#39;s data is written back to memory, thereby preventing the loss of the user data due to a system crash.

Description:
Technical Field 
     This invention relates to digital computer systems in which part of its random access memory (RAM) is partitioned to function as an in-core disk and more specifically, relates to the recovery of user data stored in the in-core disk, in the event of a system crash. As used herein &#34;core&#34; memory refers to volatile RAM of all types. 
     BACKGROUND OF THE INVENTION 
     Computer applications having frequent read/write operations, such as a database application involving a substantial number of records, can achieve improved time performance by utilizing an in-core disk for temporary data storage instead of a floppy disk or hard disk. The read/write operations between the application program and the in-core disk are very rapid compared to storage on an external storage device. Thus, it is desirable to allocate part of the in-core memory to function as a disk. 
     A disadvantage associated with in-core disk usage is the possibility that data stored in such a disk will be lost should a system crash occur prior to the contents of the in-core disk being transferred to a nonvolatile memory, such as a conventional floppy disk. It is known that currently available word processing applications permit a user to cause the program to automatically save or update a user file at predetermined time intervals. Thus, the user is assured that only a limited amount of input or work will be lost, in the event of a loss of power or system crash. It will be apparent that this method places the burden upon each application program to provide file protection. 
     In digital computer systems, it is known to utilize the operating system to write the total contents of core memory to a disk drive upon detection of a system crash. The purpose for saving the contents of the memory in existing digital computer systems upon a crash determination, is to provide a diagnostic tool for analyzing the cause of the crash. Unless user data stored in core memory was saved shortly before the system crash, either by a manual save initiated by the user, or a periodic save under the control of the application program, the user data stored in core is lost. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to address the previously described shortcomings of protecting user data stored in in-core memory, in the event of a system crash, by providing an operating system function which provides for recovery of this data. 
     In accordance with the present invention, a method embodying the invention prevents loss of data stored in a predetermined section of volatile memory in a computer system due to a system crash. Upon a system crash occurrence, the computer operating system writes the in-core disk data to a nonvolatile storage device (stored data). During a reboot of the computer system, the computer core memory is cleared. The location at which the stored data resides in the nonvolatile storage device is identified. The address in the in-core disk at which the stored data resided prior to the crash is determined. The stored data is written back to the same address in the in-core disk from its location in the nonvolatile storage device, thereby preventing the loss of the user data resident in the in-core disk. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a computer system that incorporates an embodiment of the present invention. 
     FIG. 2 is a diagram illustrating the core memory as shown in FIG. 1 configured for a conventional computer system. 
     FIG. 3 is a diagram of the core memory of FIG. 1 configured in accordance with an embodiment of the present invention. 
     FIG. 4 is a diagram illustrating the configuration of the in-core disk as shown in FIG. 3. 
     FIG. 5 is a flow diagram illustrating a method for setting up an in-core disk in accordance with an embodiment of the present invention. 
     FIG. 6 is a flow diagram illustrating an automatic save feature in accordance with an embodiment of the present invention. 
     FIG. 7 is a flow diagram illustrating a method in accordance with an embodiment of the present invention for recovering data stored in the in-core disk memory. 
    
    
     DETAILED DESCRIPTION 
     The present invention can be utilized with the operating systems of various digital computers. The exemplary embodiment of the present invention described herein is utilized in a UNIX® SYSTEM V operating system in an AT&amp;T 3B2 computer. The following flow diagrams describe the illustrated embodiment of the present invention in this environment. 
     In FIG. 1, an illustrative computer system includes processor 10, read-only memory (ROM) 12, core memory consisting of RAM 16, and nonvolatile storage devices including nonvolatile random access memory (NV RAM) 14, floppy disk 18 and hard disk 20. The NV RAM 14 may consist of conventional RAM with battery backup to prevent the loss of memory during a loss of commercially available AC power source. 
     FIG. 2 illustrates a conventional utilization of a core memory 22. It consists of a root portion 24, a processes portion 26 and an available memory portion 28. The root portion 24, which normally resides in the lower memory addresses, typically consists of kernel 30, core drivers 32 and application drivers 34. Each of elements 30, 32, and 34 may contain text, data, and uninitialized data known as BSS information. The structure, utilization, and functions of these elements are generally well known. The processes portion 26 represents a variety of processes or functions requiring memory utilization ranging from the more basic default system processes required for system operation to higher level processes such as user applications. The dashed line between partitions 26 and 28 indicates that the available memory 28 may expand or contract depending upon the magnitude of the processes. 
     FIG. 3 illustrates a configuration of core memory 36 in accordance with the present invention suited for use as core memory 16 as shown in FIG. 1. Like reference numerals in FIG. 3 and FIG. 2 represent common elements. The memory 36 is partitioned into a root portion 38, processes 26, available memory 28, and in-core disk 40. The root portion 38 contains like elements 30, 32, and 34 in common with FIG. 2, and further includes an in-core disk (ICD) driver 42 which defines the beginning and end address of in-core disk 40 and other conventional information enabling the memory configured as in-core disk 40 to be addressed as a device. Although the specific information contained in ICD driver 42 will vary depending upon the particular application and system, it will typically use the same structure and format as other conventional drivers, such as drivers 32 and 34. The structure, format, and use of drivers to enable communications with various devices are generally known. The size of the in-core disk portion 40 is defined by a system administrator. The amount of available memory will increase or decrease depending upon the size of the processes and the in-core disk. The in-core disk is preferably defined as a region adjacent the top of memory. The lower boundary of the in-core disk sets the maximum available memory address available to the system. In a conventional system, the maximum amount of available memory is utilized as illustrated in FIG. 2. However, with the in-core disk, a portion of what would have been available memory, is dedicated for in-core disk use. 
     FIG. 4 illustrates the in-core disk 40 in more detail. A plurality of predefined blocks of memory 44 contain status and control information utilized in reading and writing information to the remaining portion 46 of the in-core disk. Information preferably included in memory 44 is in-core disk physical description (PD) sector and ICD volume table of contents (VTOC). Such information is well known with regard to the control of conventional floppy and hard disks and serves the same function for the ICD. The memory portion 46 of the in-core disk may be partitioned into N file systems each containing a super block 48. The super block describes each associated file system and contains information such as the number of free blocks, number of blocks used, and other information relative to the specific file system. Each file system may be addressed as a conventional file as if it were on a floppy or hard disk. The structure and operation of the ICD driver 42, the elements stored in portion 44, and the super blocks 48 are known to those skilled in the art. 
     In FIG. 5, a method for initially installing an embodiment of the present invention in a UNIX SYSTEM V operating system environment is shown. The method is initiated at the beginning step 50 in which a determination is made to set up an in-core disk including a data recovery mechanism, in accordance with the present invention. In step 52 the software associated with an implementation of the data recovery method of the present invention and the ICD is loaded into the operating system stored on hard disk 20. In step 54 the system administrator sets the size of the ICD by storing a size value in the NV RAM 14 at a predetermined location. Next, in order to reconfigure the computer system to include the ICD and data recovery feature, the system is rebooted at step 56, i.e., the modified operating system is loaded from hard disk 20. In decision step 58, the system administrator makes a determination as to whether the ICD should be partitioned into more than one file system contained in memory portion 46 (see FIG. 4). A NO determination results in all of memory portion 46 containing a single file system 0. Upon a YES determination, the system administrator in step 60 defines the desired number of file systems or partitions and the size of each. This number and size information is stored in the volume table of contents in memory portion 44. Next, the system administrator will utilize the UNIX command &#34;mkfs&#34; to make the file systems, i.e., to create super blocks 48 corresponding to each file system. In order to allow user access through the UNIX directory structure, files are entered into the structure using the UNIX &#34;mount&#34; command. This permits user access through the UNIX directory structure to each file system by a corresponding name. This completes the creation and initialization of an in-core disk which can be utilized in combination with user applications to provide temporary data storage which can be quickly accessed. 
     FIG. 6 illustrates a method by which the contents of the in-core disk can be saved to the hard disk at periodic intervals, thereby permitting recovery in the event of an unintentional power loss. Step 66 is the beginning entry to the illustrated method. This method is triggered by an operating system timer (not shown) reaching a predetermined time interval such as 15 or 30 minutes. In step 68, any application programs which may be active, are temporarily interrupted by the operating system. Next, the contents of the in-core disk memory is dumped or saved, as indicated by step 70, to a hard disk or other nonvolatile memory storage device. In step 72, the system timer associated with the predetermined time interval for the automatic save feature is reset. In step 74, this method returns control to the operating system which will allow resumption of application processes. 
     FIG. 7 illustrates a method in accordance with the present invention for the recovery of in-core disk data under operating system control. To enter the method at the Begin Boot step 76, the normal processes associated with the operating system will have determined that a system crash, an unrecoverable system condition, or power loss has occurred. Typically, operating systems, including the UNIX operating system, include a number of state flags indicating the status or condition of critical processes, conditions and devices for this purpose. A determination is made in step 78 if a system crash occurred. Upon a YES determination, the content of all core memory is preferably dumped to a hard disk. The saved memory includes the in-core disk memory. At least the ICD contents and ICD structure information is saved to hard disk. A NO determination in step 78 results in a further determination in step 82 as to whether or not an unintentional power loss occurred. Upon a NO determination, this boot process exits to a conventional or routine boot 84 as is known in the art. Upon a YES determination in step 82 or upon completing the memory dump from step 80, all core memory is preferably cleared or initialized by step 86. At least the ICD memory is cleared. Next, the operating system is loaded from hard disk in step 88 and the fundamental default processes are started. Such processes relate to the basic operating system structure and operation. In step 90, the beginning and end in-core memory address of the location of the in-core disk is retrieved from the data kept in the data section of the ICD driver previously stored by the memory dump. The starting address of the ICD points to the PD sector which describes the physical layout of the ICD and contains a pointer to the VTOC. The partitioning of the ICD including the beginning and ending blocks of each partition (file system) is contained in the VTOC. In step 92 a determination is made if the ICD information stored on hard disk is consistent with a sanity check. This check may comprise a comparison of a sanity word stored with the PD sector and VTOC data relative to predefined words that identify different types of data. Upon a YES determination, the ICD data stored in the hard disk is written to the ICD disk memory 40. Step 94 is not executed if step 92 is NO, i.e., the stored information does not pass the sanity check. That is, it would not be useful to rewrite the stored ICD data, since the physical disk sector or VTOC information is incorrect and would thus not allow valid data retrieval. In step 96 the UNIX command &#34;fsck&#34; is executed to check the file systems associated with the in-core disk. This provides a further level of verification of the structural integrity of each file system. Next, the UNIX &#34;mount&#34; command is utilized to link each file system to the UNIX directory structure allowing user access. This completes the exemplary recovery method of ICD data. 
     The present invention reduces the risks associated with utilization by the user of an in-core disk. An important aspect of the invention resides in its implementation in association with the computer operating system as opposed to an application program. It will be apparent to those skilled in the art that application programs can be designed to read and write temporarily stored data to a hard disk under the control of the application. However, this provides a substantial burden upon each application program. An application implementation has the further disadvantage that operating system controls will take precedence during a system crash condition. Thus, the present invention as configured in the operating system eliminates the need for repetitive features in user application programs. Further, the present invention provides for the automatic restoration of the ICD data without requiring intervention by a person. 
     Although an exemplary embodiment of the present invention has been described herein and shown in the drawings, the scope of the invention is determined by claims which follow.