Vous êtes sur la page 1sur 39

Cours

Système d’exploitation
Sid-Ahmed Berrani

ENP – 1re année


2022 – 2023
1
Objectif du cours
Etudier les bases des systèmes d’exploita4on :
1. Qu’est ce qu’un système
d’exploita4on?
2. A quoi cela sert ? Pourquoi as-t-on
besoin de systèmes d’exploita4on.
3. Comment sont-ils architecturés et
implémentés ?

2
En particulier
Les mécanismes et les politiques pour :
• la gestion des processus ;
• les threads et la gestion de la concurrence ;
• la gestion des ressources : ordonnancement, gestion de la
mémoire ;
• les services de communication et les E/S ;
• aperçu sur les systèmes de gestion pour les data-centres et les
environnements clouds (optionnel).

3
Théorie + Pratique
Plusieurs travaux pra.ques :
• Threads, concurrence et la synchronisa.on.
• Communica.on inter processus, ordonnancement.
• Évalua.on expérimentale.

=> Programma.on en C sous Linux.

4
Références
• Opera&ng system concepts (Silberschatz, Galvin, Gagne).
• Modern opera&ng systems (Tananbeum&Bos).
• Opera&ng Systems (R. Arpaci-Dusseau & A. Arpaci-Dusseau).

5
Système d’exploitation
Introduction
• Définition:
Un logiciel permettant d’utiliser (exploiter) un système
informatique.
En anglais : operating system → opérateur

6
Système d’exploita1on
Introduc1on

7
Système d’exploita1on
Rôle
S’ar%cule autour des 5 A :
1. Aide
2. Abstrac%on
3. Augmenta%on
4. Arbitrage
5. Autorisa%on

8
Système d’exploitation
Rôle
1. Aide
• APIs de périphériques sont souvent complexes :
• Accès à toutes les fonctionnalités (même celles qui sont peu utilisées)
• Gérer toutes les situations (même exceptionnelles)

Objectif : Simplifier l’accès aux périphériques


• Masquer la complexité.
• Factoriser les traitements récurrents.

→ Modularité, maintenabilité du code


9
Système d’exploita1on
Rôle
2. Abstraction
• Différents périphériques rendent des services similaires :
• disques durs de marque/capacité différentes
• bande magnétique / disque dur / mémoire flash…

Objectif : exposer une Abstraction des périphériques


• fonctionnalités réduites
• réutilisabilité accrue

→ Portabilité du code
10
Système d’exploita1on
Rôle
3. Augmentation
• Des ressources non-disponibles peuvent être simulées :
• Multi-tâche
• Mémoire virtuelle

Objectif : Étendre (virtuellement) les ressources


• Repousse les limites du système
• Eventuellement au prix des performances

→ portabilité accrue
11
Système d’exploitation
Rôle
4. Arbitrage
• Contexte multi-tâche
• Nécessité de répartir l’accès aux ressources
• Conséquence de l’abstraction

Objectif : Arbitrer l’accès aux ressources

→ fiabilité du système

12
Système d’exploitation
Rôle
5. Autorisa,on
• Contexte mul+-u+lisateur
• vie privée, intégrité du système
• Contexte mono-u+lisateur non expert
• confiance limitée dans certaines applica+ons

Objec,f : Limiter l’accès aux ressources

→ Sécurité du système

13
Système d’exploitation
Du point de vue du programmeur

14
Système d’exploitation
Un peu d’histoire
L’ancêtre des systèmes d’exploitation : UNIX.
• Développé par Ken Thomson & Dennis Ritchie (Bell Labs) à partir de
1969
• Initialement nommé Unics (en référence à Multics)
• Remplace le système d’exploitation du PDP-7, puis du PDP-11
• Ré-écrit en C en 1971 : portabilité, évolutivité

15
Système d’exploitation
Un peu d’histoire
Évolu&ons d’UNIX :
• Unix system V (AT&T) → Linux (1992), Android (2007)
• BSD → OpenBSD, FreeBSD, Mac OS X (1999)
• POSIX (norme IEEE, Unix Portable, 1998)
• → l’héritage d’UNIX est encore très présent

16
Système d’exploitation
Les innovations d’UNIX
Deux innovations majeures
1. Unification des entrées/sorties
• Abstraction : notion de fichiers.
• Autorisation : système unique de permissions.

2. Notion de processus
• Arbitrage : unité d’accès aux ressources.
• Augmentation : temps partagé.

→ Encore présentes dans tous les systèmes actuels.


17
Système d’exploitation
Des aspects connexes
Hyperviseur
• Logiciel perme,ant d’exécuter un ou plusieurs systèmes
d’exploita8on (superviseurs) dans un environnement matériel virtuel
(ou « machine virtuelle »).

Exemples :
• VMWare
• VirtualBox
• Parallels
• Xen
18
Système d’exploita1on
Du point de vue du programmeur

De nombreux langages aujourd’hui ne sont plus compilés


dans le langage machine, mais dans un langage machine
abstrait, interprété ensuite par une « machine virtuelle ».

Exemples :
• Java (Scala, Clojure, Groovy…) • Java = Compile once, run everywhere
• Javascript • C/UNIX = Write once, compile everywhere
• Perl, Python, Ruby, Lua … • Langages interprétés = Write once, run everywhere
19
1. Noyaux et appels systèmes
Notions de base
Modes d’exécu,on
• Le processeur possède plusieurs modes d’exécu,on :
Au minimum un mode superviseur et un mode u(lisateur.

• D’autres modes peuvent exister, selon les plateformes :


• Différents « niveaux » uAlisateur ou superviseur.
• Mode hyperviseur dédié à la virtualisaAon.

20
1. Noyaux et appels systèmes
Notions de base
Modes d’exécu,on
• Mode superviseur (également appelé mode noyau) :
Toutes les instruc;ons sont autorisées.
• Mode u;lisateur :
Certaines instruc;ons sont interdites ou limitées.
(par exemple: plage d’adresses mémoire autorisées)

L’u;lisa;on d’une instruc;on interdite déclenche une erreur.

→ Les applica;ons doivent toujours s’exécuter dans ce mode.


21
1. Noyaux et appels systèmes
Notions de base
Les interruptions :
Ce sont des événements entrainent un comportement particulier
du processeur.

• Ces événements peuvent être de différents types :


• Erreurs logicielles (e.g. division par zéro).
• Interruptions matérielles (selon le périphérique).
• Appels systèmes (qui seront décrits plus tard).

22
1. Noyaux et appels systèmes
Notions de base
Lorsqu’une interruption se produit :
• Selon son type, le processeur choisit le bon gestionnaire d’interruption.
• Il passe en mode « superviseur ».
• Il sauvegarde le contexte (état des registres) du programme courant.
• Il exécute le gestionnaire d’interruption.
• Il restaure le contexte sauvegardé et reprend le programme courant
(dans le bon mode d’exécution).

23
1. Noyaux et appels systèmes
No1ons de base
Les interruptions : des exemples…

24
1. Noyaux et appels systèmes
Notions de base
Les interruptions fonctionnent sur le même principe que celui de la
programmation événementielle :
• Paradigme utilisé entre autres pour la programmation des interfaces
graphiques.
• On ne décrit pas l’ordre dans lequel les différentes procédures doivent être
exécutées.
• Chaque procédure est attachée à un événement particulier
• Clic sur un bouton, fermeture d’une fenêtre, etc.

• L’ordre d’exécution est déterminé par les événements.

25
1. Noyaux et appels systèmes
No1ons de base
Les interrup+ons matérielles
• Les périphériques u.lisent des interrup+ons matérielles pour
no.fier le processeur d’un événement
• Directement sollicité (e.g. demande de lecture ou d’écriture sur un
disque dur)
• ou non (e.g. données disponibles depuis le réseau, le clavier, la
souris…).
→ Le noyau du système d’exploita.on a donc la main au début et à la
fin de chaque opéra.on d’entrées/sor.es.
26
1. Noyaux et appels systèmes
Principes
• Le noyau (en anglais kernel) du système d’exploitation est un
ensemble de gestionnaire d’interruptions, chargés en mémoire au
démarrage du système.

• Lorsqu’une application, qui s’exécute en mode utilisateur, souhaite


accéder à une ressource, ou plus généralement invoquer une
fonction du système, elle procède à un appel système.

27
1. Noyaux et appels systèmes
Déroulement d’un appel système
• Le programme applica/f décrit le service souhaité en renseignant
des registres dédiés.
• Il déclenche une interrup/on d’un type par/culier, ce qui passe la
main au noyau.
• Ce dernier exécute (en mode superviseur) la fonc/on requise (ou
refuse, le cas échéant), et inscrit le résultat dans un registre dédié.
• Il rend la main au programme de l’applica/on, en mode u'lisateur.

28
1. Noyaux et appels systèmes
Démarrage du système
• Au démarrage, les ges0onnaires d’interrup0on qui cons0tuent le
noyau sont chargés en mémoire aux emplacements définis.

• Le noyau passe ensuite la main à un programme applica0f, en mode


u'lisateur (exemple : shell, environnement graphique).

• Le noyau « aFend » ensuite les interrup0ons pour s’exécuter.

29
1. Noyaux et appels systèmes
Bibliothèque système
• Le mécanisme d’appel système est généralement encapsulé par une
bibliothèque.
• Les appels systèmes se présentent donc comme des fonctions /
procédures classiques.

Cependant, elles cachent un coût supérieur à des appels de fonction


classiques (interruption logicielle, changement de mode)

→ parfois nécessaire de minimiser le nombre d’appels systèmes pour


des raisons d’optimisation.
30
1. Noyaux et appels systèmes
Discussion
Ce mécanisme permet bien au système d’exploitation de remplir ses
fonctions d’arbitrage et d’autorisation :
• L’accès aux ressources (périphériques, fichiers, etc.) passe forcément
par les « appels systèmes », et est donc soumis au contrôle du
système d’exploitation.
• Toute tentative d’accéder aux ressources sans passer par les appels
systèmes déclenchera une interruption de type « instruction
interdite », qui renvoie également au noyau (gestionnaire
d’interruption).

31
1. Noyaux et appels systèmes
Temps partagé
Le principe du temps partagé consiste à mettre à profit les temps de latences liés
notamment aux entrées/sorties pour exécuter plusieurs programmes en parallèle.

À la fin de chaque gestionnaire


d’interruption, le système
d’exploitation décide à quel
processus il va rendre la main.

32
1. Noyaux et appels systèmes
Ordonnanceur
• L’ordonnanceur (en anglais scheduler) est la par1e du système
d’exploita1on qui est chargée de l’arbitrage du processeur.
• Il est invoqué à la fin de chaque ges1onnaire d’interrup1on, afin de
déterminer à quel programme il faut ensuite passer la main.
• Son implémenta1on doit permeFre un compromis entre le surcoût
et un certain nombre de critères qui dépendent du type de système
d’exploita1on et des souhaits de l’administrateur système.

33
1. Noyaux et appels systèmes
Ordonnanceur
• Équité :
Propriété d’un ordonnanceur garan3ssant à tous les processus
les même chances d’obtenir le processeur.

• Famine (en anglais starva&on) :


Situa3on dans laquelle un processus a>end indéfiniment le
processeur.

34
1. Noyaux et appels systèmes
Ordonnanceur
• Préemtion :
Un périphérique dédié, l’horloge, émet une interruption à intervalle
régulier.
Avantage : garantit un arbitrage régulier par préemption.
Inconvénient : surcoût en temps de calcul.

35
2. Les Processus
Introduction
• Défini&on: Un processus est une instance d’un programme
qui s’exécute.

• = « tache », « job » ou « travail ».

36
2. Les Processus
Introduc0on
• Il a un état d’exécu.on :
• compteur de programme, la pointeur sur la pile…
• Il dispose de zones et de ressources allouées temporairement :
• données, état des registres CPU, occupa.on mémoire…
• Il peut avoir besoin de ressources matérielles spécifiques :
• e.g. périphériques d’entrée/sor.es…

37
2. Les Processus
Introduction
• Le système d’exploitation gère les
ressources matérielles pour le
comptes des applications.
• Une application : un programme qui
est stockés sur disque ou su, dans le
cloud… C’est une entité statique.
• Un processus : l’état d’un programme
en cours d’exécution, chargé en
mémoire… C’est une entité active.
38
2. Les Processus
Introduc0on
• Un programme peut être lancé plusieurs fois => plusieurs
processus sont créés.

39

Vous aimerez peut-être aussi