Vous êtes sur la page 1sur 172

Operating System

Concepts généraux des systèmes


d’exploitation
Concepts généraux des systèmes Fonctions de base
d’exploitation
La mémoire Gestion des processus,
Les processus et les threads Gestion de la mémoire

Ce que vous allez apprendre …


1. Architecture des ordinateurs –
Rappel
Architecture de base – Mémoire – Processeur –
UAL – La carte-mère et ses composants

2. Les systèmes d’exploitation –


Généralités
Agenda Définition – Concepts – Notions de
multiprogrammation en mode Batch et en mode
partagé

3. Les processus
Définition – Etats – Ordonnancement – IPC

4. Simulation d’un processeur (TP)


Algorithmes d’ordonnancement
Processeur

Architecture des
ordinateurs Mémoire
Rappels
Architecture de base

Les mémoires

• leurs caractéristiques
• leur importance
• les opérations sur la mémoire
Contenu
Le processeur

• ses tâches
• son régistre accumulateur

la carte-mère (le système nerveux de


l’ordinateur)
Architecture de base

 Un ordinateur est une machine de traitement de l’information et


est capable :
 d’acquérir de l’information
 de la stocker
 de la transformer en effectuant des traitements quelconques
 puis de la restituer sous une autre forme
Architecture de base

 Informatique = Information + Automatique


 Traitement automatisé de l’information

 Nous appelons information tout ensemble de données.


 Exemples : Textes, nombres, images, sons, etc …

 Les instructions composants les programmes sont aussi


considérées comme des informations.
Architecture de base

 Les deux principaux constituants d’un ordinateur sont :


 la mémoire principale et le processeur.

La mémoire principale le processeur


permet de stocker de manière exécute pas à pas les instructions
temporaire l’information (programmes composant les programmes.
et données).
Architecture de base
Structure de la mémoire principale.

 Elle est subdivisée en emplacements de taille fixe (par exemple 8 bits)


utilisés pour stocker les instructions et données.

 Dans une mémoire de taille N, on a N


emplacements mémoires, numérotés
de 0 à N - 1.

 Chaque emplacement est repéré par


son numéro, appelé adresse.
L’adresse est le plus souvent écrite en
hexadécimal.
Architecture de base
Structure de la mémoire principale.

 La capacité (taille) de la mémoire est le nombre d’emplacements. Elle


est exprimée en général en kilo-octets ou en méga-octets, voire
davantage.
 Le kilo informatique vaut 1024 et non 1000 (210 = 1024).

 Les multiples les plus utilisés :


 1 Ko (Kilo Octet) - 210 = 1024 octets
 1 Mo (Méga Octet) - 220 = 1048 576 octets
 1 Go (Giga Octet) - 230 = 1 073 741 824 octets
 1 To (Téra Octet) - 240 = 1 099 511 627 776 octets
Quantité d’informations qu’elle peut contenir
Leur capacité de stockage : et s’exprime en ko, Mo, Go, To.

Intervalle de temps entre le lancement d’une


Leur temps d’accès : opération de lecture/écriture et sa réalisation
(s’exprime en nano secondes ns)

Intervalle de temps minimum entre deux accès


Temps de cycle : successifs et s’exprime en ns.

Caractérisant l’aptitude d’une mémoire à


Volatilité : conserver les données lorsqu’elle n’est plus
alimentée électriquement.

Architecture de base
Cractéristiques des mémoires
Architecture de base
Les mémoires de masse

 En plus de la mémoire principale ou mémoire vive à l’interne,


l’ordinateur dispose d’autres types de mémoires périphériques à
l’externe (encore appelées mémoires auxiliaires, secondaires ou plus
communément mémoires de masse).

 Elles sont non volatiles


 Conservent les informations enregistrées même en l’absence
d’alimentation électrique.

 Elles ont un temps d’accès à l’information plus lent que la mémoire


vive.
Architecture de base
La mémoire en lecture seule (ROM=Read Only Memory)

 Mémoire en lecture seule ou mémoire morte.


 L’information y est stockée à la fabrication et ne peut plus être
modifiée par la suite.
Architecture de base
La mémoire en lecture seule (ROM=Read Only Memory)

 Conserve les informations en l’absence de courant.


 Elle est donc utile au démarrage de l’ordinateur.

 En effet, la mémoire vive est vide et le disque dur est inaccessible lors du
démarrage d’un ordinateur.

 L’ordinateur ne peut donc compter que sur la mémoire morte pour lui
fournir les informations de configuration nécessaires au démarrage.
Architecture de base
La mémoire cache – Définition

 Mémoire de petite taille intercalée entre le processeur et la mémoire


principale.

 Dans cette mémoire, sont stockées les informations normalement en


mémoire principale dont le processeur se sert très souvent.
Architecture de base
La mémoire cache – Principe de fonctionnement

 Lors d’un accès par le processeur à une information en mémoire, deux


cas peuvent se présenter :

1. L’information est présente dans le cache :


 Le cache, plus rapide, envoie la donnée demandée sur le bus de
données.

2. L’information n’est pas présente dans le cache :


 L’accès mémoire se déroule normalement (un exemplaire de
l’information est conservé par la même occasion dans le cache pour
une prochaine fois).
Architecture de base
La mémoire cache – Principe de fonctionnement

le cache

le processeur la mémoire principale

Bus local (adresses + données)

Mémoire cache placée sur le bus local


Importance de la mémoire principale

 En cas d’absence de mémoire, on ne peut rien faire, tout résultat


calculé sera automatiquement oublié.

 Pire : Sans mémoire, le processeur ne peut pas trouver ce qu’il est


sensé faire car c’est là que sont emmagasinées les informations et
les instructions à exécuter.
Importance de la mémoire principale

 Le temps d’accès à une information dans la mémoire est très faible


(plus rapide que les mémoire de masse).
 Cette rapidité est essentielle pour fournir plus rapidement les données
au processeur.
 Elle est volatile. En cas de perte d’alimentation électrique, les
informations présentes en mémoire sont perdues.
Opérations sur la mémoire principale

 Seul le processeur est habilité à modifier l’état de la mémoire.


 Chaque emplacement mémoire conserve les informations que le
processeur y écrit jusqu’à coupure de l’alimentation électrique, où tout
le contenu est perdu.
Opérations sur la mémoire principale

 Les seules opérations possibles sur la mémoire sont :

Ecriture Lecture
Le processeur donne une Le processeur demande à la
valeur et une adresse, et la mémoire la valeur contenue à
valeur est stockée à l’emplacement dont il indique
l’emplacement indiqué. l’adresse.
Le processeur

 Il est parfois appelé CPU (de l’anglais Central Processing Unit) ou


encore MPU (Micro-Processing Unit) pour les microprocesseurs.

 Un microprocesseur n’est rien d’autre qu’un processeur dont les


composants ont été suffisamment miniaturisés pour que l’ensemble
puisse tenir en un seul circuit intégré.
Le processeur – ses tâches

1- Récupérer les données sur le 2- Mettre les données dans la


disque dur au lancement d’un mémoire pour les avoir à disposition
programme.

3- Effectuer des calculs 4- Transmettre les résultats à la carte


avec ces données graphique pour qu’elle les affiche à l’écran.
Programme vs Processeur

 Le programme est une suite d’instructions élémentaires (en langage


machine) exécutées dans l’ordre par le processeur.
Programme vs Processeur

 Ces instructions correspondent à des actions très simples :


 Addition de deux nombres par exemple …
 Lecture ou écriture d’une case mémoire, etc.

 Chaque instruction est codifiée en mémoire sur quelques octets.


Programme vs Processeur

 Pour chaque instruction, le processeur :

Lit en mémoire Effectue le Passe à


l’instruction à traitement l’instruction
exécuter, correspondant et suivante
Processeur

 Le processeur et divisé en deux parties :

L’unité de commande, L’unité de traitement - Unité


responsable de la lecture Arithmétique et Logique (U.A.L.),
en mémoire et du codage chargé d’exécuter les instructions qui
des instructions. manipulent les données.
Les régistres et l’accumulateur

 Les régistres sont pétites mémoires (8, 16 ou 32 bits) très rapides


internes au processeur et sont utilisées pour stocker temporairement
une donnée, une instuction ou une adresse.

 Parmi les registres, le plus important est le registre accumulateur, qui


est utilisé pour stocker les résultats des opérations arithmétiques et
logiques.
Les régistres et l’accumulateur

 Par exemple, examinons ce qu’il se passe lorsque le processeur


exécute une instruction comme : « i = i + 5 »
C’est l’unité de commande qui déclenche toutes ces actions dans l’ordre.

5- Le contenu de
1- Le processeur 3- La valeur lue l’accumulateur est
lit et décode est rangée dans écrit en mémoire
l’instruction l’accumulateur à l’adresse de i.

2- Le processeur 4- L’unité de
demande à la traitement
mémoire le contenu (UAL) ajoute 5
de i. au contenu de
l’accumulateur

Les régistres et l’accumulateur


Processeur codes Mémoire Principale
instructions
Unité de commande Programme

données
Unité de traitement
binaires Données
U.A.L.

Informations
codées en binaire

Unité d’Entrées/Sorties

Clavier Ecran

Les régistres et l’accumulateur


Liaison Processeur - Mémoire

 Les informations échangées entre la mémoire et le processeur


circulent sous forme de signaux électriques à travers un système de
câblage appelé bus.

 Il s’agit simplement d’un ensemble de n fils conducteurs, utilisés


pour transporter n signaux binaires.

 Les bus sur lesquels sont directement connectés le Processeur et la


Mémoire sont : le bus de données et le bus d’adresse
Liaison Processeur - Mémoire

 Le bus d’adresse

 C’est un bus unidirectionnel : Il transporte les adresses mémoires auxquelles le


processeur souhaite accéder pour lire ou écrire une donnée...

 Seul le processeur envoie des adresses à travers ce bus.

 Il est composé de n fils ; on utilise donc des adresses de n bits. La mémoire peut
posséder au maximum 2n emplacements (adresses 0 à 2n - 1).
Liaison Processeur - Mémoire

 Le bus de données

 C’est un bus bidirectionnel : Il achemine les données à stocker ou à récupérer en


mémoire principale.

 Lors d’une lecture, c’est la mémoire qui envoie un mot sur le bus (le contenu de
l’emplacement demandé)

 Lors d’une écriture, c’est le processeur qui envoie la donnée.


Liaison Processeur - Mémoire

le processeur Bus d’adresses


la mémoire
unidirectionnel
principale

Bus de données
bidirectionnel

Signaux de commandes
Le système nerveux de l’ordinateur
La carte-mère

 C’est le composant principal de l’ordinateur.

 C’est un circuit imprimé servant à interconnecter toutes les composantes


d'un ordinateur en l’occurrence :
 Le microprocesseur et
 La mémoire principale
Le système nerveux de l’ordinateur
La carte-mère

 Elle réunit tous les composants matériels de l’ordinateur

 Directement : microprocesseur, mémoire, carte graphique, carte son, …)


 Par branchement d’une nappe : disque dur, lecteurs de disques optiques, …)
Le système nerveux de l’ordinateur
La carte-mère – ses composants

 Un ou plusieurs connecteurs d’alimentation électrique

 L’horloge de l’ordinateur

 la CMOS (Complementary Metal Oxide Semiconductor) :


 Une petite mémoire qui conserve certaines informations importantes (date,
ordre de boot, etc…) même lorsque l’ordinateur n’est pas alimenté en
électricité.
 Son contenu est alors maintenu par un faible courant électrique fourni par une
pile - La pile électrique du CMOS.
Le système nerveux de l’ordinateur
La carte-mère – ses composants

 le BIOS (Basic Input Output System)


 Un programme, contenu dans la mémoire morte de la carte-mère qui a pour
rôle de définir les actions élémentaires que doit réaliser l’ordinateur lors de sa
mise sous tension (démarrage).

 les connecteurs de la mémoire vive (memory slot en anglais).


Les systèmes Concepts généraux
d’exploitation
Définition

• Qu’est ce qu’un système d’exploitation ?

Les fonctionnalités du SE

• Gestion de la mémoire
• Gestion du processeur
Contenu • Gestion des périphériques
• Gestion des fichiers
• Gestion des programmes en exécution
• Sécurité
• Supervision du système

Familles des systèmes d’exploitation


Définition

• Qu’est ce qu’un système d’exploitation ?

 C’est un programme qui permet d’accéder aux


ressources matérielles d’un ordinateur.

Définition Système d’exploitation

imprimante liaisons réseau écran


(carte graphique)

disque dur clavier carte son


Définition

• Qu’est ce qu’un système d’exploitation ?

Ces périphériques varient d’un modèle d’ordinateur à l’autre.

Les instructions à exécuter pour les piloter diffèrent d’un ordinateur


Définition à un autre.

Nécessité de disposer d’un interlocuteur permettant de fournir une


vue abstraite de ces éléments aux simples utilisateurs et mêmes aux
programmeurs expérimentés.

Le système d’exploitation offre cette possibilité.


Définition

• Qu’est ce qu’un système d’exploitation ?

 Considérons le cas particulier des disques, l’abstraction


fourni par le système d’exploitation consiste à les
considérer comme des collections de fichiers.
Définition
 Chaque fichier peut être ouvert en lecture ou en écriture,
puis accédé et enfin fermé.

 Les détails des traitements sont cachés à l’utilisateur par


cette abstraction.
Utilisateur 1 Utilisateur 2 Utilisateur 3

Word, Excel, IE,


MSPaint, Code::blocks …

Protège la couche matérielle des


erreurs de manipulations des Programmes Programmes
utilisateurs Systèmes applicatifs

Couche Logicielle
Système d’exploitation

Première couche Périphériques


logicielle d’un ordinateur d’entrées/sorties

Couche Matériel CPU Mémoires E/S

Vue d’ensemble
Définition

• Qu’est ce qu’un système d’exploitation ?

 Le rôle du système d’exploitation est donc d’isoler les


Définition programmes des détails du matériel.

 Il se positionne comme un « facilitateur » entre les


utilisateurs, leurs programmes et le matériel.
Définition

• Qu’est ce qu’un système d’exploitation ?

 En somme, le système d’exploitation peut-être vu comme


« un maître d’orchestre » qui gère de manière équitable et
optimale l’allocation de la mémoire, du processeur et des
périphériques d’E/S aux différents programmes
concurrents qui les sollicitent.
Définition
Les fonctionnalités du SE

• Gestion de la mémoire
• Gestion du processeur
• Gestion des périphériques
• Gestion des fichiers
• Gestion des programmes en exécution
• Sécurité
Les tâches • Supervision du système
La gestion de la mémoire

 La mémoire principale fournit un stockage rapide auquel le


processeur peut accéder directement.

 Pour qu'un programme soit exécuté, il doit être dans la mémoire


principale. Les instructions binaires qui le constituent doivent être
chargées en mémoire principale.
La gestion de la mémoire

 Les activités du système d’exploitation pour la gestion de la


mémoire :

Décide quel Alloue de la


Conserve des traces
programme est mémoire lorsqu’un Désalloue la
de la mémoire
exécuté par le processus le lui mémoire
principale
processeur. demande.
Quelles parties sont Dans les systèmes Lorsqu’un processus le Lorsqu’un processus n’en
utilisées ? par qui ? quelles multiprogrammés. lui demande. a plus besoin ou a
parties ne sont pas terminé son exécution.
utilisées ?
La gestion du processeur

 L’ordonnancement est la principale activité dans la gestion du


processeur.

 Il consiste pour le système d’exploitation à sélectionner le processus


qui obtiendra le processeur et pour combien de temps il lui sera alloué.

 Le partie du SE responsable de cette opération s’appelle


l’ordonnanceur.
La gestion du processeur

 Les activités du système d’exploitation pour la gestion du processeur :

Désalloue le
Conserve des traces
Alloue le processeur processeur lorsqu'un
du processeur et de
(CPU) à un processus processus n'est plus
l’état du processus.
requis.

Le programme responsable de
cette tâche est appelé contrôleur
de trafic (trafic controller).
La gestion des périphériques

 Un système d'exploitation gère la communication entre périphériques


via leurs pilotes respectifs.
 Le pilote est l’interface assurant la bonne communication entre un
périphérique (matériel) et une application (ici le système
d’exploitation)

Programmes applicatifs Système Pilote


ou systèmes
Périphérique
d’exploitation

Requête d’accès au Le driver reçoit la requête qu’il


périphérique pour une action traduit et transmet à son tour
quelconque. au périphérique.
La gestion des périphériques

 Les activités du système d’exploitation pour la gestion des


périphériques :

Décide quel
Conserve des traces Alloue l’appareil de Désalloue les
processus obtient
de tous les appareils manière efficace. appareils.
l’appareil.

Le programme responsable Quand et pour combien


de cette tâche est appelé le de temps ?
contrôleur d’E/S.
(I/O Controller).
La gestion des fichiers

 Cette activité consiste à faciliter l’accès aux données stockées sur le


disque dur.

 Le système d’exploitation s’appuie sur un système de fichiers pour


garantir cette souplesse.
 Il définit la manière de stocker les informations et de les organiser dans
les fichiers.
 Il est organisé en répertoires pour faciliter la navigation et l’utilisation.
 Ces répertoires peuvent contenir des fichiers, des sous-répertoires et
d’autres directions (links, \.., \.).
La gestion des fichiers

 Les activités du système d’exploitation pour la gestion des fichiers :

Assure le suivi des Décide qui obtient Alloue les Désalloue les
informations. les ressources. ressources. ressources.

Il assure également le suivi


de leur emplacement, leur
utilisation, leur statut, etc …
La gestion des programmes en exécution

 Le système d’exploitation gère la mise à disposition du CPU au


différents processus (programmes en exécution).
La sécurité

 Par un mot de passe et d'autres techniques similaires, il empêche tout


accès non autorisé aux programmes et aux données.
La supervision du système

 Enregistrement des délais entre la demande de service et la


réponse du système.

 Possibilité de visualiser sous forme de dashboard les performances


système sur certains OS.
 Sous windows : Le gestionnaire des tâches.
LES SYSTÈMES DE SYSTÈMES SYSTÈME SYSTÈME
TRAITEMENT PAR D'EXPLOITATION À D’EXPLOITATION D’EXPLOITATION
LOT TEMPS PARTAGÉ DISTRIBUÉ RÉSEAU

SYSTÈME SYSTÈME SYSTÈMES PLUS RÉCEMMENT


D'EXPLOITATION EN D'EXPLOITATION D’EXPLOITATION LES SYSTÈMES
TEMPS RÉEL EMBARQUÉ POUR ORDINATEUR D’EXPLOITATION
PERSONNEL MOBILE (IOS,
(WINDOWS, MAC OS, ANDROID, ...)
LINUX)

Familles des systèmes d’exploitation


 Batch operating system

 Apparu dès la 2ème génération des


système d’exploitation (année ~1955) –
monoprogrammation
 Aucune interaction directe avec
l'ordinateur.

 Programmes écrits sur des cartes


LES SYSTÈMES performées et soumis à l’opérateur.
D’EXPLOITATION
DE TRAITEMENT
PAR LOT  Tri des tâches avec des besoins similaires
par lot avant lancement du traitement.
 Processeur très est souvent inactif (en
attente des opérations d’E/S).
 Time-sharing operating system
 3ème génération des SE

 Apparaît avec la multiprogrammation –


technique visant à partitionner la mémoire
permettant ainsi le chargement de
plusieurs jobs en même temps.

LES SYSTÈMES  Evite que le CPU attende sans rien faire la


D’EXPLOITATION fin des opérations d’E/S.
TEMPS PARTAGÉ
 Dans les systèmes temps partagé, les jobs
chargés en mémoire sont exécutés
indépendamment les uns des autres en se
voyant attribuer des « tranches de temps »
suffisamment courtes pour que leurs
exécutions semblent simultanées.
 Time-sharing operating system
 Un système multiprogrammé avec trois
JOBs en mémoire

Job 1

Job 2 Patitions mémoires


Job 3
LES SYSTÈMES SE
D’EXPLOITATION
TEMPS PARTAGÉ
 L'objectif des systèmes de traitement par
lots multiprogrammés est d'optimiser
l'utilisation du processeur, alors que
 L'objectif des systèmes à temps partagé
est de minimiser le temps de réponse.
 Distributed operating System

 Ces systèmes utilisent plusieurs processeurs


pour desservir plusieurs applications et
plusieurs utilisateurs.

 Les tâches de traitement de données sont


réparties en conséquence entre les
processeurs.
LES SYSTÈMES
D’EXPLOITATION
 Les processeurs de ces systèmes
DISTRIBUÉS communiquent entre eux via différentes
lignes de communication (bus, lignes
téléphoniques, etc …)
 Network operating System

 Ces systèmes sont généralement déployés


sur un serveur.

 Gestion des données, des utilisateurs, des


groupes, de la sécurité, des applications et
d'autres fonctions de mise en réseau.

LES SYSTÈMES
D’EXPLOITATION  Leur objectif principal est d’autoriser
l'accès partagé à différentes ressources
RESEAU (fichiers, imprimantes, scanners, etc …)
entre plusieurs ordinateurs d'un réseau
(local, privé, ou autres ...)
 Real Time System

 Ils sont utilisés lorsque le fonctionnement d'un


processeur est soumis à des contraintes de temps
strictes.

 Temps réel dur (hard real-time) : le non respect


des contraintes temporelles entraîne la faute du
LES SYSTÈMES système (contrôle de trafic aérien, etc …).
D’EXPLOITATION
TEMPS REEL
 Temps réel souple (soft real-time) : le respect des
échéances est important mais leur non respect ne
peut occasionner de graves conséquences
(retransmission vidéo, etc …)
 Embedded System

 Ils sont conçus ensemble et fournissent des


fonctionnalités précises.

 Un ou plusieurs microprocesseurs destinés à


exécuter un ensemble de programmes définis
lors de la conception.
LES SYSTÈMES
D’EXPLOITATION
EMBARQUÉ
 Le système matériel (partie physique) et
l'application (partie logicielle) sont fortement
liés et immergés dans le matériel.

 Les programmes étant stockées sur des


mémoires en lecture seule (ROM).
 Ces systèmes permettent aux utilisateurs
novices ou expérimentés de pouvoir accéder
aux fonctionnalités de base offertes par un
ordinateur :
 Bureautique
 Navigation sur internet
 Développement d’applications
 etc …

LES SYSTÈMES
D’EXPLOITATION
POUR
ORDINATEUR
PERSONNEL
(WINDOWS, MAC
OS, LINUX)
 Ces systèmes sont conçus pour fonctionner
sur des appareils mobiles spécifiques
(smartphone, tablettes, …)

 Leurs fonctionnalités principales : la gestion


des applications déployées et la connectivité
sans fil)

LES SYSTÈMES  L’Android de Google et l’iOS de Apple sont les


D’EXPLOITATION fournisseurs principaux de ces systèmes et se
POUR MOBILE partagent donc le marché.
(IOS, ANDROID, ...)
Les systèmes Les processus
d’exploitation
 Le processus est un concept clé dans tout système
d’exploitation.

Processus  De façon schématique, un processus est un programme


Définition en cours d’exécution.

 Lorsque nous lançons l’exécution un programme, il


devient un processus qui exécute toutes les tâches
mentionnées dans le programme.
 Lorsqu'un programme est chargé dans la mémoire et qu'il
devient un processus, il est divisé en quatre sections :

1- La pile d’exécution

Contient les données temporaires telles que les paramètres de


Processus méthode / fonction, l'adresse de retour et les variables locales
Définition 2- L’espace d’adressage,

Mémoire dynamiquement allouée à un processus pendant son exécution.

3- Texte
Activité en cours représentée par la valeur du compteur ordinal et le
contenu des registres du processeur
4- Données.

Cette section contient les variables globales et celles déclarées static


 Lorsqu'un processus s'exécute, il passe par différents
états.

 Ces états peuvent être différents selon les systèmes


d'exploitation et les noms de ces états ne sont pas non
plus normalisés.
Processus
Cycle de vie
 En général, un processus peut avoir l'un des cinq états
suivants à la fois :
 Créé (Started) –
 Prêt (Ready) –
 En exécution (Running) –
 Bloqué (Waiting) –
 Terminé (Terminated)
 Créé (Started) :
 C'est l'état initial lorsqu'un processus est démarré /
créé pour la première fois.

 Prêt (Ready) :
Processus  Le processus attend d'être affecté à un processeur.
Cycle de vie
 Les processus prêts attendent que le processeur
leur soit alloué par le SE (son ordonnanceur) pour
pouvoir s'exécuter.
 Le processus peut entrer dans cet état après le
démarrage ou lors de son exécution, interrompu
par le planificateur pour affecter le processeur à un
autre processus.
 En exécution (Running) :
 Une fois que le processus a été affecté à un
processeur par l’ordonnanceur du SE, l'état du
processus est configuré pour s'exécuter et le
Processus processeur exécute ses instructions.
Cycle de vie

 Bloqué (Waiting) :
 Le processus passe à l'état bloqué s'il doit attendre
une ressource, par exemple en attente d'une entrée
utilisateur ou en attente de la disponibilité d'un
fichier.
 Terminé (Terminated)
Processus  Une fois que le processus a terminé son exécution
Cycle de vie ou qu'il est arrêté par le système d'exploitation, il
passe à l'état terminé où il attend d'être supprimé
de la mémoire principale.
Processus
Cycle de vie
 Le PCB est une structure de données gérée par le
système d'exploitation pour chaque processus.

 Il est identifié par un ID de processus entier (PID)

 Il conserve toutes les informations nécessaires pour


Processus suivre un processus (son état, son compteur ordinal, son
pointeur de pile, …)
Process Control Block (PCB)

 Il enrégistre également toutes les informations relatives


au processus lorsqu’il bascule de l’état en exécution vers
les états Prêt ou Bloqué.

 Ce mécanisme permet au processus de pouvoir


redémarrer ultérieurement comme s’il n’avait jamais été
interrompu.
N° Description - la Table des Processus (PCB Process Control Block)

1 Etat du processus : L’état actuel du processus, c’est-à-dire s’il est prêt, en cours d’exécution, en attente ou
peu importe.
2 PID (Processus IP) : Identification unique pour chaque processus dans le système d'exploitation.

3 PPID (Parent Processus IP) : Identification du parent du processus.

4 Compteur Ordinal : Pointeur sur l'adresse de la prochaine instruction à exécuter pour ce processus.

5 Registres du CPU : Divers registres du CPU où certaines informations sont stockées et utiles lorsque le
processus est en exécution.
6 Informations d’ordonnancement : Priorité de processus et autres informations nécessaires pour
ordonnancer le processus.
7 Compteurs : Nombre de CPU utilisé pour l'exécution du processus, les délais, etc

8 Les informations d’E/S : Liste des périphériques d’E/S affectés au processus.

Processus – Process Control Block (PCB)


 L'architecture du PCB dépend entièrement du système
d'exploitation et peut contenir des informations
Processus différentes selon les systèmes d'exploitation.
Process Control Block (PCB)

 Le PCB est maintenu pour un processus pendant toute sa


durée de vie et est supprimé une fois le processus
terminé.
Gestion des processus
Hiérarchie des processus
IPC – Communication Inter Processus
Principe de fonction des processus
Création - Terminaison des processus
Ordonnancement des processus
Gestion des processus - Hiérarchie

 Les processus peuvent créer un ou plusieurs autres processus (appelés


processus enfants), et ces derniers peuvent également créer des processus
enfants et ainsi de suite jusqu’à créer une structure arborescente de
processus.
Gestion des processus - Hiérarchie

Init

Login : Login : Login :


Password : Password : … Password :

Terminal 1 Terminal n
shell

ls

Terminal 2

Exemple d’un système Unix


Gestion des processus - Hiérarchie

 A la différence des systèmes Unix, les systèmes Windows n’intègrent pas


le concept d’hiérarchie des processus.

 Lorsqu’un processus Windows crée un processus fils, il récupère un jeton


spécial (appelé handle) qu’il peut utiliser pour contrôler son fils.

 Il est cependant possible de passer ce handle à un autre processus, ce qui


invaliderait la relation parent - fils.

 Sous Unix, les processus ne peuvent pas déshériter leurs enfants.


Gestion des processus - IPC

 Dans la plus part des systèmes, les processus collaborent à la réalisation


de tâches complexes.

 Ils ont souvent besoin de communiquer entre eux et de synchroniser leurs


actions pour y arriver.

 Cette communication est appelée communication interprocessus (IPC).


Gestion des processus - Fonctionnement

 Comme vu plus haut, les processus sont des programmes en exécution.

 Du point de vue conceptuel, chaque processus possède son propre


processeur virtuel qui exécute les instructions du programme.

 En réalité, le processeur bascule constamment d’un processus à l’autre et


donne l’illusion qu’ils s’exécutent en parallèle.

 On parle alors de multiprogrammation.


Un compteur
ordinal
Quatre compteurs
ordinaux logiques
Bascule D
A entre processus

Processus
C
B
B
A B D
C C A

Temps →
D (b)
Modèle conceptuel de quatre processus (c)
(a) séquentiels indépendants Un seul programme est
actif à un instant donné
Multiprogrammation
de 4 programmes

Gestion des processus - Fonctionnement


Programme vs Processus

 Reprise de la confection du gâteau

Piqûre de l’informaticien
 par une abeille 
Exécution des instructions de la
recette pour la confection du gâteau Confectionner
un gâteaux
Informaticien PROGRAMMES
Recette
d’un gâteau

PROCESSEUR Brochûre sur les


premiers soins
Exécution des instructions de la PROCESSUS
 brochûre sur les premiers secours Administrer
un antidocte
Programme vs Processus

 En résumé, un processus est une activité. Il inclut un programme, une


entrée, une sortie et un état.

 Un processeur peut être partagé par plusieurs processus, à l’aide d’un


algorithme d’ordonnancement intervenant pour déterminer à quel
moment arrêter de travailler sur un processus pour en servir un autre.
Création -Terminaison des processus

 Il existe principalement trois événements provoquant la création d’un


processus dans les systèmes actuels :

1. Initialisation du système

2. Exécution d’un appel système de création de processus par un


processus en cours d’exécution.

3. Requête utilisateur sollicitant la création d’un nouveau


processus.
Création -Terminaison des processus

1. Initialisation du système

▪ Lors de l’amorçage du système d’exploitation, plusieurs


processus sont créés et interagissent avec l’utilisateur.

▪ D’autres sont des processus d’arrière-plan (encore appelés


démons), non associés à une utilisation particulière.
Création -Terminaison des processus

2. Exécution d’un appel système de création de processus par un


processus en cours d’exécution.

▪ Certains processus peuvent être amenés à créer d’autres


processus lorsque la tâche à accomplir peut être divisée en
plusieurs processus.

▪ Ces processus interagissent entre eux tout en restant


indépendants.
Création -Terminaison des processus

3. Requête utilisateur sollicitant la création d’un nouveau processus.

▪ Sur les systèmes interactifs, les utilisateurs peuvent


démarrer un programme en saisissant une commande ou en
(double) cliquant sur une icône.
Création -Terminaison des processus

 Une fois qu’un processus a été créé, il commence à s’exécuter, quelle


que soit sa tâche.

 Une fois créé, le processus devra tôt ou tard s’arrêter pour diverses
raisons.
Arrêt normal Arrêt pour erreur Arrêt pour erreur fatale Le processus est arrêté
(volontaire) (volontaire) (involontaire) par un autre processus
(involontaire)

Arrêt du processus à la La survenue d’une erreur La survenue d’une erreur Appel système effectué
fin de l’execution de sa lors de la saisie d’un due à un bug du par un autre processus
tâche. mauvais paramètre. programme.

Création -Terminaison des processus


Ordonnancement
Sélectionner un processus pour son exécution
Interrompre un processus pour en choisir un autre
Ordonnancement des processus

 L’ordonnancement n’a de sens que dans les systèmes multiprogrammés.

 Le système d'exploitation maintient une file d'attente distincte pour


chacun des états de processus et les PCB de tous les processus dans le
même état d'exécution sont placés dans la même file d'attente.

 Lorsque l'état d'un processus est modifié, son PCB est dissocié de sa file
d'attente actuelle et déplacé vers sa nouvelle file d'attente d'état.
Ordonnancement des processus

Job Conserve tous les


Queue processus du système.

Conserve tous les processus à l’état


Waiting Bloqué en raison de l’indisponibilité
Queue d’un périphérique d’E/S.

Ready Conserve tous les


Queue processus à l’état Prêt.
L’ordonnanceur affecte le processeur à
un autre processus

Ready EXIT
Job Queue CPU
Queue Le processus est choisi pour
être exécuté par le processeur
Fin du processus

Le processus sollicite un
Le processus en a terminé périphérique d’E/S
avec le périphérique

I/O Waiting
I/O
Queue

Ordonnancement des processus


Process P0 Operating System Process P1

exécution sauvegarde de l’état dans PCB0


Interruption ou en attente
Appel Système (I/AS) (Prêt)
chargement de l’état depuis PCB1
I/AS

exécution
en attente (Prêt)
sauvegarde de l’état dans PCB1
I/AS


en attente
chargement de l’état depuis PCB0 (Prêt)
I/AS
exécution

Ordonnancement des processus


Les interruptions
Les interruptions

 Il s’agit ici des interruptions matérielles (ou externes), c’est-à-dire


déclenchées par le matériel (hardware) extérieur au processeur.

 Il arrive fréquemment qu'un périphérique ou un programme nécessite


une intervention du microprocesseur. A cet effet, il est possible de
l'interrompre quelques instants.

 Cette interruption provoque la suspension du processus


en cours et le branchement du microprocesseur à un sous-
programme particulier dit : « traitant d‘interruption ».
Les interruptions

 La réaction du processeur face a cette interruption consistera :

 A l’ignorer et passer normalement à l’instruction suivante : interruptions


masquables. Le processeur masque les interruptions pour pouvoir
effectuer des tâches urgentes. Une fois la tâche terminée, il démasque les
interruptions et les prend en charge.

 A exécuter par le traitant d’interruption (interrupt handler).


Les interruptions

 Les interruptions permettent donc au matériel de communiquer avec le


processeur.

 Une interruption se matérialise par un signal éléctrique envoyée au


processeur.
Les interruptions

 Les interruptions logicielles sont semblables aux interruptions matérielles


à la différence qu’elles sont émises par les programmes.

 Les exceptions : arrêts provoqués par une situation exceptionnelle dans le


programme (instruction erronée, accès à une zone mémoire inexistante,
calcul arithmétique incorrect, ...).

 On parle d'interruptions asynchrones pour désigner celles provoquées par un


événement externe, et d'interruptions synchrones pour désigner les
exceptions.
Les Threads
Les threads

 Les threads sont des entités planifiées pour leur exécution par le
processeur.

 Les threads représentent en réalité les programmes en activité là où les


processus servent à regrouper les ressources.

 Etant donné qu’ils ont certaines propriétés des processus, les threads sont
parfois qualifiés de processus légers. (lightweight processes).
Les threads

 On peut donc voir les processus sous un autre angle, en considérant leur
thread d’exécution (chemin d’exécution), que l’on se contente d’appelé
thread.

 Le thread inclut un compteur ordinal qui effectue le suivi des instructions à


exécuter ; des registres qui détiennent ses variables de traitement en
cours ; et une pile qui contient l’historique de l’exécution.

 Bien qu’un thread doivent s’exécuter dans un processus, ils représentent


deux concepts distincts qui peuvent être traités séparément.
Les threads

 Le modèle de processus tel que nous l’avons vu jusqu’ici est fondé sur deux
concepts indépendants : le regroupement des ressources et l’exécution.

 On peut considérer les processus comme des moyens de regrouper des


ressources liées. Un processus a un espace d’adressage contenant un
programme et des données, mais aussi d’autres ressources (les fichiers
ouverts, les processus enfants, etc …).
Les threads

 Dans les systèmes traditionnels (dit monothread) chaque processus


possède un espace d’adressage et un thread de contrôle unique.

Un processus Un thread

Espace Utilisateur

Espace Noyau
Les threads

 Cependant, il arrive qu’on soit obligé de définir plusieurs threads de


contrôle dans un même espace d’adressage, ceux-ci s’exécutant
quasiment en parallèle, comme s’il s’agissait de processus distincts (à
l’exception du fait que l’espace d’adressage est commun).

 Ces systèmes qui permettent ce mécanisme sont appelés : systèmes


multithread.
Les threads

 Deux processus avec chacun 4 threads interactifs

Espace Utilisateur

Espace Noyau
Les threads

 En venant s’ajouter au modèle de processus, les threads autorisent les


exécutions multiples dans le même environnement de processus, avec
une marge d’indépendance importante les uns par rapport aux autres.

 Le fait que plusieurs threads s’exécutent au sein d’un même processus est
comparable au fait que plusieurs processus s’exécutent en parallèle au sein
d’un même ordinateur.
Les threads

 Lorsqu’un processus multithread s’exécute sur un système


monoprocesseur, les threads sont traités chacun à leur tour.

 En basculant d’un processus à l’autre, le système donne l’illusion que des


processus séquentiels distincts s’exécutent en parallèle. Le multithreading
fonctionne de la même manière.

 Le processeur bascule rapidement entre les threads, offrant l’illusion que


les threads s’exécutent en parallèle, chacun sur un processus, et à 1/n de la
vitesse réelle du processeur (n le nombres de threads mis en œuvre).
Les threads

Gestion par le Processus Elément du Thread


Espace d’adressage Compteur ordinal
Variables globale Registres
Fichiers ouverts Pile
Processus enfant Etat
Alertes en attente
Les threads

Ce thread est responsable


de la mise en forme du
document
Ce thread est responsable des
sauvegardes périodiques sur le
disques

Ce thread est responsable


Disque
des interactions entre
l’utilisateur et le clavier

Espace Utilisateur

Espace Noyau

Un traitement de texte à trois threads.


Les threads

 Le concept de thread a pour objet de permettre à plusieurs threads


d’exécution de partager un jeu de ressources pour travailler ensemble, afin
d’accomplir une tâche donnée.

 Généralement, chaque thread appelle des procédures différentes, et a


donc un historique d’exécution différent. C’est pour cette raison que
chaque thread a besoin de sa propre pile, ses propres registres, son propre
compteur ordinal et son propre état.
La Communication
Inter Processus (IPC)
L’objet de ce chapitre sera de parcourir quelques-uns des
problèmes liés à cette communication interprocessus (IPC –
Inter Process Communication)
La Communication Inter Processus (IPC)

 3 problèmes principaux :

 Comment un processus fait-il pour passer une information à un autre ?

 Le deuxième repose sur la nécessité de s’assurer que deux processus, ou plus,


ne produisent pas de conflits lorsqu’ils s’engagent dans des activités critiques

 Le troisième concerne le séquençage en présence de dépendances : Si le


processus A produit des données que le processus B les imprime, B doit
attendre que A ait terminé pour pouvoir remplir sa tâche.
La Communication Inter Processus (IPC)

 Les deux derniers problèmes cités s’appliquent aussi aux threads.

 Pour ce qui est du passage de l’information, cela est aisé pour les threads
dans la mesure où ils partagent le même espace d’adressage commun.

 Les problèmes abordés dans le contexte des processus restent applicables


aux threads.
La Communication Inter Processus (IPC)
Les conditions de concurrence

 Dans la plus part des systèmes d’exploitation, les processus qui


collaborent peuvent partager un espace de stockage commun dans
lequel chacun peut lire et écrire.

 Cette mémoire peut se trouver dans la mémoire principale, ou il peut


s’agir d’un fichier partagé.

 L’emplacement de la mémoire partagée ne modifie pas la nature de la


communication, ni celle des problèmes qui peuvent survenir.
La Communication Inter Processus (IPC)
Les conditions de concurrence

 Cas du spouleur d’impression. Répertoire


 Deux processus veulent accéder à la de spoule
mémoire partagée en même temps. *
Problème : Un processus pourrait ne jamais *
voir son fichier imprimé. *
4 abc out=4

5 prog.c
Processus A
6 prog.n

7 in=7

Processus B *
*
*
La Communication Inter Processus (IPC)
Les conditions de concurrence

 De telles situations où deux processus ou plus lisent ou écrivent des


données partagées et où le résultat dépend de qui s’exécute à un instant
donné sont nommées conditions de concurrences.

 Il n’est pas très amusant de déboguer des programmes contenant des


conditions de concurrence.

 Les résultats des tests sont souvent satisfaisants à première vue mais de
temps en temps, il se produit des situations curieuses et inexpliquées.
La Communication Inter Processus (IPC)
Quelle solution face aux conditions de concurrences ?

 Pour éviter ce genre de situations, il faut trouver une solution pour


interdire que plusieurs processus lisent et écrivent des données partagées
simultanément.

 L’exclusion mutuelle est une méthode qui permet de s’assurer que si un


processus utilise une ressource (fichier ou variable), les autres processus
seront automatiquement exclus de la même activité.

 Sa mise en œuvre de est une question de conception majeure pour tout


système d’exploitation.
La Communication Inter Processus (IPC)
Les sections critiques

 La région critique ou section critique est la partie du programme à partir


de laquelle on accède à la mémoire partagée.

 Eviter les conditions de concurrence revient à empêcher que deux ou


plusieurs processus se trouvent simultanément dans leur section critique.
La Communication Inter Processus (IPC)
Les sections critiques

 Néanmoins, même si cette implémentation permet d’agir sur les


conditions de concurrence, elle ne suffit pas à permettre que des
processus parallèles coopèrent de façon appropriée et utilisent
efficacement les données partagées.

 Trois autres conditions doivent être également réunies pour garantir cela.
La Communication Inter Processus (IPC)
Les sections critiques

 Néanmoins, même si cette implémentation permet d’agir sur les


conditions de concurrence, elle ne suffit pas à permettre que des
processus parallèles coopèrent de façon appropriée et utilisent
efficacement les données partagées.

 Trois autres conditions doivent être également réunies pour garantir cela.
Eviter les
suppositions quant
Garantir
à la vitesse ou au
l’exclusion
nombre de
multuelle
processeurs mis en
œuvre.

Les IPC -
Les sections critiques
Aucun processus
Aucun processus
s’exécutant à
ne doit attendre
l’extérieur de sa
indéfiniment pour
section critique ne
pouvoir entrer
doit bloquer
dans sa section
d’autres
critique.
processus.
La Communication Inter Processus (IPC)
Les sections critiques

A entre dans sa A quitte sa section


section critique critique
Processus A

B tente d’entrer B entre dans sa B quitte sa section


dans sa section section critique critique
critique

Processus B

T1 T2 T3 T4
Temps

Exclusion mutuelle à l’aide section critique


La Communication Inter Processus (IPC)
Les sections critiques

 Les solutions face aux problèmes liés aux IPC :

1. Désactivation des interruptions

2. L’exclusion mutuelle avec attente active


 Variable de verrou
 Alternance stricte
3. L’exclusion mutuelle sans attente active
 Le sommeil et l’activation
 Les sémaphores
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Désactivation des interruptions


 La solution la plus simple est que chaque processus :
 désactive toutes les interruptions juste après leur entrée dans la section
critique et
 les réactive juste après l’avoir quittée.

 Lorsque les interruptions sont gelées, le processeur ne peut plus


basculer d’un processus à un autre processus.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Désactivation des interruptions (limites)


 Il n’est pas très judicieux de donner aux processus utilisateurs le
pouvoir de désactiver les interruptions.
 Qu’adviendrait-il si on les réactivait jamais ?

 En outre dans le cas d’un système multiprocesseur, la désactivation


des interruptions n’impacte que le processeur qui exécute
l’instruction concernée.
 Les autres continuent de s’exécuter et peuvent accéder à la mémoire
partagée.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Désactivation des interruptions (cas exceptionnels)


 La désactivation des interruptions est souvent intéressante au sein
du SE lui-même, mais elle n’est pas appropriée en tant que
mécanisme d’exclusion mutuelle pour les processus utilisateurs.

 Exemples : mise à jour de la liste des processus.


La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Variable de verrou (avec attente active)


 Malheureusement, cette solution présente le même inconvénient
majeur que celui que nous avons vu au niveau du répertoire de
spoule.

 Limite : Deux processus peuvent se retrouver simultanément dans


leur section critique.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Alternance stricte (avec attente active)

while (true){ while (true){


while (turn != 0) /*loop*/ ; while (turn != 1) /*loop*/ ;
critical_region(); critical_region();
turn = 1; turn = 0;
noncritical_region(); noncritical_region();
} }

(a) - Processus A (b) - Processus B


La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Alternance stricte (avec attente active)


 Malheureusement, cette démarche entre en conflit avec les
conditions garantissant une IPC efficace.

 Limite : Un processus peut être bloqué par un autre processus, hors


de sa section critique.

 Elle peut entraîner également le problème de l’inversion des


priorités.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Sommeil et Activation (sans attente active)


 Cette solution utilisent des primitives de communication
interprocessus qui bloquent au lieu de consommer du temps
processeur lorsqu’elles n’obtiennent pas l’autorisation d’entrer dans
leur section critique.

 L’une des plus simple fonctionne avec la paire sleep et wakeup.


La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Sommeil et Activation (sans attente active)


 sleep est un appel système qui provoque le blocage de l’appelant.
Celui-ci est suspendu jusqu’à ce qu’un autre processus le réveille.

 L’appel wakeup prend un paramètre, désignant le processus à


réveiller.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Problème du Producteur – Consommateur


 Principe : « Deux processus partagent un tampon commun de taille
fixe. L’un d’eux, le producteur, place des informations dans le
tampon et l’autre, le consommateur, les récupère. »

 Les problèmes se produisent lorsque :


1. Le producteur souhaite placer un nouvel élément dans le tampon
alors que ce dernier est déjà plein ➔ Entrée en sommeil.
2. Le consommateur souhaite récupérer un élément du tampon et il
constate que celui-ci est vide ➔ Entrée en sommeil.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Code du Producteur

#define N 100 // Nombre de connecteurs dans le tampon


int count = 0; // nombre d’éléments dans le tampon
void producer(void) {
int item;
while(true) { // se répète en continu
item = produce_item(); // génère l’élément suivant
if(count == N) sleep(); // Tempon plein => Entre en sommeil
insert_item(item); // place l’élément dans le tampon
count ++; // incrémente le nombre d’éléments dans le tampon
if(count == 1) wakeup(consumer); // le tampon était vide ?
}
}
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Code du Consommateur

#define N 100 // Nombre de connecteurs dans le tampon


int count = 0; // nombre d’éléments dans le tampon
void consumer(void){
int item;
while(true) { // se répète en continu
if(count == 0) sleep(); // si le tampon est vide entre en sommeil
item = remove_item(); // prélève un élément dans le tampon
count--; // décrémente le nombre d’éléments dans le tampon
if(count == N-1) wakeup(producer); // le tampon était plein ?
consume_item(item); // imprime l’élément
}
}
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Problème du Producteur – Consommateur

 Limite : Une faille (l’accès au décompte) peut entraîner des


conditions de concurrence. L’ordonnancement des deux processus
peut conduire à ce que les deux « dorment » pour toujours …
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Les Sémaphores (sans attente active)

 En 1965, lorsque E. W Dijstra suggéra d’utiliser un nouveau type de


variable entière qui devrait permettre de décompter le nombre de
wakeup enregistrés pour un usage ultérieur.

 Ce nouveau type de variable est appelé un sémaphore.

 La valeur nulle indique qu’aucun wakeup n’était enregistré ; une


valeur positive, indique le nombre de wakeup en cours.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Les Sémaphores (sans attente active)

 Variable entière partagée.

 Sa valeur est positive ou nulle et elle est uniquement manipulable à


l’aide de deux opérations P(sem) et V(sem), où sem est un
identificateur désignant le sémaphore.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Les Sémaphores (sans attente active)

 L’opération P(sem) pour dire « Puis-je accéder à la ressource ? »


décrémente la valeur de sem si elle est > 0 sinon le processus
exécutant l’opération mis en attente.

 L'opération P est en attente jusqu'à ce qu'une ressource soit


disponible, ressource qui sera immédiatement allouée au processus
courant.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Les Sémaphores (sans attente active)

 L’opération V(sem) pour dire « Vas-y! La ressource est disponible »


incrémente la valeur du sémaphore.

 Cette opération rend simplement une ressource disponible à


nouveau après que le processus ait terminé de l'utiliser.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Les Sémaphores (sans attente active)

 Les activités de vérification, de modification et éventuellement de


mise en sommeil (ou en file d’attente) sont toutes effectuées dans le
cadre d’une action atomique, unique et indivisible.

 Il garantit que, une fois qu’un sémaphore a démarré, aucun autre


processus ne peut y accéder tant que l’opération n’est pas terminée
ou bloquée.

 Cette atomicité est essentielle à la résolution des problèmes de


synchronisation, ainsi que pour éviter les conditions de concurrence.
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Modélisation des Sémaphores

 Le concept de sémaphore est implémenté dans la plupart des


systèmes d’exploitation car il permet une solution à la plupart des
problèmes d’exclusion.
 Ce concept nécessite la mise en œuvre :
 d’une variable : le sémaphore, caractérisant les ressources et
permettant de les gérer.
 de deux opérations atomiques associées P (requisition de la ressource)
et V (libération de la ressource) et
 d’une file d’attente de processus (mise en attente des processus
concurrents).
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Modélisation des Sémaphores

SEM

P(sem)
File d’attente des
processus (endormis)

V(sem) compteur
La Communication Inter Processus (IPC)
Les solutions aux problèmes de concurrences

 Résolution du problème P/C avec les Sémaphores

 Cette solution utilise trois sémaphores :


 full : pour compter le nombre d’emplacements occupés.
 empty : pour compter le nombre d’emplacements vides.
 mutex : sémaphore binaire pour s’assurer que le producteur et le
consommateur n’accède pas simultanément au tempon.

 Au départ, full est à 0, empty est égal au nombre de connecteurs dans


le tampon, et mutex et égal à 1.
La Communication Inter Processus (IPC)
Résolution du problème P/C avec les Sémaphores

#define N 100 /* nombre d’emplacements dans le tampon */


typedef struct semaphore {
int compteur;
FileProcessus wq_processus; /* waiting queue processus */
} Semaphore ; /* les sémaphores sont un type de variables int spécial */

Semaphore mutex;
mutex.compteur = 1; /* contrôle l’accès à la section critique */
mutex.wq_processus = initialiser (); /* initialisation à vide */

Semaphore full;
full.compteur = 0; /* compte les emplacement vides dans le tampon */
full.wq_processus = initialiser ();

Semaphore empty;
empty.compteur = N; /* compte les emplacements pleins */
empty.wq_processus = initialiser ();
La Communication Inter Processus (IPC)
Résolution du problème P/C avec les Sémaphores

void producer (void) {


int item;
while (true){
/* genère un item à placer dans le tempon */
item = producer_item();

P(&empty); /* décrémente le décompte des emplacements vides */

P(&mutex); /* entre en section critique*/


insert_item(item); /* place un nouvel élément dans le tampon */
V(&mutex); /* quitte la section critique */

V(&full); /* incrémente le décompte des emplacements pleins */


}
}
La Communication Inter Processus (IPC)
Résolution du problème P/C avec les Sémaphores

void consumer(void){
int item;
while (true) { /* boucle sans fin */
P(&full); /* décrémente le décompte des emplacements pleins */

P(&mutex); /* entre en section critique */


item = remove_item(); /* place un nouvel élément dans le tampon*/
V(&mutex); /* quitte la section critique*/

V(&empty); /* incrémente le décompte des emplacements vides*/

consume_item(item); /* fait quelque chose avec l’élément*/


}
}
L’ordonnancement
L’objet de ce chapitre sera de parcourir les différents
algorithmes d’ordonnancement utilisés dans la gestion des
processus.
C’est Quoi ordonnancer ?

1- Décider quand interrompre le processus


en cours d’exécution.

2- Choisir dans la liste des processus


prêts, le processus à exécuter.

3- Déterminer la durée d’exécution du


processus élu.
Qui réalise l’ordonnancement ? Comment ?

 La partie du système d’exploitation qui réalise ses actions se nomme


l’ « ordonnanceur » (scheduler) et l’algorithme qu’il utilise est appelé :
« algorithme d’ordonnancement » (scheduler algorithm).
Quand ordonnancer ?

1- Création d’un nouveau 2- Arrêt/Terminaison d’un 3- Interruption matérielle


processus processus. (E/S)
Il faut décider s’il faut exécuter Un autre processus doit être choisi Tout processus qui était bloqué
d’abord le processus parent ou parmi les processus prêts. Si aucun en attente d’une opération d’E/S
le processus enfant. processus n’est prêt, un processus peut désormais être exécuté.
d’inactivité fourni par le système
s’exécute.
Comment ordonnancer ?

 L’ordonnanceur de processus planifie différents processus à affecter


au CPU en fonction des algorithmes d’ordonnancement mis en œuvre
dans le système.
Comment ordonnancer ?

First In First-Out (FIFO) Scheduling

Shortest-Job-First (SJF) Scheduling

Priority Scheduling

Shortest Remaining Time Scheduling

Round Robin (RR) Scheduling (Le tourniquet)

Fair Scheduling (Algorithme Equitable)


 Avec cet algorithme, les processus se voient attribuer du temps processeur selon
leur ordre d’arrivée.
 Lorsque le premier pocessus est créé dans le système, il est démarré
immédiatement et autorisé à s’exécuter aussi longtemps qu’il le souhaite.
 Les processus créés par la suite prennent place dans la file d’attente. Lorsque le
processus en cours bloque, le premier processus de la file est exécuté.
 Lorsqu’un processus bloqué redevient prêt, il est placé dans en queue de file, tout
comme un nouveau processus.

First In First-Out (FIFO) Scheduling - Principe


Processus Heure d’arrivée Durée d’exécution Heure de service
P0 0 5 ms 0
P1 1 3 ms 5
P2 2 8 ms 8
P3 3 6 ms 16

Processus Temps d’attente : Heure de service – Heure d’arrivée


P0 0-0=0
P1 5–1=4
P2 8–2=6
P3 16 – 3 = 13
Temps moyen d’attente (Average Waiting Time) = ( 0 + 4 + 6 + 13 ) / 4 = 5.75 ms

First In First-Out (FIFO) Scheduling - AWT


 Il s’agit là d’un algorithme de traitement par lots qui suppose que les temps
d’exécution soient connus d’avance.

 Lorsque plusieurs processus d’importance égale se trouvent dans la file d’attente,


l’ordonnanceur choisit le processus ayant le temps d’éxécution le plus court en
premier (shortest job first).

Shortest-Job-First (SJF) Scheduling - Principe


Processus Heure d’arrivée Durée d’exécution Heure de service
P0 0 5 ms 0
P1 1 3 ms 5
P2 2 8 ms 14
P3 3 6 ms 8

Processus Temps d’attente : Heure de service – Heure d’arrivée


P0 0-0=0
P1 5–1=4
P2 14 – 2 = 12
P3 8–3=5
Temps moyen d’attente (Average Waiting Time) = ( 0 + 4 + 12 + 5 ) / 4 = 5.25 ms

Shortest-Job-First (SJF) Scheduling - AWT


 Avec cet algorithme chaque processus détient un niveau de priorité.
 L’algorithme sélectionne toujours le processus ayant le niveau de priorité le plus
élevé dans la liste des processus prêts.

Priority Scheduling - Principe


Heure Durée d’exécution Heure de
Processus Priorité
d’arrivée restante service
P0 0 5 1 0
P1 1 3 2 1
P2 2 8 1 10
P3 3 6 3 3
P0 1 4 1 18
P1 3 1 2 9

Processus Temps d’attente : Heure de service – Heure d’arrivée


P0 (0 – 0) + (18 - 1) = 17
P1 (1 - 1) + (9 - 3) = 6
P2 (10 - 2) = 8
P3 (3 – 3) = 0
Temps moyen d’attente (Average Waiting Time) = ( 17 + 6 + 8 + 0 ) / 4 = 7.75 ms

Priority Scheduling - AWT


 Avec cet algorithme l’ordonnanceur choisit toujours le processus dont le temps
restant d’exécution est le plus court. Encore une fois, le temps d’exécution doit être
connu par avance.

 Lorsqu’un nouveau processus est créé, son temps total est comparé au temps
restant du processus en cours. Si le nouveau processus est plus court que le
processus en cours, ce dernier est suspendu et le nouveau processus est lancé.

 Cet algorithme favorise le service des processus courts.

Shortest Remaining Time Scheduling - Principe


 Avec cet algorithme (dit de type tourniquet), chaque processus se voit assigner un
intervalle de temps appelé quantum, pendant lequel il est autorisé à s’exécuter.

 Si à l’issue de son quantum, le processus est toujours entrain de s’exécuter, il est


interrompu et le processeur est attribué à un autre processus.

 Si le processus a bloqué ou s’est terminé avant la fin du quantum, le basculement


du processus à un autre par le processeur s’effectue naturellement.

Round Robin (RR) Scheduling (Le tourniquet) - Principe


Processus (temps restant) Heure d’arrivée Heure de service
P0 (5) 0 0
P1 (3) 1 3
P2 (8) 2 6
P3 (6) 3 9
P0 (2) 3 12
P2 (5) 9 14
P3 (3) 12 17
P2 (2) 17 20
Processus Temps d’attente : Heure de service – Heure d’arrivée
P0 (0 - 0) + (12 - 3) = 9
P1 (3 - 1) = 2
P2 (6 - 2) + (14 - 9) + (20 - 17) = 12
P3 (9 - 3) + (17 - 12) = 11
Temps moyen d’attente (Average Waiting Time) = (9+2+12+11) / 4 = 8.5 ms

Round Robin (RR) Scheduling (Le tourniquet) - Principe


 Jusqu’à présent, nous sommes partis du principe que chaque processus est
ordonnancé pour lui-même; nous n’avons pas pris son propriétaire en
considération.

 Par conséquent, si l’utilisateur 1 lance 9 processus et que l’utilisateur 2 en démarre


qu’un, avec l’algorithme de type tourniquet ou des priorités égales, l’utilisateur 1
récupère 90% du processeur et l’utilisateur 2 doit se contenter de 10%.

 Pour éviter une telle situation, certains systèmes tiennent compte du propriétaire
du processus.

Fair Scheduling (Algorithme Equitable) - Principe


 Selon ce modèle, chaque processus se voit allouer une fraction du temps
processeur, et l’ordonnancement sélectionne les fractions de façon que cette
répartition soit respectée.

 Ainsi, si deux utilisateurs ont droit à 50% du temps processeur, ils les obtiendront
quel que soit le nombre de processus qu’ils ont lancés.

Fair Scheduling (Algorithme Equitable) - Principe


FIN ☺

Vous aimerez peut-être aussi