System image
In computing a system image is the state of a computer or software system stored in some form. The form of storage is often a Computer_file. A system is said to be capable of using (or dumping) system images if it can be closed down and later restored to exactly the same state. System images are sometimes used for backup.
There are generally two types of system image. 1 An image of a whole computer system. 2 An image of some part of a system, such as a particular program.
Images of type 1 are normally created by copying the contents of the computers mass storage to a file elsewhere. The programs are often Disk_cloning programs. Though on many system a complete system image cannot be created by a disk cloning program. This is because some information is held outside of disks, for example in non-volatile memory.
Images of type 2 have special purposes, often related to Persistance. A common example is a Database_management_system. Most DBMS can store the state of its Database or Databases to a file before being closed down. The DBMS can then be restarted later with the information in the database intact and proceed as though the software had never stopped. Another example would be the Hibernate_(OS_feature) feature of many Operating Systems. Here the state of all RAM memory is stored to disk, the computer is brought into an energy saving mode then later restored to normal operation.
Some Programming Languages provide a command to take a system image of a program. This is normally a standard feature in |Lisp_programming_language and Smalltalk, sometimes other languages provide it. Development in these languages is often quite different from many other programming languages. For example in Lisp the programmer may load packages or other code into a running lisp implementation using the Read-eval-print_loop loop. The programmer may then dump a system image, containing that code. Often this image is an executable, and can be run on other machines. This system image can be the form in which executable programs are distributed. This method of creating executable programs is often used by Lisp and Smalltalk programs.