Systèmes d’exploitation Introduction
Introduction Sans logiciels : l’ordinateur est inutile 2 catégories de logiciels : Programmes systèmes Permettent le fonctionnement de l’ordinateur Programmes d’applications Résolvent les problèmes de l’utilisateur SE = le important des programmes systèmes Ordinateur = système complexe (1 ou +ieurs processeurs, mémoire principale, horloges, terminaux, disques, interfaces de connexion réseau, périphériques d’E/S, …) Sans SE peu de programmes Proposer aux programmeurs une machine virtuelle (le SE) + facile à comprendre et à programmer
Organisation d’un ordinateur Système bancaire Réservation d’avion Jeu d’aventures Compilateurs Éditeurs Interpréteur de commandes Système d’exploitation Langage machine (Assembleur) Microprogramme (Interpréteur en ROM) Dispositifs physique (électronicien) Programmes d’application Programmes système Matériel Fonction primordiale d’un SE : masquer cette complexité et offrir un ensemble d’instructions simples à utiliser Ex. : lecture d’un fichier sur disque sans se soucier de positionner les têtes de lecture
Qu’est-ce qu’un SE ? 2 définitions possibles SE effectue 2 tâches sans rapport SE = Machine étendue SE = programme qui soustrait le matériel aux regards du programmeur et offre une vue simple et agréable de fichiers nommés qui peuvent être lus et écrits SE = Gestionnaire de ressources SE = programme qui ordonne et contrôle l’allocation des ressources (processeurs, mémoire, périphériques d’E/S, …) disponibles sur un ordinateur
Historique des SE 1ère génération (45-55) : tubes à vide et cartes enfichables Programmation en langage machine et fonctionnement par réservation du temps de calcul Absence de véritable SE 2ème génération (55-65) : transistors et traitement par lots Regroupements des travaux, traitement via un opérateur et lecteur de bandes 1 langage de programmation (Fortran) 3ème génération (55-80) : circuits intégrés et multiprogrammation Jusqu’alors 1 ordinateur=1 SE, maintenant même SE pour ordinateurs Partitionnement de la mémoire (plusieurs tâches partagent la mémoire) multiprogrammation Apparition d’Unix (simplification de MULTICS des laboratoires Bell) 4ème génération (80-…) : ordinateurs personnels MS-DOS (étendu en Windows) machine intel Unix station de travail et machine non-intel Linux (système Unix) pouvant fonctionner sur une machine intel Génération future : systèmes d’exploitation distribués
Principes des SE (vue externe) Interface (fournie par le SE) entre le SE et les programmes utilisateurs se font par des instructions étendues : les appels système (AS) A chaque AS correspond une bibliothèque de fonctions (ex : <unistd.h>) Les AS créent, détruisent et utilisent divers objets logiciels gérés par le SE Les processus et les fichiers constituent les objets les plus importants
Les processus Processus (concept clé de tout SE) = programme en cours d’exécution Processus constitué : D’un programme exécutable De ses données De sa pile d’exécution De son compteur ordinal De son pointeur de pile Et d’autres registres … (autres infos nécessaires à l’exécution du programme) A D C B F E Organisation des processus sous forme d’arbre (notion de père et de fils)
Les fichiers Tâche fondamentale du SE : Offrir un modèle d’accès aux fichiers facile d’emploi et indépendant du matériel en masquant les spécificités des disques (et autres périphériques d’E/S) (ex : accès à un fichier sur un HD, une FD ou un CD) Plupart des SE font appel au concept de répertoires et une organisation sous forme d’arbres Système de protection d’accès aux fichiers (pour les SE multi-utilisateurs) Existence de fichiers spéciaux (ex: les tubes)
Structure d’un SE (vue interne) modèles peuvent être utilisées pour réaliser un SE 4 structures expérimentées (non exhaustifs) : systèmes monolithiques systèmes à couches machines virtuelles modèle client/serveur …
Systèmes monolithiques Surnommés le « grand désordre » / Structure = Absence de structure SE = collection de procédures chacune pouvant appeler à tout moment n’importe qu’elle autre Les AS commutent la machine du mode utilisateur au mode noyau (ou superviseur) Mémoire principale Programme utilisateur 1 Appel au noyau 2 Table de sélection 3 Procédure de service 4 Mode utilisateur Mode superviseur Passage en mode noyau Recherche du numéro de service Localisation et appel de la procédure Contrôle rendu au prog. utilisateur
Systèmes à couches Structuration du SE Chaque couche s’appuyant sur la couche inférieure 5 opérateur 4 programmes utilisateurs 3 gestion des E/S 2 communication op./proc. 1 gestion mémoire allocation processeur et multiprog Premier système à couche « THE » Système « MULTICS » généralise le concept de couches en anneaux concentriques, l’anneau du centre disposant de plus de droits que les anneaux extérieurs Exemple d’utilité : Un prof écrit un prog d’évaluation des élèves qu’il exécute dans l’anneau n, il autorise les étudiants à l’exécuter dans le niveau n+1 sans que ces derniers puissent modifier leur note
Les machines virtuelles Le cœur du système, appelé moniteur de machine virtuelle, s’exécute à même le matériel et se charge de la multiprogrammation en fournissant à la couche au-dessus plusieurs machines virtuelles Ex : VM/370 (initié par IBM)
Le modèle client-serveur Idée : déplacer le code dans des couches supérieures (tendance des SE modernes : réduire le SE à un noyau minimum) Reporter la plupart des fonctions du SE dans des processus utilisateurs Ex : lecture d’un bloc d’un fichier par un prog. utilisateur (appelé client) se fait par l’envoi d’une requête à un processus serveur qui effectue le travail et envoie la réponse Serveur de processus Processus client Serveur de terminal Serveur de fichiers … Serveur de mémoire Noyau Mode Utilisateur Mode Noyau message Avantages : + faciles à modifier, possibilité de fonctionnement en mode dégradé (en cas de plantage d’un matériel les dégâts se limitent au serveur correspondant) Ce modèle est particulièrement adapté aux systèmes distribués