Systèmes d'exploitation Rôle d'un système : virtualisation Virtualisation Virtualisation Virtualisation Virtualisation Virtualisation du processeur de la mémoire du disque interface utilisateur du réseau Interfaces des systèmes Familles de systèmes 1 Rôle du système d'exploitation Le système d’exploitation est l’intermédiaire entre un ordinateur (ou en général un appareil muni d’un processeur) et les applications qui utilisent cet ordinateur ou cet appareil Car l'interface du matériel est de trop bas niveau Trop complexe Application Système Matériel 2 Rôle du système d'exploitation Son rôle peut être vu sous deux aspects complémentaires Fournir des abstractions Gérer les ressources 3 Fournir des abstractions Fournir une interface plus commode que celle du matériel Masquer les détails de mise en oeuvre Dissimuler les limitations physiques et le partage des ressources entre plusieurs utilisateurs On dit que le système réalise une machine virtuelle 4 Gérer les ressources Le système gère les ressources matérielles et logicielles : mémoire, processeurs, programmes, communications. Cette gestion comprend l’allocation, le partage et la protection 5 Exemples d'abstractions et de gestion de ressources Organe physique Processeur Mémoire Disque Écran, clavier, souris Réseau abstraction processus mémoire virtuelle fichiers fenêtres canaux système : code qui implante ces abstractions 6 Virtualisation de processeur Avant : file des travaux en attente du processeur Système de temps partagé (multi-tâches) Découpage et partage de tranches de temps Abstraction : processeurs virtuels = processus Chaque utilisateur a son processeur privé (ou plusieurs) Gestion de ressource Partage équitable du processeur démo tâches 7 Gestion du temps partagé P1 Interruption Sauvegarde registres P1 Restauration registres P2 Reprise P2 P1 P2 Une horloge (timer) génère des interruptions périodiques P1 P2 8 Virtualisation de la mémoire Avant : file des travaux en attente de la mémoire Système de mémoire virtuelle Allocation de mémoire virtuelle (quasi infinie) Découpage en page Les pages sont chargées/déchargées par le système Abstraction : mémoires virtuelles Chaque utilisateur a sa mémoire privée Gestion de ressources Partage de la mémoire, protection démo mémoire 9 Gestion de mémoire virtuelle P1 P2 Charger la page si non présente Pages virtuelles Pages réelles Mémoire (RAM) Zone de pagination (swap) 10 Virtualisation de l'espace disque Problème de gestion d'un disque Retrouver les données à partir d'un nom (pas une adresse) Ajout/retrait de données : fragmentation Abstraction : fichiers Fichier : sorte de disque virtuel Gestion de ressources Partage du disque, protection 11 Virtualisation de l'interface (écran, clavier, souris) Avant : des terminaux alphanumériques Système de multi-fenêtrage Abstraction : fenêtre Fenêtre : sorte d'écran virtuel 12 Virtualisation du réseau Avant : une seule entité peut communiquer sur un lien de communication Canaux virtuels de communication Découpage des messages en paquets Envois de paquets de plusieurs émetteurs sur le même lien Abstraction : lien virtuel de communication Gestion de ressource Partage équitable du lien physique de communication Protection 13 Interfaces d’un système d’exploitation Interface “programmatique”, ou API (Application Programming Interface) utilisable à partir des programmes s’exécutant sous le système composée d’un ensemble d’appels systèmes (appels de procédures, avec paramètres) Interface de l’utilisateur, ou interface de commande utilisable par un usager humain, sous forme textuelle ou graphique composée d’un ensemble de commandes • textuelles (exemple en Unix : rm *.o) • graphiques (exemple : déplacer l’icone d’un fichier 14 vers la corbeille) Exemple d’usage des interfaces (Unix) Interface programmatique (en C) le morceau de programme ci-contre utilise les fonctions read() et write() pour recopier ... while (bytesread = read(from_fd, buf, BLKSIZE )) { if ((bytesread == -1) && (errno != EINTR)) break; else if (bytesread > 0) { bp = buf; while(byteswritten = write(to_fd, bp, bytesread )) un fichier dans un autre Interface de commande { if ((byteswritten == -1) && (errno != EINTR)) break; else if (byteswritten == bytesread) break; else if (byteswritten > 0) { bp += byteswritten; bytesread -= byteswritten; } cp fich1 fich2 recopie fich1 dans fich2 démo find } if (byteswritten == -1) break; } } ... 15 Qualités requises d'un système d'exploitation Première qualité : se faire oublier : la fonction d'un ordinateur est d'exécuter les applications, pas le système d'exploitation Utilisation efficace des ressources Fiabilité Tolérance aux fautes (du matériel, des utilisateurs, des programmes) Qualité de l'interface Convivialité Simplicité d'utilisation Documentation Bonne intégration au réseau Sécurité et protection Répertoire étendu de fonctions 16 Composants du systèmes d'exploitation Le noyau Gestion processeur, mémoire, communications L'interpréteur de commande (ou shell) Le système de fichiers 17 Familles de systèmes Systèmes multi-taches Ordonnancement de plusieurs processus Systèmes multiprocesseurs Sur une architecture multiprocesseurs (par exemple SMP) Systèmes embarqués Pour des machines de petite taille Systèmes temps-réel Respect de contraintes temporelles 18 Exemples de systèmes actuels Sur les ordinateurs de bureau (desktop, laptop) Unix (Linux), Windows (XP, Vista, 7), MacOS Sur des équipements divers Téléphones portables, assistants personnels, cartes à puce (Symbian OS, Pocket PC, Palm OS, Android, Multos, ...) 19 Un peu d'histoire Recherche 1950 1960 1970 CTSS 1980 THE 1990 Mach Unix Sprite AFS X-Window Kerberos PC 1950 1960 1970 IBM/360 préhistoire pas de système moniteurs d’enchaînement (batch) OS/360 Linux Andrew Athena Alto DEC PDP11 Intel Spring Amoeba Chorus Multics 2000 1980 Sun DEC Vax VM/370 1990 2000 Macintosh VMS Windows NT Unix (Solaris, HPuX, AIX) NFS Linux MacOS CP/M BeOS Windows MS/DOS Windows 95 98 2000 CE PalmOS ... 20