Abstract:
An operating system and protection system. The invention protects a latest base system setting of the operating system of a computing system in which the invention is performed. The invention employs a virtual device driver (VXD) that is substantially transparent to the operating system. The invention is, in certain embodiments of the invention, an on-board system that is a disaster recovery utility. Many different types of disasters can result in a hard disk crash of the computing system. Examples of such hard disk crashes include those that are caused by an error performed by a user of the computing system. Such user-induced-errors often result during reconfiguration of various portions of the computing system including configuring various peripheral devices including fax/modems, network cards, etc. The invention provides the ability for the user to accept or reject any BIOS changes that are to be made to the computing system. In addition, the invention protects against operating system crash due to missing or corrupted files. The invention is operable to recover mistakenly deleted or damaged application data from a hard disk level. The invention is operable also to protect the operating system and data of the computing system against virus penetration, in that, a base system setting of the computing system is preserved. In other embodiments of the invention, the invention is operable to provide for a security lock to the computing system and all of its associated data at the base system setting.

Description:
BACKGROUND 
     1. Technical Field 
     The present invention relates generally to computing systems; and, more particularly, it relates to protection of operating systems and application data within computing systems. 
     2. Related Art 
     Conventional programs and methods that seek to provide for disk protection and recovery of a computing system are intrinsically available to a user of the computing system. Such conventional programs and methods are installed by a user of the computing system and are easily available to the user. Sometimes, the user performs some modification of the actual conventional program or method that itself seeks to prevent catastrophic operating system failure of the computing system and to recover the operating system of the computing system after some hard disk crash. Examples of some instances where a user performs some undesirable modification of the operating system of the computing system that disables the computing system and prevents its operation. 
     Moreover, when the program or method that is used to prevent this collapse of the operating system of the computing system is easily visible or accessible to the user of the computing system, that program or method can itself be undesirably corrupted by the user. For example, when a user desires to “clean up” certain portions of the hard disk of the computing system, the user oftentimes goes through and deletes certain files within the hard disk without a great deal of caution or care. Such an instance would be a user-generated corruption to the operating system of the computing system. The inherent installation of conventional programs and methods that seek to provide for disk protection and recovery, in that they are easily available or accessible to the user of the computing system, may themselves be corrupted by the very user of the computing system whose computing system is meant to be “protected.” 
     Further limitations and disadvantages of conventional and traditional systems will become apparent to one of skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings. 
     SUMMARY OF THE INVENTION 
     Various aspects of the present invention can be found in an operating system and data protection system that is operable within a computing system. The operating system and data protection system contains, among other things, a computing system having a hard disk and an operating system. The operating system executes a number of disk access commands that are directed to the hard disk. In addition, the system and data protection system contains a virtual device driver that intercepts a disk access command that is directed to the hard disk. In accordance with the present invention, the virtual device driver (VXD) is substantially transparent to the operating system of the computing system. The virtual device driver (VXD) is incapable of being found using conventional search techniques. That is to say, the virtual device driver (VXD) is virtually hidden from any user of the computing system and is incapable of being altered by a user of the computing system. 
     In certain embodiments of the invention, the virtual device driver (VXD) of the operating system and data protection system employs a virtual file allocation table to re-direct the disk access command that is directed to the hard disk. In order to do so, the virtual device driver (VXD) is operable to perform dynamic floating point address calculation. The hard disk of the computing system is partitioned into a busy area of the hard disk and a free area of the hard disk, the busy area contains a base system setting of the computing system, From certain perspectives, the virtual device driver (VXD) of the invention safeguards a base system setting of the computing system from one of deletion, alteration, and corruption. This enables a user of the computing system to recover a previous base system setting of the computing system after some undesirable event has disabled the operation of the computing system. The virtual device driver (VXD) warns a user of the computing system of any BIOS changes to the base system setting of the computing system. The present invention is operable within any number of industry available operating systems including, but not limited to the Microsoft Windows 95 operating system and the Microsoft Windows 98 operating system. 
     Various aspects of the present invention can be found in a method that protects an operating system and data within a computing system. The method includes executing a disk access command to a busy area of a hard disk. Subsequently, the disk access command is intercepted and filtered. The intercepting and filtering of the disk access command is performed using a virtual device driver (VXD) in certain embodiments of the invention. The disk access command is re-directed to a free area of the hard disk when the disk access command is a write disk access command. If the disk access command is a read disk access command, then it is permitted to be directed to a busy area of the hard disk. The method employs floating point address calculation to perform the re-direction of the disk access command. When the method is performed within a computing system having an operating system, a virtual device driver within the computing system is substantially transparent to the operating system of the computing system. In certain embodiments of the invention, the method warns a user of a computing system on which the method is performed of any BIOS changes to a base system setting of the computing system. Similar to other embodiments of the invention as described above, the method is operable within any number of industry available operating systems including, but not limited to the Microsoft Windows 95 operating system and the Microsoft Windows 98.operating system. 
     Other aspects, advantages and novel features of the present invention will become apparent from the following detailed description of the invention when considered in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a system diagram illustrating a computing system built in accordance with the invention. 
     FIG. 2 is a system diagram illustrating one specific embodiment of the computing system of FIG. 1 that has a virtual device driver (VXD) that is operable in accordance with the invention. 
     FIG. 3 is a functional block diagram illustrating a method performed in accordance with the invention that performs operating system and data program protection within a computing system. 
     FIG. 4A is a functional block diagram illustrating a conventional method that performs disk access operations. 
     FIG. 4B is a functional block diagram illustrating a method executed in accordance with the invention that performs disk access operations using calculation and re-direction of a virtual device driver (VXD) within a computing system. 
     FIG. 5 is a functional block diagram illustrating one specific embodiment of the method illustrated within FIG. 4B that performs disk access operations using calculation and re-direction of a virtual device driver (VXD) within a computing system. 
     FIG. 6 is a system diagram illustrating an expand function performed in accordance with the invention that re-distributes space within a hard disk. 
     FIG. 7 is a system diagram illustrating a recovery function performed in accordance with the invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 is a system diagram illustrating a computing system  100  built in accordance with the invention. The computing system  100  employs a microprocessor  110  and a main memory  120  that are communicatively coupled to a processor bus  130 . The processor bus  130  is communicatively coupled to a peripheral bus  150  via a bridge circuitry  140 . The peripheral bus  150  communicatively couples to a hard disk  160 . Any number of additional peripheral devices are communicatively coupled to the peripheral bus  150  in certain embodiments of the invention. In addition, the processor bus  130 , the bridge circuitry  140 , and the peripheral bus  150  compose a bus system within the computing system  100  in various embodiments of the invention. The microprocessor  110  initiates disk access commands to access the hard disk  160 . The commands are passed through the processor bus  130 , via the bridge circuitry  140 , to the peripheral bus  150  that finally initiates the disk access commands to the hard disk  160 . In various embodiments of the invention, the present invention employs a system that intercepts the disk access commands that are to be passed to the hard disk  160 . 
     FIG. 2 is a system diagram illustrating one specific embodiment of the computing system  200  of FIG. 1 that has a vitual device driver (VXD)  220  that is operable in accordance with the invention. The computing system  200  is operable to perform a plurality of disk access commands  210  that are directed to a hard disk  240 . A virtual device driver (VXD)  220  intercepts the plurality of disk access commands  210 . The virtual device driver (VXD), in accordance with the A invention, is transparent to an operating system of the computing system  200 . That is to say, absent sophisticated techniques, a user of the computing system  200  is unable to find and modify the virtual device driver (VXD)  220  that is employed within the computing system  200 . The virtual device driver (VXD)  220  itself performs, among other things, dynamic floating point address calculation  220   a . In certain embodiments of the invention, the dynamic floating point address calculation  220   a  is used to perform calculation and re-direction of the plurality of disk access commands  210 . 
     The virtual device driver (VXD)  220  is operable, in certain embodiments of the invention, to perform additional virtual device driver (VXD) functionality  230  in addition to the interception of the plurality of disk access commands  210  that are passed to the hard disk  240 . Specific examples of the additional virtual device driver (VXD) functionality  230  include, but are not limited to, BIOS protection and change warnings  230   a , protect all operating system and applications from crash  230   b , recover system and application data from physical disk level  230   c , protection of the system/data from virus penetration  230   d , and security lock of system and application data at the physical disk level  230   e . For example, any number of BIOS protection and change warnings  230   a  are provided to a user of the computing system  200  in certain embodiments of the invention. These BIOS protection and change warnings  230   a  are provided using any number of techniques including dialogue box warnings shown on a computer screen or an audible beeping warning provided to the user of the computing system  200 . If desired, the security lock of system and application data at the physical disk level  230   e  that are provided within the additional virtual device driver (VXD) functionality  230  will either disable the computing system  200  itself or not allow any change or modification to the computing system  200  until a predetermined user of the computing system  200  enters a unique password or code that initiates the virtual device driver (VXD)  220  to enable the computing system  200  to continue operation. Other additional functionality is included within the additional virtual device driver (VXD) functionality  230  in other embodiments of the invention. 
     The virtual device driver (VXD)  220  intercepts the plurality of disk access commands  210  as they are sent to a hard disk  240 . The hard disk  240  itself contains, in accordance with the invention, a “busy” area  244  and a “free” area  246 . The virtual device driver (VXD)  220  establishes a virtual file allocation table (FAT)  242  that resides within the hard disk  240 . The virtual device driver (VXD)  220  re-directs any of the plurality of disk access commands  210  through the virtual file allocation table (FAT)  242  so that the “busy” area  244  remains unaffected and unchanged during any access of the hard disk  240 . This particular aspect of the invention provides that a user of the computing system  200  is unable to modify a base system setting of the computing system  200 . In certain embodiments of the invention, a number of base system settings of the computing system  200  are maintained without departing from the scope and spirit of the invention. In addition, the user of the computing system  200  is able to update the base system setting of the computing system  200  at various times. For example, the user is given the opportunity, in certain embodiments of the invention, to save a “new” base system setting, overriding the “old” base system setting. If desired, a number of user warnings are provided to the user of the computing system  200  before allowing the updating.of the base system setting. The computing system  200  is operable in various embodiments of the invention to ensure that a “new” base system setting that is to be updated by the user is in fact operable. That is to say, certain embodiments of the invention contain additional functionality that ensures that there is no corruption or problem with the base system setting. In this embodiment of the invention, an additional level of protection is provided to the user of the computing system  200 , in addition to the fact that the “old” base system setting of the computing system  200  remains unchanged. 
     The operation of the virtual device driver (VXD)  220 , from one perspective, is the implementation of the virtual file allocation table (FAT)  242  that itself controls the reading and writing disk access commands contained within the plurality of disk access commands  210 . For example, within the virtual file allocation table (FAT)  242 , those disk access commands of the plurality of disk access commands  210  that desire to read data from the hard disk  240 , specifically from the “busy” area  242   a  of the hard disk  240 , are permitted to do so. From certain perspectives of the invention, the “busy” area  242   a  of the hard disk  240  is viewed or protected as being read only. That is to say, the data or application data within the “busy” area  242   a  of the hard disk  240  is read but is incapable of being rewritten within the same location of the hard disk. 
     However, those disk access commands of the plurality of disk access commands  210  that desire to write data to the hard disk  240 , specifically from the “busy” area  242   a  of the hard disk  240 , are not permitted to do so. Conventional disk access commands that perform reading and writing of a specific portion of data will commonly write the modified data over the top of the old data, within the same memory location within the hard disk  240 . Instead, in accordance with the virtual device driver (VXD)  220  of the invention, any write commands that seek to write modified data over the top of old data within hard disk  240  are directed to write only to the “free” area  246  within the hard disk  240 . For example, a write disk access instruction of the plurality of disk access commands  210  that seeks to write modified data to the “busy” area  244  will be directed to write the data to a “Y=New”  246   a  location within the “free” area  246  of the hard disk  240 . Subsequently, when the “Y=New”  246   a  is modified at a later time, the entirety of the most recent modification is not written over the top of “Y=New”  246   a  location, but only the modified portion is written to a “Z=New”  246   b  location. In certain embodiments of the invention, the “Y=New”  246   a  location and the “Z=New”  246   b  location are viewed as a linked list of scatter/gather descriptors contained throughout the “free” area  246  of the hard disk  240 . The calculated imaging sector index  246   c  of the hard disk  240  is contained exclusively in the “free” area  246  of the hard disk  240 . 
     If desired, as a large number of the “Y=New”  246   a  location and the “Z=New”  246   b  location are performed throughout prolonged use of the computing system  200 , reclamation of disk space within the hard disk  240  is performed. If desired, a warning or dialogue box is provided to a user of the computing system  200  to suggest that reclamation of disk space within the hard disk  240  should be performed. 
     FIG. 3 is a functional block diagram illustrating a method  300  performed in accordance with the invention that performs operating system and data program protection within a computing system. Once the program that performs the method  300  is installed within a computing system, in a block  310 , the beginning vector of the hard disk of the computing system is scanned to gather the CHS (cylinder, head, sector) information of the hard disk. In addition, the total sector information of the hard disk is acquired in the block  311  in conjunction with the operation of the block  310 . In the block  311 , information pertaining to a master boot record  312 , a primary partition  314 , and a number of extended partitions  316  are all acquired in the block  311 . Subsequently, in a block  320 , all of the file allocation tables (FATs) of the hard disk of the computing system are scanned. Within the operation of the block  320 , the file allocation tables (FATs) of the hard disk are read and the used sectors of the hard disk are determined. Many hard disks have certain corrupted or damaged sectors. These sectors are either damaged during manufacture of the hard disk, or subsequently during some damaging or catastrophic failure of the hard disk during operation of the computing system. In certain embodiments of the invention, this specific mapping of the hard disk is viewed as being a “fingerprint” of the hard disk, specific to the hard disk itself. Many conventional methods are used to determine the number of corrupted and damaged sectors within the hard disk, but the method  300  is operable to determine the specific spatial relationship of the damaged sectors within the hard disk of the computing system. This “fingerprinting” of the hard disk, as performed within the block  322  in certain embodiments of the invention, enables specific identification of the hard disk from among a number of hard disks. Additional methods are operable in accordance with the invention such as identification methods that identify a specific piece of hardware (i.e. the hard disk) of a computing system. 
     Subsequently, in a block  330 , a virtual file allocation table (FAT) is created. If desired, in a block  332 , space within the hard disk that is occupied with programs, data and other application data is determined to be “busy.” In a block  334 , space within the hard disk that is not occupied with programs, data and other application data is determined to be “free.” Afterwards, in a block  340 , the virtual device driver (VXD) is copied into the hard disk and the file is registered during operating system booting. In certain embodiments of the invention, the virtual device driver (VXD) is copied into the last portion of the computing system. During operation of the computing system, the virtual device driver (VXD) filters and intercepts disk access instructions in a block  350 . In performing the operations within the block  350 , dynamic floating point address calculation is performed in the block  352 . This dynamic floating point address calculation is used to perform re-direction and calculation of the disk access instructions that are to be performed within the computing system. Finally, in a block  360 , the calculated imaging sector to regional interrupt is handed down to a BIOS interrupt. If desired, in a block  362 , the basic hardware level disk operations are performed using the BIOS interrupt of the block  360 . In certain embodiments of the invention, the BIOS interrupt of the block  360  is a BIOS interrupt  13 . Within the method  300 , the BIOS interrupt is not performed at the original index. Therefore, any disk access command will be unable to alter or damage the last update information of a base system setting that is located within the “busy” sectors of the hard disk of the computing system, as described above in other embodiments of the invention. 
     FIG. 4A is a functional block diagram illustrating a conventional method  400  that performs disk access operations. In a block  410 , a read of a “busy” area within a hard disk is performed. The “busy” area that is read is a predetermined sector (X). Then, in a block  420 , a write disk access command is performed to the same predetermined sector (X). That it so say, the write operation is performed in the block  420  directly over the top of the previously performed read operation in the block  410 . Subsequently, in a block  430 , a re-read is performed of the same “busy” area within the hard disk. The “busy” area that is re-read in the block  430  is the same predetermined sector (X) that is read earlier in the block  410  and written in the block  430 . Finally, a re-write is performed in a block  440  over the same predetermined sector (X). In each of the blocks  410 ,  420 ,  430 , and  440 , the same predetermined sector (X) is used. The conventional method  400  inherently does not maintain any safeguard for data or application data that are stored on a hard disk. 
     FIG. 4B is a functional block diagram illustrating a method  405  executed in accordance with the invention that performs disk access operations using calculation and re-direction of a virtual device driver (VXD) within a computing system. In a block  415 , a read of a “busy” area within a hard disk is performed; this is a direct read. The “busy” area that is read is a predetermined sector (X). Then, in a block  425 , a write disk access command is attempted to be performed to the same predetermined sector (X). However, within the execution of the operation within the block  425 , a “Y=New Location” is defined. A new index corresponding to the “Y=New Location” is created in a block  426 . The “Y=New Location” is substituted with the predetermined sector (X) in a block  427 . When reading only, the predetermined sector (X) is located within a “busy” area of a hard disk of a computing system in which the method  405  is performed. Conversely, when writing only, the “Y=New Location” is located within a “free” area of the hard disk of the computing system in which the method  405  is performed. The new index corresponding to the “Y=New Location” is written onto the virtual file allocation table (FAT) in a block  427   a . Then, in a block  428 , the attempted write of the block  425  into the predetermined sector (X) is actually performed by writing into a portion of the “free” area of the hard disk of the computing system; this actual writing into the “free” area of the hard disk uses the new index corresponding to the “Y=New Location”. 
     Subsequently, in a block  435 , a re-read is attempted within the predetermined sector (X) (i.e. within the “busy” area of the hard disk), but the read is actually performed using the “Y=New Location” and its associated new index within the “free” area. From certain perspectives of the invention, a virtual device driver (VXD) employed in accordance with the invention performs a re-direction of a disk access command that attempts to perform a read of the predetermined sector (X). This re-direction is performed using information acquired by dynamic floating point address calculation in other embodiments of the invention. 
     Finally, in a block  445 , a re-write to the predetermined sector (X) is attempted, but the rewrite is actually performed back to the “free” area of the hard disk. First, a new index corresponding to the “Z=New Location” is created in a block  449 . The “Z=New Location” is created within the “free” area of the hard disk. Subsequently, in a block  447 , the “Z=New Location” is substituted with the “Y=New Location” that is generated in the block  429  above. In a block  447   a , the virtual file allocation table (FAT) is updated to contain the substitution of the “Y=New Location” with the “Z=New Location”. Finally, in a block  448 , the attempted write of the block  445  into the “Y=New Location” is actually performed by writing into a portion of the “free” area of the hard disk of the computing system; this actual writing into the “free” area of the hard disk uses the new index corresponding to the “Z=New Location” that has been substituted with the “Y=New Location” in the block  447 . 
     FIG. 5 is a functional block diagram illustrating one specific embodiment of the method  500  illustrated within FIG. 4B that performs disk access operations using calculation and redirection of a virtual device driver (VXD) within a computing system. In a block  510 , an operating system request is received. Then, filtering of the operating system request is performed using a virtual device driver (VXD) in accordance with the invention in a block  520 . Any of the various embodiments of the invention depicting a virtual device driver (VXD) above is employed to perform the filtering performed in the block  520  without departing from the scope and spirit of the invention. Subsequently, in a decision block  530 , the disk access command or an operating system request is determined using the filtering of the block  520  if the operating system request pertains to an area of the hard disk that is “busy” or “free.” 
     If the operating system request is to a “busy” area of the hard drive as determined in the decision block  530 , then in a block  540 , a new read is identified. Subsequently, in a block  550 , the index sequence corresponding to the operating system request is updated. Then, a new read is performed in a block  560 . Alternatively, if the operating system request is to a “free” area of the hard drive as determined in the decision block  530 , then in a block  545 , a read and a new write are identified. Subsequently, in a block  555 , the index sequence corresponding to the operating system request is updated. Then, a read and a new write are performed in a block  565 . Then, in a block  570 , a new address is identified. Finally, in a block  580 , a regional interrupt is performed. 
     The present invention is geared towards application within the Microsoft Windows 95 and Microsoft Windows 98 operating systems. The operation of the invention is amenable within additional operating systems such as Microsoft Windows NT, Linux, OS2 and other operating systems operable within various computing systems known to those having skill in the art of computing systems and their respective operating systems. 
     FIG. 6 is a system diagram illustrating an expand function  600  performed in accordance with the invention that re-distributes space within a hard disk. The hard disk is initially depicted with a “busy” area  644   a  and a “free” area  646 . The “busy” area  644   a  contains stored contents within the hard disk. The “busy” area  644   a  is also a read only portion of the hard disk. A “write to” command  610  is executed to the hard disk. Originally, the area of the hard disk to which the “write to” command  610  is executed is contained within the “free” area  646 . 
     After an “expand” command  625  is executed, that area of the hard disk to which the “write to” command  610  has been executed is then contained within a “busy” area  644   c  of the hard disk. At this time, the area of the hard disk to which the “write to” command  610  has been executed is protected. After the “write to” command  610  is executed, the original file allocation table (FAT) of the hard disk is updated as shown by the command  620 . During the time that the “expand” command  625  is being performed, the area of the hard disk to which the “write to” command  610  has been executed is not, but it is protected immediately thereafter as it is now located within the “busy” area  644   c  of the hard disk. 
     During the execution of the “expand” command  625 , the hard disk is depicted as having a “busy” area  644   b  and the “free” area  646 . Here, the “busy” area  644   b  contains the previously store contents as shown by the “busy” area  644   a  as well as any portion of the hard disk that is reclaimed during the execution of the “expand” command  625 . The “free” area  646  is unchanged at this point. Subsequently, the installation process is repeated as shown by the command  630 . The hard disk is then depicted as having the “busy” area  644   c  (as described above including the the area of the hard disk to which the “write to” command  610  has been executed) and the “free” area  646 . After an “expand” command  625  is executed, that area of the hard disk to which the “write to” command  610  has been executed is then contained within the “busy” area  644   c  of the hard disk. At this time, the area of the hard disk to which the “write to” command  610  has been executed is fully protected. After the “write to” command  610  is executed, the original file allocation table (FAT) of the hard disk is updated as shown by the command  620 . 
     The “busy” area  644   c  contains the newly stored contents within the hard disk that have been acquired during the execution of the expand command  625 . The “busy” area  644   c  is also a read only portion of the hard disk. Shown also is the expanded area  645  of the hard disk. The “free” area  646  is still unchanged at this point. 
     FIG. 7 is a functional block diagram illustrating a recovery function  700  performed in accordance with the invention. The recovery function  700  is performed in a virtual environment  710 . The virtual environment  710  itself contains, among other things, a file allocation table (FAT)  712  and a partition table  714 . Subsequently, as shown by the block  720 , a button on computing system on which the recovery function  700  is performed is depressed to restore the saved file allocation table (FAT). In this particular embodiment of the invention, the keystroke of “F 9 ” is shown in the block  720  to restore the saved file allocation table (FAT). Any button or keystroke is implemented in other embodiments of the invention to perform the function of the block  720  without departing from the scope and spirit of the invention. Subsequently, as shown in the block  730 , the saved file allocation table (FAT) and the partition table are restored from the stored contents within a hard disk of the computing system. In a block  740 , the re-installation of the program is performed again. Finally, in a block  750 , the file allocation table (FAT) is calculated. 
     In view of the above detailed description of the present invention and associated drawings, other modifications and variations will now become apparent to those skilled in the art. It should also be apparent that such other modifications and variations may be effected without departing from the spirit and scope of the present invention.