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, d’E/S, …) horloges, terminaux, disques, interfaces de connexion réseau, périphériques Sans SE peu de programmes Proposer aux programmeurs une machine virtuelle (le SE) Organisation d’un ordinateur Système bancaire Réservation d’avion Jeu d’aventures Programmes d’application Compilateurs Éditeurs Interpréteur de commandes Programmes système Système d’exploitation Langage machine (Assembleur) Microprogramme (Interpréteur en ROM) Matériel Dispositifs physique (électronicien) 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) Organisation des processus sous forme d’arbre (notion de père et de fils) A B D E C F 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) Appel au noyau Mémoire principale Programme utilisateur Mode utilisateur 4 1 3 2 Procédure de service Table de sélection Mode superviseur 1. 2. 3. 4. 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 Premier système à couche « THE » 5 opérateur 4 programmes utilisateurs 3 gestion des E/S 2 communication op./proc. 1 gestion mémoire 0 allocation processeur et multiprog 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 Mode Utilisateur Mode Noyau Processus client Processus client Serveur de processus Serveur de terminal Noyau … Serveur de fichiers Serveur de mémoire 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