Vous êtes sur la page 1sur 183

Système d'exploitation

Operating system

Karam Ahkouk

Dép GI, EST Agadir, Université Ibn Zohr 1


L’objectif

2
Objectif
Système d'exploitation:
- Concepts de base d’un système d’exploitation : définitions, présentation.
- Historique des systèmes d’exploitation
- Types, caractéristiques des systèmes d'exploitation
- Environnement informatique sous Unix, Windows et MacOS
- Système d'exploitation Windows et Installation de Linux.
- Ordonnancement des processus
- Exclusion mutuelle
- Gestion de mémoire
- Gestion des entrées/sorties
- Gestion des disques, notions de partitionnement, de montage de volumes
physiques et logique.
- Manipulation des processus Linux : contrôle, redirections, tâche de fond,
filtres.
- Programmation de scripts sur Linux.
- Gestion des services.

3
Qu'est ce qu'un Système
d‘Exploitation?

4
Un Système d‘Exploitation
• Définition

– Est un logiciel qui pilote les dispositifs matériels et


reçoit des instructions de l'utilisateur ou d'autres
logiciels (ou applications).

5
Rôle d’un Système d‘Exploitation
Rôle:
– Gérer le ou les processeurs et la mémoire
– Gérer les périphériques
– Contrôler les autres logiciels et applications dès le
démarrage
– Joue le rôle d’intermédiaire entre les utilisateurs/
applications et le matériel.

6
Rôle d’un Système d‘Exploitation

7
Rôle d’un Système d‘Exploitation

8
Les Générations des
systèmes d'exploitation

9
Les Générations des systèmes
d'exploitation

• Cinq générations:
– Par lots (batch)
– Multi programmés
– En temps partagé
– Temps réel
– Distribués

10
Les Générations des systèmes
d'exploitation

• Par lots (batch):


– Un système de traitement par lots (batch)
– L'exécution de grands calculs les uns après les
autres
– Peu d'intervention utilisateur.

11
Les Générations des systèmes
d'exploitation

• Multi programmés:
– Plusieurs programmes sont exécutés
simultanément par planification
– Se base sur les interruptions d'E/S
– Plusieurs programmes dans la mémoire
– Suspension régulière de l'exécution d'un
programme pour continuer l'exécution d'un autre

12
Les Générations des systèmes
d'exploitation

• En temps partagé:
– Dépend du temps nécessaire pour basculer entre
les différents processus
– Plusieurs utilisateurs sont simultanément
connectés
– Répondre rapidement aux demandes de
l'utilisateur
– Donner à chaque utilisateur l'impression qu'il est
le seul à utiliser l'ordinateur

13
Les Générations des systèmes
d'exploitation

• Temps réel:
• Apparus dans les années 1970
– Donner des résultats correctes dans un délai
déterminé
– Utilisés souvent dans l’industrie avec des
(capteurs, périphériques, etc…)
– Retard de réponse = échec de l'appareil

14
Les Générations des systèmes
d'exploitation

• SE Distribués:
– Le partage des ressources entre les ordinateurs
– Un utilisateur d'un ordinateur A peut utiliser les
ressource d’un autre ordinateur B
– Utilises les capacités d'un réseau informatique,
contrôle un groupe de machines, et les fait
apparaître comme une machine unique, virtuelle,
de très grande capacité

15
Historique des Systèmes
d‘Exploitation

16
Historique des Systèmes d‘Exploitation
• Unix en 1969:
– Créé par un groupe d’employés d’AT&T
– Le premier Unix était écrit en assembleur
– Dès 1973, presque tout Unix est réécrit en C
– Le OS était distribué sous forme de code source
– 1ers clients: les universités et centres de
recherches américains et les grands constructeurs
informatiques .

17
Historique des Systèmes d‘Exploitation
• Unix(les années d’après):
– Mono-user au départ
– L’existence de quelques utilitaires tell que cp et
rm et un interpréteur de commandes appelé shell.
– Commande fork ajouté l’année d’après
– Rapidement devenu multi-user
– Est devenu le noyau de plusieurs autres OS

18
Historique des Systèmes d‘Exploitation
• Unix(Aujourd’hui):
– Multi-tâches et multi-utilisateurs.
– Processus et noyau.
– Shell et commandes. Environnement C, C++.
– Environnement TCP/IP.
– Système ouvert.

19
Historique des Systèmes d‘Exploitation
• Linux(1991):
– Lancé par Linus, un étudiant de l'université
d'Helsinki (Finlande)
– 1ére version contienne quelques applications
comme le compilateur gcc ou le shell bash.
– Clone gratuit d’UNIX pour les PC,
– open source.

20
Historique des Systèmes d‘Exploitation
• Linux(1991- aujourd’hui):
– Son point faible réside dans son système de
fichiers
– Système de fichiers amélioré avec Ext2fs .
– Au départ existait sur les plateformes Intel puis
dans d’autres plateformes comme (Mac, Atari,
Amiga, Alpha)
– Plusieurs versions: Debian, Ubuntu, Linux Mint,
Fedora, CentOS, etc…

21
Historique des Systèmes d‘Exploitation
• Macintosh OS:
– Apparu en 1984
– Renommé en "Mac OS" in 1997
– Remplaçant de Apple series, Apple dos, etc…
– Le 1er à proposer le concept des fenêtres, du
glisser-déposer, la corbeille, le plug-and-play
– Aujourd’hui possède le noyau Linux, avec une
interface graphique élégante et ergonomique
– Optimisation particulière des traitements
multimédia
22
Historique des Systèmes d‘Exploitation
• MS-DOS (Microsoft Disk Operating System):
– 1ère version 1981
– De type DOS
– SE des premiers PC
– Mono-utilisateur
– Mono-tâche
– Interface en ligne de commande

23
Historique des Systèmes d‘Exploitation
• MS-DOS (Microsoft Disk Operating System):

24
Historique des Systèmes d‘Exploitation
• MS-Windows (Microsoft Disk Operating
System):
– Inspiré par Apple Lisa & l’interface Macintosh
– Au départ, une coquille graphique pour DOS.
– à partir de Windows 95 nous commençons à
assister à un transfert de nombreuses
fonctionnalités de DOS vers Windows

25
Historique des Systèmes d‘Exploitation
• MS-Windows (Microsoft Disk Operating
System):

26
Historique des Systèmes d‘Exploitation
• MS-Windows (Microsoft Disk Operating
System):

Apple Lisa Windows 3 27


Historique des Systèmes d‘Exploitation
• Windows NT (XP, Vista, 7, 8, 10, 11):
– Système d’exploitation indépendant de DOS.
– Créé au départ pour les entreprises et les serveurs
– Indépendant de MS-DOS
– Techniquement nettement supérieur à Windows
– Multi-utilisateurs
– Multi-tâches

28
Le marché des systèmes
d’exploitation
Les serveurs
Un serveur est une machine dont le rôle est d’héberger des données
ou des programmes afin de répondre aux demandes de ses clients.
Les postes de travail
Un poste de travail est destiné à un seul utilisateur, pour un usage
professionnel ou personnel. La grande majorité des postes de travail utilisent
un système d’exploitation de la famille Windows.
Les terminaux mobiles
Ces dernières années ont vu apparaître un grand nombre d’appareils
mobiles de plus en plus sophistiqués : téléphones portables, tablettes… Ces
périphériques embarquent des systèmes d’exploitation spécifiques ou des
versions modifiées de systèmes existants.

29
Windows, Linux et MacOs

30
Autres types de SE (1)
• Systèmes d’exploitation pour les
Smartphones:
– Android par Google
– IOS d’apple
– HarmonyOs
– Windows Phone
• La plupart des systèmes mobile basée sur un
noyau Linux

31
Autres types de SE (2)
• Systèmes d’exploitation pour les
SmartWatches:
– Wear OS par Google
– Apple Watch Os
– Tizen Os
– Harmony Os
– Garmin OS

32
Classes des systèmes
d'exploitation

33
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Mono-utilisateur/Mono-tâche
– Un seul utilisateur/une seule tâche à la fois
• Mono-utilisateur/Multi-tâches
– Un seul utilisateur à la fois exécute plusieurs
tâches simultanément
• Multi−utilisateurs/Multi-tâches
– Plusieurs utilisateurs à la fois exécutent chacun
plusieurs tâches simultanément et partagent les
mêmes ressources matérielles

34
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Mono-tâche
– Une seule tâche à la fois
– L’exécution d’une commande donne naissance à
une tâche
– Un programme lancé monopolise les ressources
de la machine jusqu’à sa fin d’exécution
– En cas de blocage du programme, tout le système
est arrêté : il faut redémarrer l’ordinateur

35
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Mono-utilisateur
– Un seul utilisateur à la fois
– Pas de notion de sessions des utilisateurs
– Un deuxième utilisateur doit attendre pour que la
machine soit libérée afin d’exécuter ses tâches
– Ces Systèmes ont quasiment disparu du paysage
des SE

36
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Multi-Tâches
– Un système multitâche permet l’exécution
simultanée de plusieurs programmes sur une
machine
– l’illusion d’une exécution en parallèle: Une
simultanéité apparente
– Chaque programme est exécuté tour à tour à un
rythme très rapide

37
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Multi-Tâches(Coopératif)
– L’application décide du moment où elle « rend la
main »
– Le système est dépendant des applications qu’il
accueille
– Un programme mal conçu peut monopoliser les
ressources ou bloquer le système en cas de crash

38
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Multi-Tâches(Préemptif)
– Remplace le multitâche coopératif
– Le système d’exploitation distribue les temps
d’exécution entre les différents programmes
– C’est le système qui décide du moment où il «
donne la main » à un autre programme
– Les ressources sont mieux partagées entre les
applications
– Une erreur dans un programme ne menace plus
l’ensemble du système

39
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

• Multi-Utilisateurs
– Autorise la connexion simultanée de plusieurs
utilisateurs
– Notion de sessions des utilisateurs
– Partagent les mêmes ressources matérielles
– Les utilisateurs ont le droit de demander
l’exécution simultanée des commandes

40
Classes des systèmes d'exploitation
Selon les contraintes d'utilisation

41
Classes des systèmes d'exploitation
Selon l’architecture du matériel

• Systèmes Mono-processeur
– Multiprogrammés et à temps partagé (pseudo-
parallélisme)
• Systèmes Parallèles : multiprocesseurs
– Traitement parallèle par plusieurs processeurs
– Grande capacité de traitement, temps de réponse
court et fiabilité

42
Les qualités des systèmes
d’exploitation
• Les systèmes d’exploitation peuvent être jugés suivant
différents critères :
– La robustesse (la protection de l’espace mémoire alloué à
chaque processus)
– La stabilité
– L’ouverture et la fiabilité (le nombre d’application qui sont
développées par les éditeurs indépendants pour
fonctionner avec tel ou tel système.)
– La rapidité de traitement
– L’interopérabilité avec d’autres systèmes
– La connectivité réseau
– L’approbation des utilisateurs

43
SE & Concepts de base

44
SE & Concepts de base
• Composants d'un ordinateur

45
SE & Concepts de base
Organisation d’un système informatique

• Organisation d’un système informatique

46
SE & Concepts de base
Fonctions d’un système d’exploitation

• Fonctions d’un système d’exploitation

47
SE & Concepts de base
Architecture d’un système d’exploitation

– Un système d’exploitation est typiquement


composé de:
• Un noyau.

• Des bibliothèques.

• Un ensemble d’outils système.

• Plusieurs applications de base.

48
SE & Concepts de base
Architecture d’un système d’exploitation

• Le Noyau (Kernel):
– Le composant central d’un système d’exploitation

– Interface entre le logiciel et le matériel

– Gère toutes les fonctions essentielles du matériel

– Il est chargé en mémoire vive durant le démarrage


de l’ordinateur (boot sequence).

49
SE & Concepts de base
Architecture d’un système d’exploitation

• Démarrage de l’ordinateur (Boot Sequence):


1. Mise sous tension du PC
2. Phase de POST (Power-On Self Test)
3. Trouver un périphérique de démarrage
4. Charger le système d’exploitation
5. Le transfert de contrôle

Après le démarrage, la mémoire est divisée en deux parties :


• L’espace noyau, réservé au noyau lui-même.
• L’espace utilisateur, dédié aux applications. 50
SE & Concepts de base
Architecture d’un système d’exploitation

• Fonctions essentielles du Noyau:


– Gestion des périphériques (au moyen de pilotes)
– Gestion de l’exécution des programmes
– Gestion de la mémoire attribuée à chaque processus
– Ordonnancement des processus
– Synchronisation et communication entre processus
– Gestion des fichiers (au moyen de systèmes de
fichiers) ;
– Gestion des protocoles réseau

51
SE & Concepts de base
Architecture d’un système d’exploitation

• Des bibliothèques:
– Servent à regrouper les opérations les plus
utilisées dans les programmes informatiques
– But: éviter la redondance de la réécriture des
opérations dans tous les programmes.
– Deux types de bibliothèques:
• les bibliothèques système
• Les bibliothèques utilitaires

52
SE & Concepts de base
Architecture d’un système d’exploitation

• Outils système:
– Configurer le système (gérer les comptes des
utilisateurs, configuration des paramètres réseau,
démarrage automatique des services, etc.) ;
– Passer le relais aux applications proposant des
services à un ou plusieurs utilisateurs ou à
d’autres ordinateurs, grâce au réseau par exemple.

53
SE & Concepts de base
Architecture d’un système d’exploitation

• Les programmes applicatifs de base:


– Des programmes applicatifs de base offrent des
services à l’utilisateur (calculatrice, éditeur de
texte, navigateur web, etc.)

– Ces programmes applicatifs sont souvent fournis


en paquet (bundle) avec le système d’exploitation

54
SE & Concepts de base
Modes d'exécution d’un SE

• Mode noyau : protégé et réservé au SE


– Accès au code et données utilisées par le SE
Lecture et écriture sur les ports d’E/S
– Permet de protéger les données sensibles
• Mode utilisateur : non protégé
– Exécution des programmes des utilisateurs
– Permet à l'utilisateur de modifier des données de
son programme

55
SE & Concepts de base
Appels systèmes

• Un appel système ou syscall est


une méthode utilisée par les programmes
d'application pour communiquer avec le
noyau du système
• Lien entre le mode utilisateur (User Mode) et
le mode noyau (Kernel mode)

56
SE & Concepts de base
Appels systèmes

• Interface entre les programmes utilisateurs et


le SE

57
SE & Concepts de base
Appels systèmes

58
Gestion des processus

59
C’est quoi un processus
• Un processus est un programme en exécution
• L’exécution d’un processus doit progresser
séquentiellement
• à n’importe quel moment une seule
instruction au plus est exécutée au nom du
processus
• Processus ≠ Programme

60
à quoi ça sert un processus?
• À faire plusieurs activités ”en même temps”
• Problème:
– Un processeur ne peut exécuter qu’une seule
instruction à la fois.
• BUT:
– Partager un processeur entre différents processus.
• Attention!!!
Ne pas confondre processus et processeur

61
Hiérarchisation des processus
UNIX
• Sous UNIX :
– Un processus peut créer un autre
• Processus créateur: Processus Père
• Processus créé: Processus Fils
– Le père et l’enfant continuent d’être associés.
– L’enfant peut lui-même créer d’autres processus
– Un processus a un seul parent et peut avoir 0 ou
plusieurs fils
– Formation d’une hiérarchie de processus depuis le
processus N° 1 (init)
62
Hiérarchisation des processus
UNIX
• Sous UNIX :
– Au démarrage:
• Le swapper est créé (Processus N°0)
• Le swapper va ensuite créer deux autres processus:
– le processus init
– le processus [kthreadd]
– swapper s’endort.
– Deux espaces créé:
• Espace utilisateur avec init au sommet
• Espace noyau avec [kthreadd].

63
Hiérarchisation des processus
UNIX

64
Hiérarchisation des processus
Windows
• Sous Windows:
– Pas le cas, Gestion complexe des processus
– Un processus peut créer un autre
• Processus créateur: Processus Père
• Processus créé: Processus Fils
– le processus enfant continuera à s'exécuter si son
processus parent s'est terminé.

65
Hiérarchisation des processus
Création de processus (POSIX)

• fork est le seul appel système de création de


processus.
– Le fils hérite l’environnement du père
(environnement d’exécution, variables système)
– C’est une copie et non un partage
– Le fils reçoit un identifiant (numéro): PID différent
de celui de son père PPID
– Si un processus devient orphelin, il est adopté par
le processus initial (PID = 1)
– Processus orphelin ≠ process zombie
66
Hiérarchisation des processus
Création de processus (POSIX)

• Fork()

67
États des processus
• Quand un processus s’exécute, il change d’état.
• États
– En exécution: Les instructions sont en cours d’exécution
(en train d’utiliser la CPU).
– En attente: Le processus attend qu’un événement se
produise.
– Prêt: Le processus attend d’être affecté à un processeur.
• Un seul processus peut être en exécution sur n’importe
quel processeur à tout moment.
• Toutefois, plusieurs processus peuvent être prêts et en
attente

68
États des processus

69
États des processus
• État Zombie d’un processus (sur unix):
– C’est un processus achevé,
– mais dispose toujours d'un identifiant de processus (PID)
– Encore visible dans la table des processus
– Un processus Zombie ne peut plus être achevé(Déjà mort)
– Le processus n’est supprimé définitivement que lorsque
son père est notifié (Obtention du code de fin du
processus fils)

70
États des processus

71
États des processus
• Point de vue conceptuel: chaque processus
possède son processeur virtuel.
• Réalité: le processeur bascule constamment d’un
processus à l’autre.
• Ce basculement rapide est appelé
multiprogrammation.
• La vitesse de traitement d’un processus donné
n’est pas uniforme et non reproductible
Pseudo-parallélisme:
Les processeurs sont capables de faire plusieurs choses en même temps.

72
États des processus
• Le processeur est commuté entre plusieurs
processus
• Un seul processus est exécuté à la fois
• Tous les processus progressent (Pseudo
parallélisme)

73
Fin d’un processus
• Types d’arrêt:
– Arrêt normal (volontaire) (exit)
– Arrêt pour erreur (volontaire)
– Le processus est arrêté par un autre processus
(involontaire) (kill)

74
Fin d’un processus
• Un processus est détruit en général à la fin de
son exécution
• Il peut être détruit à la demande d'un autre
processus ayant ce droit (comme le père)
• Lorsqu'un processus est détruit, son PCB et
ses ressources sont libérés
• La destruction du père peut entraîner celle de
sa descendance (kill process group)

75
SE & Processus
• Un processus est représenté dans le SE par un PCB

76
PCB: Bloc de contrôle de processus
• Le PCB contient:
– L’état du processus.
– PID, PPID, UID
– Compteur d’instructions (CO): indique l’adresse de l’instruction
suivante devant être exécutée par le processus.
– Les registres du processeur, Informations sur l’ordonnancement
de la CPU
– Informations sur la gestion de la mémoire.
– Informations sur l’état des E/S: liste des périphériques E/S
allouées à ce processus, une liste des fichiers ouverts, etc.
– Etc…

77
Informations sur les processus
(Linux)
• Sur Linux:
– ps

– ps -lf

78
Informations sur les processus
(Windows)
• Sur Windows:
– tasklist

79
Ordonnancement des
processus

80
Ordonnancement des processus
• Dans un système multitâche:
– le processeur ne peut, à un moment donné,
exécuter qu’une instruction (d’un programme) à la
fois.
• L’ordonnanceur (scheduler):
– Est le module du SE qui s’occupe de sélectionner
le processus à exécuter parmi ceux qui sont prêts.

81
Ordonnancement des processus
• Le processeur bascule successivement d'un
processus à l'autre à chaque fin de quantum
• Le processeur est commuté également suite à
un appel système ou une interruption : E/S…
• La commutation est réalisée au moyen d'un
ordonnanceur et un mécanisme
d'interruption
• L'interruption provoque un changement de
contexte (CO, registres…)
82
Ordonnancement des processus

83
Ordonnancement
Interruptions
• Une interruption est provoquée par un signal
• Les interruptions sont dues à des événements
internes ou externes et peuvent être
masquable ou non masquable
• A chaque type est associée une routine de
traitement d'interruption

84
Ordonnancement
Interruptions
• Numéros d’interruptions

85
Ordonnancement
Mécanisme de gestion des interruptions
• Lors d'une interruption:
– le processeur enregistre tout ou une partie de son
état interne dans la pile système
– exécute ensuite une routine d'interruption(table des
sous programme à exécuter)
• Une fois le traitement de l'interruption terminé
– la routine se finit normalement par une instruction de
retour d'interruption
– Restaurer l'état enregistré et fait repartir le
processeur de l'endroit où il avait été interrompu
(la routine d'interruption modifie l'adresse de retour)

86
Ordonnancement
Appels système
• Un appel système est un moyen d'accès aux
données sensibles protégées par le système
(mémoire, disque…)
• Un appel système provoque une interruption
logicielle (trap)
• Un appel système n’est en général pas
interruptible (haute priorité)

87
Ordonnancement
Appels système

88
Ordonnancement
Types
• 2 types d'ordonnancement:
– sans réquisition ou ordonnanceur non préemptif
ou coopératif
– avec réquisition ou ordonnanceur préemptif

89
Ordonnanceur(non préemptif)
• Ordonnanceur non préemptif ou sans
réquisition:
– Choix du prochain processus à exécuter
– Allocation du processeur jusqu’à ce qu’il se
termine ou qu’il se bloque (en attente d’un
événement).
– Il n’y a pas de réquisition
– Pas suspension de force d’un processus.
– Aucune décision d’ordonnancement (lors d’un
clockintr).
90
Ordonnanceur(préemptif)
• Ordonnanceur préemptif ou avec réquisition:
– S’assurer qu’aucun processus ne s’exécute
pendant trop de temps
– Utilisation de l’horloge électronique
– A chaque interruption d’horloge (clockintr):
• Le SE Reprend le contrôle
• Le SE décide si le processus courant doit poursuivre son
exécution ou s’il doit être suspendu pour laisser place à
un autre
• Commutation

91
Algorithmes d’Ordonnancement

• L'ordonnanceur élit un processus prêt selon


un algorithme
• L'algorithme doit garantir :
– Équité
– Efficacité (Taux d’utilisation)
– Temps de réponse minimal
– Temps moyen d'exécution minimal (Attente)
– Rendement maximal (Travaux effectués)

92
Algorithmes d’Ordonnancement
FCFS: First Come, First Served
• Premier arrivé, premier servi
• Utilisation d’une file d’attente FIFO (First in, First
out)
• La CPU est allouée à un processus jusqu’à la fin
ou E/S.
• N’est pas utile pour le temps partagé(many users)
• Temps moyen d’attente élevé
• Effet d’accumulation (Convoy effect)

93
Algorithmes d’Ordonnancement
FCFS: First Come, First Served
• FCFS:

Processus exécuté
jusqu’à sa fin ou blocage
File de type FIFO

94
Algorithmes d’Ordonnancement
SJF: Shortest job first
• Association du temps maximal d’exécution
• Le processus ayant le temps le plus court est
choisi
• Si 2 processus possèdent la même longueur, le
FCFS est utilisé.
• Temps moyen d’attente minimal pour un
ensemble de processus donné
• Difficulté de connaître le temps d’exécution
95
Algorithmes d’Ordonnancement
SJF: Shortest job first
• SJF

Processus Temps Exécution


P1 10
P2 50
P3 5
P4 3
P5 2
P6 1
P7 1
P8 8

96
Algorithmes d’Ordonnancement
SRTF: Short Remaining Time First
• Version préemptif du SJF
• Un processus arrive dans la file des processus
• L’ordonnanceur compare la valeur espérée
pour ce processus contre la valeur du
processus actuellement en exécution
• Si le temps du nouveau processus est plus
petit, il rentre en exécution immédiatement

97
Algorithmes d’Ordonnancement
Tourniquet: Round Rodin

• Exécution circulaire des processus


• Chaque processus a une petite unité de temps
(Quantum)
• Un Quantum (en général de 10 à 100 ms).
• Parcourir la file d’attente et exécuter chaque
processus pendant un quantum.
• La file d’attente des processus prêts est
implantée comme une file FIFO.
98
Algorithmes d’Ordonnancement
Tourniquet: Round Rodin

• Cas d’Exécution circulaire des processus


– Cycle de CPU du processus < 1 quantum
⇒ le processus lui-même libérera la CPU
volontairement
– Cycle de CPU du processus > 1 quantum
⇒ l’horloge provoquera une interruption au SE
⇒ Commutation de contexte
⇒ Processus inséré en queue de la file d’attente

99
Algorithmes d’Ordonnancement
Tourniquet: Round Rodin

• Tourniquet :

Quantum terminé ou blocage

100
Algorithmes d’Ordonnancement
Tourniquet: Round Rodin

• Le temps moyen d’attente est souvent très long


• S’il existe N processus et un quantum Q:
• Chaque processus obtient 1/N du temps du processeur
en morceaux d’au maximum Q unités de temps.
• Chaque processus ne doit pas attendre plus de (N − 1)Q
unités de temps jusqu’à sa tranche de temps suivante.
• Performance: dépend de la taille de Q
• Si Q très grand ⇒ FCFS
• Si Q très petit ⇒ partage du processeur
(Il faut un Q > temps de commutation)

101
Algorithmes d’Ordonnancement
avec priorités
• Une priorité est associée à chaque processus
• Les processus sont rangés par classes de
priorité
• CPU est allouée au processus de plus haute
priorité
• Les processus dans la même classe sont
schedulés en utilisant FIFO avec tourniquet.
Ordonnancement par priorités ≠ SJF

102
Algorithmes d’Ordonnancement
avec priorités
• Par priorités:
Processus Temps Cycle Priorité
P1 10 3
P2 50 4
P3 5 3
P4 3 2
P5 2 4
P6 1 3
P7 1 3
P8 8 4

103
Algorithmes d’Ordonnancement
avec priorités
• Par priorités:

104
Algorithmes d’Ordonnancement
avec priorités

• Problème: processus avec des basses priorités


peuvent attendre indéfiniment (ne jamais être
exécutés)
• Solution: Technique qui consiste à augmenter
les priorités des processus (diminution de 1)
• Comparaison régulière des priorités.
• Lorsqu’elle devient inférieure, la commutation
est effectuée
105
Algorithmes d’Ordonnancement
Par Files multiples

• Séparer les processus ayant des caractéristiques


différentes de cycle de CPU en différentes files.
• Permet aux processus de se déplacer entre les
files.
• Processus employant beaucoup de temps
processeur: file de priorité inférieure
• Processus tributaire E/S: file de priorité
supérieure
• Processus qui attend trop longtemps dans une
file de priorité basse peut être déplacé à un
file de priorité supérieure
106
Algorithmes d’Ordonnancement
Par Files multiples

• Exemple d’algorithme:
• 3 files d’attente:
- F1: quantum = 8ns;
- F2: quantum = 16ns ;
- F3: FCFS
• Nouveau processus P1  F1
• Si P1 ne finit pas en 8ns, alors P1  F2
• Si F1 est vide, le processus (P2) en tête de F2 prend la
CPU.
• Si P2 ne termine pas en 16ns, alors P2  F3
• Les Processus de F3: exécutés avec FCFS (seulement
quand Q 0 et Q 1 sont vides)

107
Algorithmes d’Ordonnancement
Par Files multiples

• Réaliser l’exemple précédant avec :


• F1 = {8ns}
• F2 = {16ns}
• F3 = {FCFS}
Processus Temps CPU
P1 8ns
P2 16ns
P3 24ns
P4 30ns
P5 30ns
P6 1ns 108
Algorithmes d’Ordonnancement
- Récapitulatif -
• Ordonnanceur non préemptif:
– FCFS
– SJR
• Ordonnanceur préemptif:
– SRTF
– RR(round robin) tourniquet
– Priorités
– Files multiples

109
Commutation de contexte Rappel

• Le contexte d’un processus est l’ensemble des


informations dynamiques qui représente l’état
d’exécution d’un processus.
• La commutation de contexte est le mécanisme
qui permet au SE de remplacer le processus
élu par un autre processus éligible.

110
Commutation de contexte Rappel

• Pour changer d’un processus à un autre, il faut:


– Sauvegarder l’état de l’ancien processus.
– Charger l’état sauvegardé pour le nouveau processus.
• Le temps de la commutation de contexte est une
surcharge car le système ne réalise pas de travail
utile pendant qu’il commute.
• Le temps de la commutation de contexte dépend
du support matériel.

111
La communication inter-processus
• Les processus concurrents peuvent être
coopératifs ou indépendants
• Les processus ont souvent besoin de
communiquer entre eux
• Nécessité d’une communication entre
processus de préférence de façon structurée,
sans utiliser les interruptions.

112
La communication inter-processus
• Les processus peuvent coopérer en partageant
des ressources (mémoire, imprimante…) ou
par communication de données
• L'accès concurrent peut engendrer des conflits
• Le SE permet de synchroniser les activités des
processus et l'accès aux ressources en cas
d'accès concurrents.

113
Communication inter-processus
Problèmes

• Comment un processus peut passer


l’information à un autre ?
• Comment être sûr que les processus
n’interviennent pas les uns avec les autres au
moment d’exécuter des activités critiques?
• Comment assurer une séquence correcte
quand il existe des dépendances ?

114
Communication inter-processus
Problèmes

• Exemple du spoole d'impression:

115
Communication inter-processus
Problèmes

• Fichiers à imprimer classés dans un répertoire


dans l'ordre de leur arrivée
• Processus demandeur d'impression met le
fichier à imprimer dans le prochain
emplacement libre (in)
• Processus d’impression retire le prochain
fichier à imprimer (out)

116
Communication inter-processus
Problèmes

• Exemple:

Demande d’impression:
– 1. lire in;
– 2. placer_fichier (in);
– 3. in=in + 1;

117
Communication inter-processus
Problèmes

• Exemple:

– Accès concurrent à la variable partagée in


• Les processus A et B demandent simultanément
l’impression
• A est interrompu avant l’instruction numéro 3

118
Communication inter-processus
Section critique

• Situation de compétition(Race Condition): Situation


où plusieurs processus accèdent et manipulent en
concurrence les mêmes données et où le résultat de
l’exécution dépend de l’ordre dans lequel on accède
aux instructions
• Demande d’impression est une section critique
• Une section critique(SC) est la partie du programme
où peut se produire des accès concurrents

119
Solution pour Section Critique:
Exclusion mutuelle
• Nous avons besoin de l’exclusion mutuelle
(mutual exclusion)
• l’exclusion mutuelle: Deux processus ne
peuvent utiliser la section critique (SC) (partie
critique du code) à la fois

120
Solution pour Section Critique:
Exclusion mutuelle
• Contrôler l'accès et la sortie de la SC:
– 1- Réserver l'accès si la SC est libre ou
attendre
– 2- Utiliser la SC
– 3- Signaler la sortie de la SC aux autres

121
Solution pour Section Critique:
Exclusion mutuelle
• Conditions pour avoir une bonne solution:
1. Si un processus exécute sa SC, aucun autre n’est
autorisé à entrer à la SC.
2. Un processus qui n’est pas dans la SC ne peut
pas bloquer un autre.
3. Famine: Aucun processus ne doit attendre
indéfiniment.
4. Aucune supposition concernant la vitesse
relative des processus

122
Synchronisation des processus
Types de solutions
• Masquage des interruptions
• Exclusion mutuelle par attente active:
– Les variables de verrouillage
– L’alternance
– Solution de Peterson
– L’instruction TSL
• Primitives SLEEP et WAKEUP
• Sémaphores
• Moniteurs
• Échanges de messages

123
Masquage des interruptions
• Masque les interruptions à l’entrer d’une SC
• Restaurer les interruptions à la fin de la SC
• Le processus ne peut être suspendu durant la
SC
• Solution dangereuse:
– Si le processus ne restaure pas les
interruptions.(blocage total)
• Si le système est multiprocesseurs, le
masquage concerne une seule CPU
124
Exclusion mutuelle par attente active:
Les variables de verrouillage

• Utilisation d’une variable de verrouillage


partagée verrou, unique, initialisée à 0.
• Tant que verrou = 1  alors attente active
• Si verrou = 0  alors le processus peut entrer
à SC
• En entrant, la variable verrou est modifié à 1
• En sortant, la variable verrou est modifié à 0

125
Exclusion mutuelle par attente active:
Les variables de verrouillage

126
Exclusion mutuelle par attente active:
Les variables de verrouillage

• Problèmes
• Cette méthode n’assure pas l’exclusion
mutuelle
• Si un processus est suspendu juste après avoir lu la
valeur du verrou qui est égal à 0

127
Exclusion mutuelle par attente active:
L’alternance

• L’alternance est un algorithme qui consiste à


utiliser une variable tour qui mémorise le tour
du processus qui doit entrer en SC.
– tour est initialisée à 0.
– Tant que la valeur de tour n’est pas convenable
alors attente active.
– Chaque processus exécute sa SC à tour de rôle (ne
peut pas exécuter la SC plusieurs fois)

128
Exclusion mutuelle par attente active:
L’alternance

129
Exclusion mutuelle par attente active:
L’alternance

• Problèmes
• Cette méthode assure l’exclusion mutuelle
mais:
• Impossible d’exécuter plusieurs fois la SC d’un
processus qui a souvent besoin d’entrer en SC qu’un
autre
• Un processus P1 doit attendre qu’un autre processus p2
qu’il exécute sa SC avant d’exécuté la sienne (même si
P2 n’en a pas besoin)

130
Exclusion mutuelle par attente active:
Solution de Peterson

• Utilisation de deux variables différentes pour


contrôler l'accès à la zone critique.
• Chaque processus aura accès à son tour à la
section critique
• Un processus ne peut entrer dans la section
critique que lorsque celle-ci est libre
• Tableau interesse[]
• Variable tour

131
Exclusion mutuelle par attente active:
Solution de Peterson

// Initialisation
bool interesse[2];
interesse[0] = false;
interesse[1] = false;
int tour;

132
Exclusion mutuelle par attente active:
Solution de Peterson

// Execution process n°0 // Execution process n°1


interesse[0] = true; interesse [1] = true;
tour = 1; tour = 0;
while (interesse[1] && tour while (interesse[0] && tour ==
== 1) {} 0) {}
// attente // attente
// Début de la section // Début de la section
critique critique
... ...
// fin de la section // fin de la section
critique critique
interesse[0] = false; interesse[1] = false;

133
Exclusion mutuelle par attente active:
Solution de Peterson

• Les deux processus ne peuvent pas entrer en


section critique en même temps
• Résout le problème d’interblocage
• Résout le problème d’attendre qu’un autre
processus non intéressé par la SC exécute la
sienne.

134
Exclusion mutuelle par attente active:
L’instruction TSL

• Les ordinateurs multiprocesseurs ont une


instruction atomique indivisible appelée TSL (Test
and Set Lock).
• Si 2 processeurs aient accès à une variable
partagée  problème de synchronisation
• Solution
– Un processeur exécute l’instruction TSL
– Verrouillage du bus de données
– Empêcher les autres processeurs d’accéder à la
mémoire

135
Exclusion mutuelle par attente active:
L'algorithme du boulanger (Baker algo)

• L'algorithme reprend le principe de la file d'att


ente dans un petit magasin
• Le dernier arrivé s'attribue lui
même un numéro d'ordre derrière les arrivant
s précédents.
• On ne s'attribue un ticket que si personne
n'est en train de s'attribuer un ticket
• On attend notre tour : on attend que tous les
numéros inférieurs soient passés
136
Exclusion mutuelle par attente active:
L'algorithme du boulanger (Baker algo)

137
Exclusion mutuelle par attente active:
L'algorithme du boulanger (Baker algo)

138
Exclusion mutuelle par attente active:
MUTEX en Conclusion

• Dans les meilleurs cas, assure l’exclusion


Mutuelle
• Attente active  Consommation du temps
processeur
• Selon la politique de l’ordonnancement, 2
processus peuvent rester bloqué en
permanence

139
Exclusion mutuelle par attente active:
MUTEX en Conclusion

• Exemple:
• Que se passe-t-il à la fin de cette suite
d’opérations:
- Deux processus A et B partagent une variable M.
- Les règles d’ordonnancement: A sera exécuté
dès qu’il se trouve dans l’état prêt.
- A et B sont prêts  A est exécuté, B en attente
 A a besoin de E/S, B est exécuté  B entre
dans sa SC, puis A devient prêt  B en attente, A
est exécuté  A reste dans l’attente active

140
Exclusion mutuelle
Sleep & Weekup

• SLEEP() est un appel système


– Suspend l’appelant en attendant qu’un autre le
réveille
• WAKEUP(processus) est un appel système
– Fait réveiller un autre processus
• Ces 2 syscall peuvent être utilisés pour assurer
l’exclusion mutuelle

141
Exclusion mutuelle
Sleep & Weekup

142
Exclusion mutuelle
Sleep & Weekup

• Problème:
• Si le signal WAKEUP() arrive avant que le
processus destinataire ne soit endormi
Sleep(), le processus peut dormir pour
toujours.
• les conditions pour accéder à la SC doivent
être vérifier en MUTEX

143
Exclusion mutuelle
Sémaphores

• Les sémaphores sont un autre moyen pour


contrôler les accès à un objet partagé
• C’est un compteur entier qui désigne le
nombre d’autorisations à l’SC
semaphore auth = 2
• Auth permet l’accès à la SC pour 2 processus
en simultané

144
Exclusion mutuelle
Sémaphores

• Les sémaphores sont utilisés avec 2 opération P() et V()


• P()
– Vérifie la valeur du sémaphore
– Attente lorsque le compteur = 0
– Décrémente le compteur
• V()
– incrément la valeur du compteur
– Envoi un signal pour réveiller un processus
• Les opérations de P() et V() sont indivisibles

145
Exclusion mutuelle
Sémaphores
semaphore mutex=1 ;
-------------------------------------------------
processus P1 :
P(mutex)
SC;
V(mutex) ;
-------------------------------------------------
processus P2 :
P(mutex)
SC;
V(mutex) ;
-------------------------------------------------

146
Exclusion mutuelle
Sémaphores

Exemple du Problème des philosophes: (solution


avec Sémaphores)

147
Exclusion mutuelle
Moniteurs

• Regrouper tous les SC dans un module appelé


Moniteur
• Les processus appellent les structures de l’extérieur
du module
• Il y a à tout moment au plus un processus actif dans le
moniteur
• Solution semblable aux sémaphores
• Pas de préoccupation pour contrôler les accès aux SC
• Solution supporter par JAVA avec Utilisation de Wait &
Signal

148
Exclusion mutuelle
Échanges de messages

• Communication entre processus via des


messages
• Exemple de support: Pipe
• Le producteur du message dépose dans un tube
• Impossible de déposer un autre message tant que
tube n’est pas vide (blocage)
• Le consommateur récupère son objets du tube.
• Il se bloque lorsqu’il tente de récupérer un objet à
partir d’un tube vide
149
Exclusion mutuelle
Échanges de messages

150
Gestion de la mémoire

151
Gestion de la mémoire
Introduction
• La mémoire est une ressource importante qui
doit être gérée avec attention.
• Même si la quantité de mémoire d’un
ordinateur a beaucoup augmentée, la taille
des programmes s’accroît aussi.
• Mémoire Centrale
• Accès rapide mais faible capacité et coût élevé

152
Gestion de la mémoire
Introduction
• Mémoire: grand tableau de mots (octets),
chacun possédant sa propre adresse.
• La CPU extrait les instructions de la mémoire
en fonction de la valeur d’un compteur
d’instructions
• Utilisée lors de l’exécution des programmes

153
Gestion de la mémoire
Gestionnaire de la mémoire

• SE a besoin de Système de gestion de la


mémoire (Memory manager)
• C’est la partie qui gère la hiérarchie de
stockage:
– L'allocation de la mémoire aux processus
– La protection
– La segmentation de l'espace d'adressage
– La mémoire virtuelle

154
Gestion de la mémoire
• Adresse logique ou adresse virtuelle (virtual
address): Adresse générée par la CPU.
• Adresse physique Adresse vue par l’unité de
mémoire.
• MMU (Memory Management Unit): Dispositif
matériel qui fait la conversion des adresses
virtuelles à physiques

155
Gestion de la mémoire
Gestionnaire de la mémoire (GM)

• Stratégies utilisées par GM


– Monoprogrammation
– Multiprogrammation avec partitions fixes
– Va et vient et partitionnement dynamique
– Pagination…

156
Gestion de la mémoire
Monoprogrammation

• La manière la plus simple de gestion de


mémoire: exécuter un seul programme à la
fois.
• La mémoire est habituellement subdivisée en
deux partitions, une pour le SE résident et
l’autre pour les processus utilisateurs
• Utilisé par certains (petits) MS-DOS.

157
Gestion de la mémoire
Multiprogrammation avec partitions fixes

• La manière la plus simple consiste à subdiviser


la mémoire en n partitions de taille fixe.
• Chaque partition peut contenir exactement 1
processus.
• Puisque les partitions sont fixes, chaque
espace inutilisé est perdu

158
Gestion de la mémoire
Multiprogrammation avec partitions fixes

159
Gestion de la mémoire
Multiprogrammation avec partitions fixes
• Problème:
– Il se peut que la file d’une grande partition est vide
– Il se peut que la file d’une petite partition est pleine.
• Solution
– Utilisation d’une seule file
– Utiliser un algo pour trouver la plus grande tâche et
l’affecter à la plus grande partition
– Consacrer les petites partitions pour les petits tâches

160
Gestion de la mémoire
Swapping

• Utilisation du Disque pour conserver les


processus supplémentaires
• Un transfert temporaire
• Temps de transfert ∝ quantité transférée
• Contraintes:
– Processus à transférer doit être inactif.
– Pas d’utilisation asynchrone des buffers E/S

161
Gestion de la mémoire
Swapping

162
Gestion de la mémoire
Partitions variables

163
Gestion de la mémoire
Partitions variables

• Le nombre, localisation et la taille des


processus varient dynamiquement
• La libération et allocation de mémoire est plus
compliquée
• Nombre de partitions variable

164
Gestion de la mémoire
Partitions variables

• Problèmes:
– Fragmentation externe: Il existe un espace
mémoire total suffisant pour satisfaire une
requête, mais il n’est pas contigu.
– Fragmentation interne: la mémoire allouée peut
être légèrement plus grande que le mémoire
requise

165
Gestion de la mémoire
Partitions variables

• Solution pour Fragmentation externe:


– Objectif: balayer les contenus de la mémoire 
avoir un espace contigu.
– L’algorithme de compactage le plus simple:
déplacer tous les processus vers une extrémité de
la mémoire; tous les trous se déplacent dans
l’autre direction, produisant ainsi un grand trou de
mémoire disponible.

166
Gestion de la mémoire
Allocation d’espace mémoire pour un process

• PS avec taille fixe durant toute l’exécution 


Allouer exactement la taille nécessaire pour
les processus
• PS avec taille dynamique (peuvent s’agrandir
durant l’exécution)  Allouer un espace
supplémentaire de plus pour les processus

167
Gestion de la mémoire
Allocation d’espace mémoire pour un process

• Si taille supplémentaire est insuffisante:


– Si un trou est adjacent au processus, ce trou peu
lui être alloué.
– Si le processus est adjacent à un autre processus,
le processus croissant devrait être déplacé dans
un trou suffisamment grand pour lui.
– Si le ne peut pas croître en mémoire et que la
zone de swapping est pleine, le processus devra
attendre ou être tué.

168
Gestion de la mémoire
Allocation d’espace mémoire pour un process
• C’est complexe d'allouer de la mémoire au processus si le
coup n'est pas prévu. Le SE allouera, en général, un peu plus
de mémoire en prévision des demandes futures.
• Deux plages de mémoire qui peuvent grandir (données et
piles)
• Chacune puissent s'étendre sans gêne.

Espace de travail
d’un Processus

169
Gestion de la mémoire
Allocation d’espace mémoire pour un process

170
Gestion de la mémoire

Comment le SE gère l’utilisation de la mémoire ?

1. Table de bits
2. Liste chaînée

171
Gestion de la mémoire
Table de Bits

La mémoire est divisée en unités d’allocation

172
Gestion de la mémoire
Table de Bits

• Une série de bits d’allocation


• La valeur 0 pour les unités non utilisées
• 1 pour les unités utilisés
• Recherche pour allocation peut être lente.
• Le gestionnaire de mémoire doit parcourir le bit
Map pour trouver une séquence libre de bits
• Taille des unités est élevé => gaspillage de
l’espace mémoire

173
Gestion de la mémoire
Listes chainées

174
Gestion de la mémoire
Listes chainées

• Une liste chainée


– 4 champs:
• PID
• Adresse de départ
• Taille en nombre d’unités
• Pointeur vers élément suivant dans la liste
• Les listes sont triées par adresse

175
Gestion de la mémoire
Listes chainées

• Suppression d’un processus

176
Gestion de la mémoire
Listes chainées

• Plusieurs algos disponible:


– First-fit: Cherche la 1ère zone de taille suffisante
– Next-fit: Cherche à partir de la dernière zone libre
trouvée
– Best-fit: Cherche la plus petite zone suffisante.
– Worst-fit: Choisir la plus grande zone libre
• Comparaison:
– Best-fit performant mais lent
– First-fit Rapide mais peu performant

177
Gestion de la mémoire
• Le gestionnaire de la mémoire peut aussi
utiliser une mémoire virtuelle:
• But:
– Dépasser la capacité disponible de mémoire
physique
• Inconvénient:
– Temps de traitement additionnel de va-et-vient

178
Gestion de la mémoire
Mémoire virtuelle

• Seulement une partie d’un programme est


chargée
– Utile si taille Programme > taille mémoire
• Séparation entre la mémoire logique et la
mémoire physique
• 2 solution pour la gestion:
– Pagination
– Segmentation

179
Gestion de la mémoire
Mémoire virtuelle: Pagination

• Stocker un processus dans une mémoire de


manière non contiguë.
• Elle fournit aux processus des espaces
d'adresses séquentiels à partir d'espaces
mémoire discontinus.
– Résout le problème de fragmentation externe
• Pagination à 1 niveau et à 2 niveaux

180
Gestion de la mémoire
Mémoire virtuelle: Pagination

• Diviser la mémoire et les processus en blocs


de mêmes tailles appelés pages.
• Les pages mémoire sont souvent
appelées "frames" ou "cadres"
• Les pages de processus sont simplement
appelées "pages".
• Possibilité de placer des Pages dans MS

181
Gestion de la mémoire
Mémoire virtuelle: Pagination

Conversion effectuée par MMU


182
Gestion de la mémoire
Mémoire virtuelle: Segmentation

• Similaire au pagination mais avec des tailles variables


• Chaque processus peut avoir plusieurs segments
• Les segments sont des espaces d'adressages
indépendants de différentes longueurs
• Les segments contiennent les structures de données,
fonctions, etc.
• Assure la protection des zones mémoires
• Exemple:
– Certaines zones de code en exécution seule peuvent être
partagées par plusieurs processus

183

Vous aimerez peut-être aussi