Vous êtes sur la page 1sur 38

Cours de système d’exploitation

Informatique, 2ème Année


Dr. MBAIOSSOUM BERY
Objectif du cours
• Fournir aux étudiants à la fois une connaissance
précise des services rendus par les systèmes
d’exploitation
• Etudier les principes, les algorithmes et les
organisations des systèmes afin de dégager les
concepts communs à la base des systèmes modernes
tel que l'ordonnancement, la gestion de la mémoire, la
gestion des fichiers, des disques...
• Présenter des exemples d'implantation.
Programme
1. Qu’est-ce qu’un système d’exploitation
2. Gestion des processus
3. Synchronisation des processus
4. Interblocages des processus
5. Gestion de la mémoire
6. La mémoire virtuelle
7. Gestion des fichiers
8. Gestion des périphériques: E/S
I - Qu’est-ce qu’un système
d’exploitation
Définition d’un système d’exploitation
• Dans le sens stricte : le logiciel de base qui s’occupe
de la gestion des ressources d’une machine, et qui
donne à un programmeur une vue abstraite des
détails matériel d’une machine.
– On appelle ce logiciel aussi le noyaux (angl. :
kernel).
• Dans le sens large : Un ensemble de programme qui
viennent habituellement avec ce noyau (interfaces
graphiques, suites bureautiques, éditeurs de texte,
navigateurs, outils de programmation, . . . )
permettant d’exploiter une machine (ordinateur).
Définition d’un système d’exploitation
• Sans un SE, un ordinateur ne servira à rien !

• Un SE transforme le vulgaire matériel (machine


physique) de capacité limité en un outil très pratique
dont les capacités sont plus étendues (une machine
virtuelle).
Exemples de SE
• DOS (Disc Operating System)
• Microsoft Windows (plusieurs)
• Mac OS (aujourd’hui dérivée de BSD)
• GNU/Linux
• BSD (Berkely Software Distribution — plusieurs
variantes)
• GNU/Hurd
• OS/360, CP/M, OS/2, BS2000, Amiga OS, . . .
• Android (basé sur Linux),
• Firefox OS (basé sur Linux), Windows Mobile, Maemo,
Symbian
• etc
Place d’un SE dans un ordinateur
• Entre les ressources matérielles d'un ordinateur et les
applications de l'utilisateur (traitement de texte, jeu vidéo, …)
Utilisateur 1 Utilisateur 2 … Utilisateur N

Compilateur Editeur Base de données

Applications
Système d’exploitation

Matériel

• NB : Un ordinateur est composé : https://en.wikipedia.org/w


1. Du matériel (Dispositifs physiques, Langage machine) iki/Operating_system
2. D’un système d’exploitation
3. De programmes (Programmes système, Programmes d’applications)
Matériel : Hardware
• Tout les dispositifs physiques de l’ordinateur
• Le hardware constitue la couche la plus basse
de l’ordinateur.
• Le hardware composé :
– de processeurs,
– De la mémoire principale,
– des disques,
– des imprimantes
– des interfaces de connexion réseau
– etc
Rôles d’un SE
• Il contrôle les ressources de l’ordinateur (gérer
les accès)
– mémoire, disque, accès réseau, . . .
• Il libère le programmeur de la complexité du
matériel en lui donnant vue abstraite de la
machine .
Exemple de tâche:
– Lire un bloc de fichier
– Imprimer un fichier
– donner une interface commune pour écrire sur un fichier qui
peut se trouver sur disque, ou disquette, ou sur le réseau.
Composition d’un SE
• D’un noyau (kernel):
– partie la plus critique d’un SE.
– Il permet aux éléments matériel et logiciel de communiquer entre eux,
de fonctionner ensemble et de former un tout.
– il est le premier logiciel chargé en mémoire.

• Des outils système (utilitaires – shell):


– partie permettant à l’utilisateur de tirer profit de l’OS,
– permettent de gérer les périphériques, les configurer …E
– ils fournissent donc une interface d’accès au système.

• bibliothèques dynamiques (libraries) :


– Regroupent les opérations souvent utilisées, selon les
fonctionnalités (E/S, fichier, …)
Mode noyau/utilisateur
• Mode Kernel ou Mode superviseur
– Kernel : Espace d'exécution du SE
– Le noyau (kernel) est un espace mémoire isolé et
protégé, dans lequel est placé tout ou partie du
système d'exploitation.
• Mode Utilisateur :
– Espace d'exécution des processus pour le compte
d'un utilisateur.
Exemple : l'architecture Windows NT
Programmes : Software
• Appelés aussi applications
• ils sont écrits
– par les utilisateurs
– ou par les éditeurs de logiciels
• But: résoudre des problèmes spécifiques tels
que:
– le traitement des données commerciales,
– les calculs scientifiques,
– etc.
Fonctions d’un SE
Un système d’exploitation permet de répondre à
deux besoins qui ne sont pas forcément liés :

• le système d’exploitation  machine étendue


(ou « machine virtuelle »),

• le système d’exploitation  gestionnaire de


ressources.
SE comme machine étendue
• Le système d’exploitation correspond à « l’interface »
entre les applications et le matériel.

• De ce point de vue le système d’exploitation peut être


assimilé à une machine étendue ou virtuelle plus facile
à programmer ou à utiliser que le matériel :
• Un programmeur va utiliser le système d’exploitation
par l’intermédiaire “ d’appels système ”.

• Un utilisateur peut lui aussi – dans une certaine


mesure – manipuler un système d’exploitation, sans
pour autant avoir à créer un programme à travers les
commandes ( shell).
SE comme gestionnaire de ressources
• Faire coopérer les différents composants d’un ordinateur
• Faire partager des ressources les ressources entre les
composants.

• Dans cette optique, le travail du système d’exploitation


consiste à :
– Ordonnancer les processus
– contrôler l’allocation des ressources :
• processeurs,
• mémoires,
• périphériques d’E/S,
• ...
entre les différents programmes qui y font appel.
SE comme gestionnaire de ressources
• Pour chaque ressource de l’ordinateur, le système
d’exploitation doit :
– connaître à tout moment l’utilisateur de la ressource,
– en accorder l’usage de manière équitable,
– éviter les conflits d’accès entre les différents
programmes ou utilisateurs.

• Les deux tâches essentielles du SE en tant que


gestionnaire des ressources sont :
– Le partage des ressources.
– La protection de l'accès aux ressources.
Fonctionnalités de base d’un SE
1. La gestion des processus
qui correspondent à l’exécution des programmes.
2. La gestion de la mémoire
qui permet de gérer les transferts entre les mémoires principale et
secondaire.
3. Le système de fichiers
qui offre à l’utilisateur une vision homogène et structurée des
données et des ressources : disques, périphériques.
4. Les entrées-sorties
qui correspondent aux mécanismes qu’utilisent les processus pour
communiquer avec l’extérieur.
5. La gestion des utilisateurs :
pas d’interférence entre eux.
Autres Fonctionnalités du SE
1. Les réseaux d’ordinateurs
- avec les protocoles de communication, d’interconnexion
et d’application.
2. Les systèmes répartis
- avec les protocoles d’appels de procédures à distance
(RPC)
- ou les objets distribués.
3. Les systèmes de fenêtrage graphiques.
Types de systèmes d’exploitation:
• Différents types de systèmes d’exploitation:
– Monolithiques
– Modulaire / Multicouches
– Micronoyaux
– Exonoyaux
– Machine virtuelle
• Le noyau est généralement exécuté dans un espace
mémoire séparé de l’espace des applications: espace
noyau/espace utilisateur. Le passage entre ces deux
espaces se fait via des appels systèmes. L’intérêt de
cette séparation est que le système ne crashe(se
plante) pas si une application plante.
Systèmes d’exploitation Monolithiques
• Un seul bloc contenant Application Application Application

l’ensemble des services


système (mode noyau).
• Facilité de conception service
service
service service
Système
service d’exploitation

• Performance peut être service


service service

au RDV …
• Code dur à maintenir Matériel

• Dos, très vieux UNIX et


Linux, etc.

22
Systèmes d’exploitation Multicouches
– OS organisé en hiérarchie de
couches. Chacune construite Application Application Application
sur la base des services
offerts par la couche
inférieure. service service

– Facilité de conception et de
service
développement Système
d’exploitation
– Code plus organisé et service service

maintenable. service service service

– Chargement des
fonctionnalités à la demande
Matériel
– Linux, BSD, SOLARIS
23
Systèmes d’exploitation Micronoyau
• Déplace plusieurs fonctions du SE vers des « processus serveur »
s’exécutant en mode utilisateur  réduction au maximum de la taille du
code privilégié (en mode noyau).
• But: gérer les communications entre applications et serveurs pour:
– Renforcer la politique de sécurité
– Permettre l’exécution de fonctions système (accès aux registres d’E/S, etc.).
• Fiabilité augmentée: si un processus serveur « crash », le système continue à
fonctionner et il est possible de relancer ce service sans redémarrer.
• Modèle facilement étendu à des systèmes distribués
• Exemples : MAC OS X, GNU HURD, Windows NT

Processus Processus Processus Serveur de Serveur de Serveur de


Mode utilisateur
client client serveur terminaux fichiers mémoire

Mode noyau
Micronoyau

Source: « Systèmes d’exploitation », Andrew Tanenbaum,


2ème édition, Pearson Education 2001
Systèmes d’exploitation Exonoyaux
• Le noyau se contente de multiplexer
et protéger l’accès aux ressources.
• Tout le traitement qu’on trouve Application Application Application
habituellement dans un noyau

Espace utilisateur
(mémoire virtuelle, système de
fichiers, ...) est délégué à l’espace
utilisateur via des bibliothèques LibOS1 LibOS2 LibOS3
appelées «LibOS».
• Plusieurs LibOS peuvent être
utilisées en parallèle. exonoyau
• Gain de performance
• Isolation de bugs
Matériel
• Problème de sécurité
• Domaine encore balbutiant.
Systèmes d’exploitation Machine virtuelle

• Possibilité de mettre plusieurs Application Application Application Application

SE sur une machine physique.

Machine Virtuelle
– Le moniteur de machine Système d’exploitation
invité
Système d’exploitation
invité
virtuelle (hyperviseur)
intercepte les instructions
privilégiées envoyées par le SE Moniteur de machine virtuelle
invité, les vérifie (politique de
sécurité) et les exécute.
Système d’exploitation hôte
• XEN, VMWare, VirtualBox,
QEMU, etc.
Couche matériel
Autre classification des SE
• Système pour mainframe : grande capacité à gérer
plusieurs jobs en même temps

• SE « serveur » : destiné aux partages de resources matérielles


et logicielles sur de gros micro-ordinateur, workstations et mainframe.
Exemple : Unix et Windows 2k

• SE temps partagé: garantir le partage équitable du temps


processeur et des ressources dans le but de maximiser le temps de
traitement et de réduire le temps de réponse moyen.

• SE temps réel: garantir les temps de réponse


Autre classification des SE
• SE embarqué: SE prévus pour fonctionner sur des machines de petite
taille, (PDA ou des appareils électroniques autonomes: sondes spatiales,
robot, ordinateur de bord, etc.), possédant une autonomie réduite  gestion
avancée de l'énergie et des ressources limitées … Exemples : PalmOS et
Windows CE(Consumer Electronics), iOS, Android (basé sur Linux)

• Système multiprocesseurs : plusieurs CPU sur une même plate-


forme, Appelés multi-ordinateur, ou ordinateur parallèle ou multiprocesseur

• Système personnel : Fournir à l’utilisateur une interface conviviale

• Système pour smart cards: petit SE sur des périphériques de taille de


cartes de crédit contenant un CPU.
Autre classification des SE
• Système d'exploitation monotâche : exécution
d’une seule tâche à la fois.
• Système d'exploitation multitâches : l'exécution
simultanée de plusieurs programmes. Tous les
systèmes d'exploitation actuels sont multitâches.
• Système d'exploitation monoutilisateur: utilisé par
un seul utilisateur à la fois
• Système d'exploitation multiutilisateurs : utilisé
simultanément par plusieurs usagers, souvent à
travers un réseau informatique (notion de
serveurs).
Historique des SE
• 1er ordinateur numérique : celui de babbage
• 1ère programmeuse : Ada Lovelace
• Quatre générations des SE
• 1ère Génération (1945-1955) :Tubes à vide et tableaux
d’interrupteurs
• Les relais mécaniques
• Temps de cycle mesuré en seconde (s)
• Relais remplacé par les tube à vide
• Taille énorme (remplissaient des pièces)
• Programmation en langage machine par basculement des
tableaux d’interrupteur
• Pas de langage de programmation
• 1950s, insertion des cartes perforées  Programmes sur les
cartes perforées au lieu de tableau d’interupteur
Historique des SE
• 2ème Génération (1955-1965) : Transistors et système par lot
• Séparation du rôles de concepteur, constructeur, opérateurs,
programmeur et personnel de maintenance
• Mainframes
• Apparition des langages de programmation (Fortran, Assembleur,…)
• Codage sur les cartes perforées
• Soumissons par jobs
• Amélioration  système de batch (traitement par lot)
• Exemples : FMS(Fortran Monitor System) et IBSYS (IBM 7094)
• 3ème Génération (1965-80) :
• Utilisation des circuits intégrés
• Multiprogrammation
• Partition de la mémoire
• Spoulage ou spoul (simultaneous peripherical operation online)
• Temps partagé
• Exemple : Multics, Dec PDP-1, Unix Linux
Historique des SE
• 4ème Génération
– Cicuirt LSI (Large Scale integration)
• CP/M (Control Program for Microcomputer) mis au
point par Kildall
• DOS  Seatle Computer Product rachète par IBM
• MS-DOS  Microsoft de Bill Gate
– IHM graphique inventé par Douglas Engelbart
• Macintosh, Windows
– SE réseau et SE distribuées
Fonctionnement en mode double
• Au moment d’initialiser le système, le matériel
démarre en mode superviseur
• Ensuite le SE est chargé et démarre les processus
utilisateurs en mode utilisateur
• Chaque fois qu’un déroutement (trap) ou une
interruption se produit, le matériel commute du mode
utilisateur au mode superviseur
• Chaque fois que le SE prend le contrôle de l’ordinateur,
il est en mode superviseur
• Le système commute toujours au mode utilisateur
avant de donner la main à un programme utilisateur
Appels système (1)
• Un appel système est une fonction fournie par le noyau (kernel) d’un SE
et utilisée par les programmes s’exécutant dans l’espace utilisateur (en
d’autres termes, tous les programmes distincts du noyau).
• Le rôle du noyau est de gérer les ressources matérielles et de fournir aux
programmes une interface uniforme pour l’accès à ces ressources.
• Quelques appels systèmes classiques :
– open, read, write et close qui permettent les manipulations sur les systèmes
de fichiers,
– alloc, free pour allouer et desallouer de la mémoire.
• Sur la majorité des systèmes d’exploitations, les appels système peuvent
être utilisés comme de simples fonctions écrites en C.
• Sur la plupart des noyaux (notamment les noyaux monolithiques comme
le Noyau Linux) les appels systèmes sont implémentés par une instruction
machine (interupt, supervisor call, ...) qui fait basculer le processeur en
mode superviseur (en ayant convenablement passé les paramètres de
l’appel système, par exemple dans les registres).
Appels système (2)
• Un appel système est atomique (il s’est exécuté -
éventuellement en erreur- ou pas).
• Catégorie d’appels système
1- Contrôle de processus:
charger, exécuter, créer, terminer des processus, obtenir,
signaler des événements, libérer de la mémoire, etc.
2- Manipulation de fichiers:
créer, supprimer, ouvrir, fermer, lire, écrire, repositionner, etc.
3- Gestion de périphériques:
demander, libérer, obtenir, attacher, etc.
4- Entretien d’information:
obtenir, définir l’heure ou la date, définir les données du systèmes
5- Communications
créer, supprimer des connexions de communication, envoyer,
recevoir de messages, transférer des informations sur les états, etc
Démarrage d’un ordinateur (1/2)
• Quand l’ordinateur est allumé, le code trouvé
dans le premier secteur du disque de boot est lu
dans la mémoire et exécuté.
– Dans une disquette, ce secteur contient le
programme d’amorçage (bootstrap program).
– Dans un disque dur, ce secteur contient un petit
programme et une table de partitions (un disque dur
est divisé en partitions).
• Le programme est exécuté pour lire la table de partitions et
sélectionner la partition active.
• La partition active possède un programme d’amorçage dans
son premier secteur qui est alors chargé et exécute (comme
dans le cas de la disquette).
Démarrage d’un ordinateur (2/2)
• Programme d’amorçage (bootstrap program):
– Initialise tous les aspects du système (CPU, contrôleurs de
périphériques, mémoire)
– Charger/démarrer le système d’exploitation
1. Trouver et charger en mémoire le noyau (kernel) du SE
2. SE exécute le premier processus (init) et attend un
événement (interruption)
• Interruption : événement qui modifie le flux de commande
d’un programme
1. Interruptions matérielles : permettent la prise en
compte d’une requête de service système (mémoire,
contrôleur de périphérique, clavier, lecteur, ...). À tout
moment le matériel peut activer une interruption.
2. Interruptions logicielle : Activée par l’exécution d’un
appel système (system call ou monitor call)
Interpréteur de commande Windows
• cmd.exe est l'interpréteur de commande en mode texte de
Windows. Il est l'équivalent du shell sous Unix. Il peut interpréter
des fichiers batch qui sont des fichiers textes contenant une série
de commandes. Les fichiers batch de Windows sont des fichiers
dotés de l’extension .BAT (ou .CMD).
• Sous Windows, l'appellation "shell" regroupe deux concepts :
➢ Comme pour Unix, l'interpréteur en ligne de commande
(command.com pour les versions de Windows basées sur MSDOS,
et cmd.exe pour celles qui reposent sur Windows NT)
➢ L'interface graphique, en général l'Explorer.
• Avec Windows Vista est apparu un nouvel interpréteur de
commande, le Windows PowerShell.

Vous aimerez peut-être aussi