Machine physique - Machine virtuelle
Notion de machine virtuelle
Quand un utilisateur s'installe devant une machine (un écran-clavier, terminal de gros système ou ordinateur individuel), il constate dès la mise sous tension ou après un minimum d'opérations plus ou moins obscures, que la machine est prête à dialoguer avec lui. Un non informaticien peut penser qu'il a directement accès à la machine physique, ce qui est une impression tout aussi fausse que celle d'un conducteur utilisant une direction assistée. En fait, s'intercalent entre lui et la machine (hardware) toute une succession d'intermédiaires qui transforment (dans les deux sens) le langage permis à l'utilisateur (appelé langage de commande) en langage machine et finalement en instructions câblées. En fait, comme nous allons le voir, l'utilisateur peut avoir l'impression d'une machine beaucoup plus puissante par certains aspects que ne l'est la machine physique. Citons pour fixer les idées quelques notions déjà connues :
-
le disque virtuel qui donne à l'utilisateur l'impression qu'il possède un disque à temps d'accès très
rapide,
-
la mémoire virtuelle,
-
le spool (Simultaneous Peripheral Operations On Line) d'impression par exemple, qui donne l'illusion que deux machines travaillent simultanément.
Systèmes multiprogrammés à partage de ressources ou à machine virtuelle
Avant le développement de la notion de machine virtuelle, la philosophie des systèmes multiprogrammés consistait à partager les ressources d'une machine réelle entre plusieurs processus. A chacun d'eux était allouée une partie des ressources de la machine réelle :

Ils "voyaient" donc une machine réelle diminuée en taille et en possibilités.
Au contraire, les systèmes d'exploitation multiprogrammés utilisant la notion de machine virtuelle créent des processeurs, des capacités de stockage et des équipements d'E/S VIRTUELS, pouvant même avoir chacun des possibilités dépassant largement celles de la machine réelle :
Une machine virtuelle est une illusion d'une machine réelle, créée par le système d'exploitation qui fait apparaître la machine réelle comme un ensemble de machines réelles.
L'exemple historique du système VM
L'un des premiers et des plus beaux exemples est le système VM (Virtual Machine) d'I.B.M., initialement installé sur des machines IBM/370, (dans les années 70 donc), très largement diffusé, et qui mérite quelques mots.
Du point de vue des utilisateurs, les machines virtuelles leur apparaissaient parfaitement semblables à des machines réelles : chacun pouvait disposer d'un IBM/370 pour lui tout seul, y compris les terminaux et le système d'exploitation lui-même. Ainsi, sur chaque machine virtuelle pouvait être installé un système d'exploitation (I.B.M. bien sûr, mais pas obligatoirement) différent !!!
Les plus connus étaient CMS, TSO (système transactionnel), DOS/VS (rien à voir avec le DOS des PCs)
Le système VM était formé de différents composants, parmi lesquels :
-
CP : (Control Program) : chargé de créer l'environnement dans lequel les machines virtuelles fonctionnaient : processeur(s) virtuel(s), mémoire virtuelle, organe d'E/S virtuel. Il gérait la machine réelle, donnait aux utilisateurs l'accès aux ressources réelles, processeur(s), organe physique d'E/S, mémoires secondaires, etc.). Il multiprogrammait complètement les machines virtuelles plutôt que les tâches ou les processus individuels : les processus tournant sur les machines virtuelles n'étaient pas sous le contrôle de CP mais du système d'exploitation tournant sur cette machine virtuelle. Les différents systèmes d'exploitation opéraient indépendamment les uns des autres, CP résolvait leurs conflits.
-
CMS (Conversational Monitor System) : permettant le développement interactif des programmes : contenait les éditeurs, compilateurs, outils de mise au point, etc.
Le système VM pouvait même tourner lui-même sur une machine virtuelle, comme le montre la figure suivante :
Cela permettait par exemple de mettre au point une nouvelle version de VM sans perturber le fonctionnement normal du centre informatique.
Différences entre machines physiques et machines virtuelles
Les différences entre les deux types de machines (virtuelle et physique) apparaissent dans les domaines suivants :
-
les entrées/sorties (Input/Output : I/O) : les E/S du matériel de base sont très difficiles et dangereuses à utiliser directement, nécessitant la connaissance parfaite de l'architecture matérielle et du jeu d'instructions de base. Le système d'exploitation décharge l'utilisateur de cette lourde tâche, en lui présentant une machine virtuelle dotée de capacités d'E/S équivalentes mais d'utilisation plus simple (voir plus loin la gestion des fichiers),
-
la mémoire : le système d'exploitation peut donner à l'utilisateur l'illusion d'une mémoire beaucoup plus grande ou plus petite que la mémoire physique. C'est le cas cité plus haut de la "mémoire virtuelle" placée physiquement sur un autre support (disque). C'est aussi le cas de systèmes partageant la mémoire physique entre plusieurs utilisateurs, chacun ayant l'impression de travailler avec une machine indépendante et plus réduite (problème de multi-utilisateurs : voir le chapitre "gestion mémoire" et la pagination).
-
la gestion des fichiers : la machine virtuelle est dotée d'un Système de Gestion de Fichier (S.G.F.) permettant à l'utilisateur d'accéder aux informations en manipulant des noms symboliques plutôt que des adresses physiques de disque ou de bande (voir ci-dessous).
-
la protection et la gestion des erreurs : La protection des utilisateurs et la sécurité des informations doivent être assurées par le système d'exploitation. La machine virtuelle propose à l'utilisateur des mots-clés, des cryptages, la machine physique proposant de son coté des méthodes physiques (instructions spéciales, etc.).
Autre exemple de machine
virtuelle
La figure suivante illustre l'organisation en 5 couches du SGF utilisée par le système d'exploitation VMS du VAX (Digital). Même sans en connaître les détails, il est possible d'en imaginer les différentes fonctionnalités.
L'interface du SGF offre à l'utilisateur les services d'une machine virtuelle dotée des opérations de base nécessaires à la manipulation d'un fichier (fichier logique) : création/destruction, ouverture/fermeture, lecture/écriture. Ces opérations peuvent en fait n'avoir aucun effet immédiat sur le fichier physique correspondant : par exemple, la lecture d'un enregistrement peut seulement consister à transférer des octets de données d'un tampon mémoire géré par le système d'exploitation vers l'espace mémoire du processus de l'utilisateur. Cette machine virtuelle gère le tampon mémoire, met à jour le pointeur qui le balaie, et déclenche si nécessaire un nouveau remplissage du tampon en utilisant à son tour les services d'une autre machine virtuelle.
Cette dernière calcule l'adresse physique du bloc de données à lire ou à écrire : face, cylindre, etc. Cela dépend évidemment énormément de l'organisation des fichiers, par exemple de l'existence de tables de correspondance entre les blocs et les adresses physiques, de l'existence de chaînages au sein des blocs eux-mêmes, de l'existence de blocs partagés par plusieurs fichiers, de miroirs, etc.
Enfin, le pilote de disque teste et/ou initialise les registres du périphérique, gère la communication entre le matériel et peut-être certaines erreurs, etc.
Dernière mise à jour : 05/07/2001