ICS3U

Accueil > Logiciels du système >

📚 Machines virtuelles

Survol et attentes

À part les périphériques comme le clavier, la souris, le microphone, etc. vous n’avez jamais manipuler directement les composants d’un ordinateur pour traiter les valeurs binaires.

Définitions

Entre vous et la machine réelle se trouve une ou plusieurs couches qui s’appellent la machine virtuelle. Elle est plus intuitive à utiliser. C’est sa tâche de traduire toutes vos interactions avec l’ordinateur en binaire pour la machine réelle.

Les parties de la machine virtuelle que vous manipulez s’appellent l’interface utilisateur. Il y a d’autres parties de la machine virtuelle qui sont utilisées par les logiciels afin qu’elles aient accès aux ressources de l’ordinateur. Cette partie s’appelle l’interface de programmation.

Un autre nom pour la machine virtuelle principale sur un appareil est le système d’exploitation, comme Windows, macOS, iOS, Android, Ubuntu.

Objectifs d’apprentissage

À la fin de cette leçon vous devrez être en mesure de :

Critères de succès

Notes

On ne manipule pas des bits ni des octets en travaillant avec un ordinateur. On utilise un clavier, une souris, etc. On travaille alors avec une machine virtuelle qui traduit nos gestes en informations et instructions binaires pour la machine réelle. C’est encore un niveau d’abstraction plus élevée, comme les portes logiques, les composants et les systèmes de l’architecture von Neumann : les détails du fonctionnement de la machine réelle sont cachés.

Pour rendre un ordinateur pratique pour un utilisateur du grand public qui n’est pas nécessairement expert en informatique, les systèmes d’exploitation ont été développés, p. ex. MS-DOS, Apple DOS (des “Disk Operating Systems”), Unix, Windows, macOS, iOS, Android, Linux/GNU, ChromeOS. Un système d’exploitation est une suite de logiciels qui présente une interface entre l’utilisateur et le matériel physique. Cette interface est une machine virtuelle ou environnement virtuel.

La machine virtuelle fait les quatre choses suivantes :

  1. masquer les détails complexes du matériel physique de l’ordinateur en le gérant pour les utilisateurs et les applications;
  2. présenter l’information d’une façon naturelle (caractères, nombres décimaux, éléments graphiques, etc.) qui ne demande aucune connaissance de la structure interne des données;
  3. permettre un accès facile aux ressources disponibles sur l’ordinateur;
  4. prévenir les dommages accidentels ou intentionnels du matériel, des programmes ou des données.

Interface utilisateur, interface de programmation et interface interne

Les utilisateurs ne manipulent pas directement le matériel de l’ordinateur. Ils utilisent une interface utilisateur pour demander des ressources ou des services. Par exemple, un utilisateur peut cliquer sur une icône pour ouvrir un fichier. L’interface utilisateur, au moyen d’une suite de logiciels du système, traduit ce geste en une série d’instructions binaires pour la machine réelle.

interface utilisateur

De même, toutes les applications installées sur un système d’exploitation n’accède pas directement au matériel. Elles utilisent une interface de programmation pour demander des ressources ou des services au système d’exploitation. Par exemple, une application de traitement de texte n’écrit pas directement sur le disque dur. Elle demande au système d’exploitation de le faire pour elle.

interface de programmation

Dans les deux cas, les interfaces font le pont entre des demandes externes (d’une personne ou d’un programme) en les passant à une interface interne - aussi appelé le noyau - qui est en mesure d’exploiter les ressources matérielles directement via des données et des instructions en format binaire correspondant directement à l’architecture matérielle installée.

Services du système

Le noyau (interface interne) : pour gérer le matériel directement

  1. Gestion de la mémoire : allouer et libérer de l’espace mémoire pour les applications;
  2. Gestion des processus ou Programmateur : démarrer, arrêter, suspendre et reprendre des applications; bref, gérer la prochaine instruction à exécuter;
  3. Pilotes de périphériques : traduire les signaux des périphériques d’entrée en instructions utilisables par le système d’exploitation et les autres applications et vice versa pour les périphériques de sortie;
  4. Gestion des fichiers : organiser les fichiers sur le disque dur, les lire, les écrire, les effacer, etc.
  5. Gestion des autorisations : déterminer qui a le droit de faire quoi sur l’ordinateur; p. ex. si un utilisateur ou une application a le droit de faire certaines opérations normalement réservées au système d’exploitation.

Le shell (interface utilisateur)

  1. Interface en ligne de commande : une fenêtre de texte où l’utilisateur tape des commandes pour demander des services;
  2. Interface graphique : une fenêtre avec des icônes, des menus et des boutons pour demander des services;
  3. Utilitaires : des applications qui offrent des services spécifiques, comme un explorateur de fichiers, un éditeur de texte, un gestionnaire des tâches/performances, un navigateur web, un gestionnaire d’installation/désinstallation d’applications, etc. Ces utilitaires peuvent exister à la fois en versions ligne de commande et graphique, comme les gestionnaires de fichiers.
  4. Services de langages : des applications qui offrent des services de programmation, comme un assembleur, un compilateur, un débogueur, un éditeur de code, etc.

L’interface de programmation d’applications (API)

Les fonctions, structures de données et protocoles qui permettent aux applications de tous les niveaux (interne/noyau, utilisateur/shell) de demander des services aux autres applications. Par exemple, une application de traitement de texte peut demander à une application de navigateur web de lui afficher une page web via l’API de l’application de navigateur web.

Exercices

📚 Tester la compréhension

aucun quiz de vérification des concepts ici encore

🛠️ Pratique

  1. Énumérez les systèmes d’exploitation que vous avez déjà utilisés ou que vous utilisez encore.
  2. Identifiez 3 utilitaires que vous avez déjà utilisés sur un cellulaire ou un ordinateur. Pour chacun indiquez :
    1. son nom et sa fonction;
    2. s’il est un interface graphique ou en ligne de commande;
    3. s’il est directement lié à un service du noyau (oui/non - si oui, lequel).
  3. Énumérer 2 à 5 applications que vous avez installées sur votre cellulaire ou ordinateur.
  4. Activez vos connaissances existantes de l’architecture matérielle de l’ordinateur et les joindre aux nouvelles connaissances sur les services du système pour décrire une séquence d’opérations raisonnable1 pour :
    1. ouvrir un fichier;
    2. lancer le navigateur web;

      Vous devrez faire le geste pour voir au moins les étapes visibles de l’interface utilisateur (les différentes vues/fenêtres et interactions que vous faites). Ensuite, tentez d’associer vos gestes aux réponses du système via la machine virtuelle (services du système) et la machine réelle (architecture Von Neumann).

  1. Raisonnable signifie que la séquence devrait être cohérente avec les différents services du système et les différents composants matériels mais pas nécessairement complète ou exacte (ce qui nécessite plus de connaissances et plus de détails sur le contexte… ce sera un sujet pour un cours spécialisé sur les systèmes d’exploitation à l’université).