En informatique , une image système est une copie sérialisée de l' état complet d'un système informatique stocké sous une forme non volatile , telle qu'un fichier exécutable binaire .
Si l'état d'un système est entièrement écrit sur un disque (c'est-à-dire sur une image disque ), une image système peut être produite en copiant le disque dans un fichier situé ailleurs, souvent à l'aide d'applications de clonage de disque . Sur de nombreux systèmes, une image système complète ne peut pas être créée par un programme de clonage de disque exécuté sur ce système car les informations peuvent être conservées en dehors des disques et de la mémoire volatile, par exemple dans une mémoire non volatile comme les ROM de démarrage.
On dit qu'un système est capable d'utiliser des images système s'il peut être arrêté puis restauré ultérieurement exactement au même état. Dans de tels cas, les images système peuvent être utilisées pour la sauvegarde .
L'hibernation est un exemple qui utilise une image de la RAM entière de la machine .
Images de processus
Une image de processus est une copie de l'état d'un processus donné à un moment donné. Elle est souvent utilisée pour créer une persistance dans un système par ailleurs volatile. Un exemple courant est un système de gestion de base de données (SGBD). La plupart des SGBD peuvent stocker l'état de leur ou de leurs bases de données dans un fichier avant d'être fermés (voir vidage de base de données ). Le SGBD peut ensuite être redémarré ultérieurement avec les informations de la base de données intactes et continuer comme si le logiciel ne s'était jamais arrêté. Un autre exemple serait la fonction de mise en veille prolongée de nombreux systèmes d'exploitation. Ici, l'état de toute la mémoire RAM est stocké sur le disque, l'ordinateur est mis en mode d'économie d'énergie, puis restauré ultérieurement en fonctionnement normal.
Certains émulateurs proposent une fonction permettant de sauvegarder une image du système émulé. Dans les jeux vidéo, on parle souvent de sauvegarde .
Une autre utilisation est la mobilité du code : un agent mobile peut migrer entre des machines en sauvegardant son état, puis en copiant les données sur une autre machine et en redémarrant là-bas.
Prise en charge du langage de programmation
Certains langages de programmation proposent une commande permettant de récupérer une image système d'un programme. Il s'agit généralement d'une fonctionnalité standard de Smalltalk (inspirée de FLEX) et de Lisp , entre autres langages. Le développement dans ces langages est souvent assez différent de celui de nombreux autres langages de programmation. Par exemple, dans Lisp, le programmeur peut charger des paquets ou d'autres codes dans une implémentation Lisp en cours d'exécution à l'aide de la boucle read-eval-print , qui compile généralement les programmes. Les données sont chargées dans le système Lisp en cours d'exécution. Le programmeur peut ensuite vider une image système, contenant ce code précompilé et éventuellement personnalisé, ainsi que toutes les données d'application chargées. Souvent, cette image est un exécutable et peut être exécutée sur d'autres machines. Cette image système peut être la forme sous laquelle les programmes exécutables sont distribués. Cette méthode a souvent été utilisée par des programmes (tels que TeX et Emacs ) largement implémentés dans Lisp, Smalltalk ou des langages idiosyncratiques pour éviter de perdre du temps à répéter le même travail d'initialisation à chaque démarrage.
De la même manière, les machines Lisp étaient démarrées à partir d'images Lisp, appelées Mondes. Le Monde contient le système d'exploitation complet, ses applications et ses données dans un seul fichier. Il était également possible de sauvegarder des Mondes incrémentaux, qui ne contiennent que les modifications d'un Monde de base. Avant de sauvegarder le Monde, le système d'exploitation de la machine Lisp pouvait optimiser le contenu de la mémoire (meilleure disposition de la mémoire, compactage des structures de données, tri des données, ...).
Bien que son objectif soit différent, une « image système » est souvent similaire dans sa structure à un vidage de mémoire .