machines virtuelles Systèmesmodifier
Une « machine virtuelle » a été initialement définie par Popek et Goldberg comme « un duplicata efficace et isolé d’une machine informatique réelle. »L’utilisation actuelle inclut les machines virtuelles qui n’ont aucune correspondance directe avec un matériel réel.Le matériel physique « réel » exécutant la machine virtuelle est généralement appelé « hôte », et la machine virtuelle émulée sur cette machine est généralement appelée « invité »., Un hôte peut émuler plusieurs invités, chacun pouvant émuler différents systèmes d’exploitation et plates-formes matérielles.
le désir d’exécuter plusieurs systèmes d’exploitation a été le motif initial des machines virtuelles, afin de permettre le partage du temps entre plusieurs systèmes d’exploitation à tâche unique. À certains égards, une machine virtuelle système peut être considérée comme une généralisation du concept de mémoire virtuelle qui l’a historiquement précédée., Le CP/CMS D’IBM, le premier système à permettre une virtualisation complète, a mis en œuvre le partage du temps en fournissant à chaque utilisateur un système d’exploitation mono-utilisateur, le système Conversational Monitor (CMS). Contrairement à la mémoire virtuelle, une machine virtuelle système a autorisé l’utilisateur à écrire des instructions privilégiées dans son code. Cette approche présentait certains avantages, tels que l’ajout de dispositifs d’entrée/sortie non autorisés par le système standard.,
à mesure que la technologie évolue à des fins de virtualisation, de nouveaux systèmes de surengagement de mémoire peuvent être appliqués pour gérer le partage de mémoire entre plusieurs machines virtuelles sur un système d’exploitation d’ordinateur. Il peut être possible de partager des pages de mémoire qui ont un contenu identique entre plusieurs machines virtuelles qui s’exécutent sur la même machine physique, ce qui peut entraîner leur mappage sur la même page physique par une technique appelée kernel same-page merging (KSM)., Ceci est particulièrement utile pour les pages en lecture seule, telles que celles contenant des segments de code, ce qui est le cas pour plusieurs machines virtuelles exécutant le même logiciel ou un logiciel similaire, bibliothèques logicielles, serveurs web, composants middleware, etc. Les systèmes d’exploitation invités n’ont pas besoin d’être compatibles avec le matériel hôte, ce qui permet d’exécuter différents systèmes d’exploitation sur le même ordinateur (par exemple, Windows, Linux ou les versions antérieures d’un système d’exploitation) pour prendre en charge les futurs logiciels.,
l’utilisation de machines virtuelles pour prendre en charge des systèmes d’exploitation invités distincts est populaire en ce qui concerne les systèmes embarqués. Une utilisation typique serait d’exécuter un système d’exploitation temps réel simultanément avec un préféré complexe système d’exploitation, comme Linux ou Windows. Une autre utilisation serait pour les logiciels nouveaux et non prouvés encore au stade de développement, Donc il fonctionne à l’intérieur d’un bac à sable. Les machines virtuelles présentent d’autres avantages pour le développement du système d’exploitation et peuvent inclure un meilleur accès au débogage et des redémarrages plus rapides.,
Plusieurs machines virtuelles exécutant leur propre système d’exploitation invité sont fréquemment engagées pour la consolidation du serveur.
virtuelle du Processus de machinesEdit
une machine virtuelle de processus, parfois appelée machine virtuelle d’application ou Environnement D’exécution géré (MRE), s’exécute comme une application normale dans un système d’exploitation hôte et prend en charge un seul processus. Il est créé lorsque ce processus est démarré et détruit lorsqu’il la quitte., Son but est de fournir un environnement de programmation indépendant de la plate-forme qui résume les détails du matériel ou du système d’exploitation sous-jacent et permet à un programme de s’exécuter de la même manière sur n’importe quelle plate-forme.
Une machine virtuelle de processus fournit une abstraction de haut niveau-celle d’un langage de programmation de haut niveau (par rapport à l’abstraction ISA de bas niveau de la machine virtuelle système). Les machines virtuelles de processus sont implémentées à l’aide d’un interpréteur; des performances comparables aux langages de programmation compilés peuvent être obtenues par l’utilisation de la compilation juste à temps.,
ce type de machine virtuelle est devenu populaire avec le langage de programmation Java, qui est implémenté à l’aide de la machine virtuelle Java. D’autres exemples incluent la machine virtuelle Parrot et le Framework.net, qui s’exécute sur une machine virtuelle appelée Common Language Runtime. Tous peuvent servir de couche d’abstraction pour n’importe quel langage informatique.
un cas particulier des machines virtuelles de processus sont des systèmes abstraits sur les mécanismes de communication d’un cluster informatique (potentiellement hétérogène). Une telle machine virtuelle ne consiste pas en un seul processus, mais en un processus par machine physique dans le cluster., Ils sont conçus pour faciliter la tâche de programmation d’applications simultanées en permettant au programmeur de se concentrer sur les algorithmes plutôt que sur les mécanismes de communication fournis par l’interconnexion et le système d’exploitation. Ils ne cachent pas le fait que la communication a lieu et, en tant que tel, ne tentent pas de présenter le cluster comme une seule machine.
contrairement à d’autres machines virtuelles de processus, ces systèmes ne fournissent pas de langage de programmation spécifique, mais sont intégrés dans un langage existant; typiquement, un tel système fournit des liaisons pour plusieurs langages (par exemple, C et Fortran)., Les exemples sont Parallel Virtual Machine (PVM) et Message Passing Interface (MPI). Ce ne sont pas strictement des machines virtuelles car les applications exécutées sur le dessus ont toujours accès à tous les services du système d’exploitation et ne sont donc pas limitées au Modèle système.