Vous êtes sur la page 1sur 129

Système d’exploitation

Mohammed Lamarti Sefian


Généralités sur les systèmes d’exploitation
I Introduction

Le système d’exploitation (SE) est un ensemble de programme qui permet la


gestion des ressources matérielles (UC, Périphériques, Tablettes, Téléphones,…).
Il est l’intermédiaire entre #l’utilisateur ou/et une application# et le matériel
physique.

Système
Hardware Application Utilisateurs
d’exploitation
II Fonctionnalités
 Le SE gère les interactions entre le processeur et (la mémoire et les
périphériques)

 Il contrôle les chemins de données:

Disque Dur Proceseur RAM

 Il permet de charger les applications et les périphériques

 Il contrôle les entrées et les sorties

 Il détecte les erreurs et les virus

 Il gère l’allocation du processeur entre les différents programme grâce à un


programme d’ordonnancement
II Fonctionnalités (suite)
 Il est chargé de gérer l’espace mémoire physique alloué à chaque application.
En cas d’insuffisance de mémoire physique, il fait recours à la création d’une
zone mémoire sur le DD appelé mémoire virtuelle (plus lente).

 Il est chargé de la sécurité liée à l’exécution des programmes en garantissant


que les ressources ne sont utilisées que par les programmes et les utilisateurs
possédants les droits.

 Il gère la lecture et l’écriture dans le système des fichiers et les droits


d’accès aux fichiers par les utilisateurs et les applications.

 Il permet de fournir un certain nombre d’indicateurs veillant à diagnostiquer


le bon fonctionnement de la machine.
Typologie des systèmes d’exploitation

Plusieurs façons de donner une typologie des SE, on peut le faire selon
l’utilisation d’interface:

 CLI: Command Line Interface; où l’on utilise la machine à travers des


commandes (Ex: Dos)

 GUI: Graphical User Interface; depuis les années 80, l’utilisateur bascule sa
machine à travers des cliques sur des graphiques (ex: Windows, Linux, Mac os)

 ZUI: Zooming User Interface; l’interface permet d’exploiter la machines à


travers des graphiques en zoomant ou « dé-zoomant » celle ci
CLI: MS-DOS

Le rôle de Ms-Dos est d’interpréter les commandes saisi par l’utilisateur afin de
réaliser les tâches suivantes:

 Gestion des fichiers et des dossiers

 Gestion des droits (lecture, écriture, exécution)

 La mise à jours des disques

 La configuration du matériel

 L’optimisation de la mémoire

 L’exécution des programmes


Exemple de commandes

 CLS: Efface l’ecran

 DIR:Affiche la liste des fichiers et des répertoires et sous répertoires

 CD..: Monter dans la racine d’un sous répertoire

 CD chemin de répertoire: change le répertoire en cours vers le chemin indiqué

 D: ou F: .. Accès à la partition

 Md: créer un dossier

 Rd: supprime un dossier

 Del: supprime un fichier


Exercice TP

 Donner la définition des commandes suivantes:

 Tree, ver, vol, copy, ren, exit, chkdsk, attrib, format, ipconfig

Travail de recherche
 Chercher 30 commande de ms-dos en donnant leur définition
Fichier Informatique

Un fichier informatique est un ensemble de données « numériques » réunies sous un même noms,

enregistrées sur un support de stockage permanent appelé mémoire de masse. Il comporte un nom de

fichier qui sert à désigner le contenu y accéder. En dos et windows, le nom comporte une extension qui

définissent le format de fichier: (convention selon laquelle les informations sont numérisées.

Des droits sur un fichier permettant de restreindre les accès à un fichier informatique peuvent être

attribuer à travers certains paramètres, les trois principaux droits sur les fichiers sont:

 La lecture

 L’écriture

 L’exécution
Exercice TP

 Redéfinir la commande attrib et ses paramètres

 Créer un fichier test.txt

 Cacher ce fichier
Fichier Batch

 Un fichier Batch est un fichier texte contenant des commandes MS-DOS, et

possédant le suffixe ".bat"

 Un fichier Batch est constitué de commandes DOS et autres commandes

spécifiques.

 Le langage Batch n'est pas compilé, il est interprété par COMMAND.COM

 Créer un fichier à travers la commande type nul>nom_fichier.extension

 Écrire dans un fichier echo texte à écrire >>fichier.extension

 un fichier batch est un fichier texte « brut » (*.txt) sans formatage particulier
Programmation Batch
 ECHO: Cette commande a plusieurs significations:

 Afficher du texte, on utilise : « ECHO » suivi du texte à afficher

 Activer ou désactiver l’écho : « ECHO ON » ou « ECHO OFF »

 Afficher l’état de l’écho (actif / non actif) : « ECHO »

 REM : Permet d’ajouter un commentaire

 PAUSE : Demande une validation clavier avant de terminer le programme

Exemple :
ECHO Bonjour tout le monde
ECHO OFF ECHO
ECHO. " permet d'afficher une ligne vide"
ECHO OFF
REM Ceci est un commentaire
Mon 1 programme Batch
Explique ce que réalise ce programme

@echo off
echo Bonjour Je m’appelle Mohammed
echo.
Echo Je suis en année DUT filiere MCW
echo.
F:
Md test
Cd test
type nul>test.txt
echo ce matin est mercredi 04 october 2017 > test.txt
pause
echo mon premier fichier crée >>test.txt
pause
Echo au revoir > test.txt
pause
Programmation Batch: Variables
Variable d’environnement: Correspond au nom de variable que l’on
peut utiliser pour stocker des données. Elle représente une valeur
accessible n’importe où et n'importe quand dans l'environnement DOS du
processus qui la pose.
Pour lire le contenu d’une variable, on l’encadre de deux « % »
Syntaxe:
Set NomDeVariable=Valeur
Exemple: (Décrire ce batch)
@echo off
set nom=Quel est votre nom?
echo Ah, vous etes %nom%...
echo.
echo off
set /p sava=Comment ca va ?
echo Moi aussi %sava%
set /p sentiment=M'aimes tu ?
echo je pense pareil que toi c ^à dire %sentiment%
BATCH : Saut
 La commande Goto permet de faire un saut à un emplacement bien précis par
un label.
Syntaxe :
Goto NomLabel
 :NomLabel
 Le label ne doit pas dépasser 8 caractères
 La marque ":Label" est un "mot" précédé de deux points (":")

Exemple:
@echo off
:Start
echo Hello, World !
Goto Start
BATCH : Condition
Syntaxe :
If "<condition>"=="<valeur>" <action>
 "<action>" représente une seule commande à exécuter
 Il est important de :
 Toujours encadrer la condition et la valeur à tester par des guillemets
 De veiller à utiliser, lors d'un test, le double signe égal (== au lieu de =)

Exemple1: Exemple2:

@echo off @echo off


set /p conner=Connais tu alex ? If exist F:\test.bat copy f:\test.bat f:\test.txt
echo ok :) set /p a=
set /P choix=c est ton ami (O=Oui ; N=Non) ? : Pause
If /I %choix%==O (
echo moi aussi
) else
If /I %choix%==N (
echo moi non plus
)
pause
Chargement du SE
BIOS/ROM/CMOS
 BIOS = Basic Input/Output System
 Le BIOS est le premier programme chargé en mémoire dès que vous allumez
votre ordinateur. Il assure plusieurs fonctions:
 le POST (Pre-Operating System Tests ou Power-On Self-Tests selon les écoles) :
c'est l'ensemble des tests qu'effectue le BIOS avant de démarrer le système
d'exploitation:
 vérifier que la carte mère fonctionne bien (barrettes de mémoire vive (RAM), contrôleurs
de ports série, parallèle, IDE, etc.)

 vérifier que les périphériques simples ("Basic") connectés à la carte mère fonctionnent
bien (clavier, carte graphique, disques dur, lecteur de disquette, lecteur de CD-Rom...)

 paramétrer la carte mère (à partir des informations stockées dans les CMOS (voir ci-
dessous)).

 chercher un disque sur lequel il y a un système d'exploitation prêt à démarrer.

 Le BIOS peut également rendre des services au système d'exploitation en


assurant la communication entre les logiciels et les périphériques, mais
seulement pour les périphérique simples (clavier, écran, etc.).
Exercice TP

 Découvrir le BIOS
Chargement du SE
BIOS/ROM/CMOS
La mémoire morte (ou ROM pour Read Only Memory) : cette mémoire ne perd pas ses
données (sauf par des techniques de réécriture, comme le flashage pour les mémoires
flash), même si elle n'est pas rafraîchie. On appelle les mémoires n'ayant pas besoin d'être
rafraîchies pour conserver leurs informations des mémoires statiques. Elles sont composées
de bascules électroniques et permettent de stocker plus d'informations à espace identique
comparé aux mémoires dynamiques. Il en existe de différents types :
 ROM : on gravait les données binaires sur une plaque de silicium grâce à un masque. Il
était impossible de reprogrammer cette mémoire.
 PROM (Programmable Read Only Memory) : Ces mémoires sont constituées de fusibles
pouvant être grillés grâce à un appareil qui envoie une forte tension (12V) dans
certains fusibles. Un fusible grillé correspond à un 0, et un fusible non grillé à un 1. Ces
mémoires ne peuvent être programmées qu'une fois.
 EPROM (Erasable Programmable Read Only Memory) : Même principe que l'EPROM,
sauf que cette mémoire est effaçable. Lorsqu'on la met en présence de rayons ultra-
violets d'une longueur d'onde précise, les fusibles sont reconstitués, et tous les bit
reviennent à une valeur de 1.
 EEPROM (Electrically Erasable read Only Memory) : Ce sont aussi des PROM effaçables,
par un courant électrique toutefois. Elles peuvent être effacées même lorsqu'elles sont
en position dans l'ordinateur. Ces mémoires sont aussi appelées mémoires flash, et donc
voilà pourquoi on appelle flashage l'opération qui consiste à flasher une mémoire
EEPROM.
Chargement du SE
BIOS/ROM/CMOS
 CMOS = Complementary Metal Oxide Semiconductor

 C'est un type de puce capable de stocker des informations et de les conserver même
quand l'ordinateur est éteint. Leur contenu est maintenu par un faible courant
électrique fourni par une pile. Ces mémoires peuvent être modifiée souvent sans
dommage.

 Le BIOS vient lire des informations dans cette mémoire quand vous allumez l'ordinateur.
Il y stocke également la date et l'heure et vient régulièrement les mettre à jour.

 Les mémoires CMOS sont plus lentes que celles utilisées pour le fonctionnement
courant de l'ordinateur (la mémoire vive (RAM) est souvent de type DDRAM, SDRAM,
EDO...). Les CMOS ont l'avantage de consommer peu de courant par rapport à leurs
grandes soeurs.
Stockage du BIOS
Le BIOS (Basic Input Output System) est un petit programme situé dans
plusieurs types de mémoires différentes :

 une partie dans une mémoire ROM (Read Only Memory), cette partie
est non modifiable (il s'agit du boot block).

 La deuxième partie du BIOS se situe dans une mémoire dont le


contenu est modifiable (l'EEPROM). C'est cette partie que l'on modifie
lorsqu'on parle du terme "flashage".

 La troisième partie du BIOS se situe dans la mémoire CMOS, cette


mémoire contient tous les paramètres du BIOS.
Stockage du BIOS
Le BIOS charge tous les périphériques de base et effectuer un test du système.
Cette phase de démarrage est appelée POST (Power On Self Test) qui consiste au
démarrage à:

 Effectuer un test du processeur en premier, puis vérifie le BIOS.

 Chercher à récupérer les paramètres du BIOS et va donc vérifier le contenu de


la mémoire CMOS

 Initialiser l'horloge interne et le contrôleur DMA

 Contrôler le bon fonctionnement des mémoires (vive et cache)

 Vérifier les différents périphériques : carte graphique, disques durs, lecteurs de


disquettes et CD-ROM. Si un problème survient, le BIOS donne la source du
problème en fonction du nombre de bips qu'il émet.

 Répartir les différentes IRQ (Interruptions Request) et canaux DMA (Direct


Memory Acces) disponibles entre tous les périphériques
Bip de démarrage
Il peut arriver que vous entendiez des "bips" lorsque votre PC démarre. Leur nombre et leur
durée sont autant d'indications qui pourront vous mettre sur la piste d'un éventuel problème
matériel que nous allons tenter de diagnostiquer ici. La signification des bips permet de détecter
les erreurs du démarrage, elle dépend de la carte mère. Voici donc la signification des bips du
bios au démarrage d’un type de carte mère :

Bips Signification Remède possible

1 bip court Le système boote correctement

2 bips courts Erreurs dans les paramètres CMOS

1 bip long + 1 bip court Erreur de carte-mère ou de RAM


Erreur dans le système d'affichage
1 bip long + 2 bips courts
(carte ou adaptateur graphique)

1 bip long + 3 bips courts Erreur de clavier

1 bip long + 9 bips courts Erreur dans la ROM du BIOS

Une infinité de bips longs Erreur de RAM

Une infinité de bips courts Erreur d'alimentation


Bip de démarrage
Il peut arriver que vous entendiez des "bips" lorsque votre PC démarre. Leur nombre et leur
durée sont autant d'indications qui pourront vous mettre sur la piste d'un éventuel problème
matériel que nous allons tenter de diagnostiquer ici. La signification des bips permet de détecter
les erreurs du démarrage, elle dépend de la carte mère. Voici donc la signification des bips du
bios au démarrage d’un type de carte mère :

Bips Signification Remède possible

1 bip court Le système boote correctement Si il n'y a pas de solution, c'est qu'il n'y a pas de problème !
Utilisez le cavalier Clear CMOS ou enlevez la pile plate afin
2 bips courts Erreurs dans les paramètres CMOS d'effacer le contenu de la mémoire CMOS. Vous devrez ensuite
reparamétrer le BIOS (FSB, etc...).
1 bip long + 1 bip court Erreur de carte-mère ou de RAM Testez vos barrettes de mémoire vive et votre carte-mère.
Erreur dans le système d'affichage Vérifiez la connexion de la carte graphique (il se peut qu'elle soit
1 bip long + 2 bips courts
(carte ou adaptateur graphique) mal enfoncée).
Vérifiez que votre clavier soit bien enfoncé. Si le problème n'est
1 bip long + 3 bips courts Erreur de clavier
pas résolu, testez avec un autre clavier
1 bip long + 9 bips courts Erreur dans la ROM du BIOS Faites un flashage du BIOS

Une infinité de bips longs Erreur de RAM Testez vos barrettes de mémoire vive.

Une infinité de bips courts Erreur d'alimentation Testez votre système avec une autre alimentation.
Caractéristiques particulières d'un système
d'exploitation
 Un système d'exploitation est dit multi-tâche (multithreaded) lorsque
plusieurs tâches (également appelées processus) peuvent être exécutées
simultanément.

 Le multiprocessing est une technique consistant à faire fonctionner plusieurs processeurs


en parallèle afin d'obtenir une puissance de calcul plus importante que celle obtenue
avec un processeur haut de gamme ou bien afin d'augmenter la disponibilité du système
(en cas de panne d'un processeur).

 Les systèmes embarqués sont des systèmes d'exploitation prévus pour fonctionner sur
des machines de petite taille, telles que des PDA ou des appareils électroniques
autonomes (robot, ordinateur de bord de véhicule, etc.).

 Les systèmes temps réel (real time systems), essentiellement utilisés dans l'industrie,
sont des systèmes dont l'objectif est de fonctionner dans un environnement contraint
temporellement, c'est-à-dire qu'il doit être capable de délivrer un traitement correct des
informations reçues à des intervalles de temps bien définis (réguliers ou non).

 Les systèmes distribués qui permettent l'éxecution d'un seul programme sur plusieurs
machines
Processus et Thread
Processus

Définition

 Un processus est un enchaînement partiellement ordonné d’exécution d’activités


dont le déroulement vise à réaliser un objectif donné..

Différence processus, processeur, programme

 Le processus est une instance d'un programme en cours d'exécution. Il contient les
instructions du programme chargées en mémoire. Il possède un ou plusieurs threads
exécutant des tâches spécifiques. Il peut être actif ou passif, en attente d'un
événement extérieur, tandis qu’un processeur est un composant dans le PC, c'est lui qui
s'occupe d'effectuer les calculs dont le PC à besoin pour l'utilisation
Processus et Thread
Processus

Modèle de processus

Les logiciels exécutables et parfois le SE sont organisé en un certain nombre de processus séquentiels. En

effet, le nombre de processeurs étant réduit, un processeur bascule constamment d’un processus à un

autre, c’est une exécution « pseudo » parallèle.

En effet, Une machine monoprocesseur simple ne peut effectuer qu'un seul calcul à la fois donc ne peut

travailler, à un instant donné, que pour un seul processus. La simultanéité vraie n'existe donc pas. Cela

signifie que pour donner l'impression de simultanéité le processeur doit s'intéresser tour à tour à chaque

processus très rapidement. S'il revient suffisamment vite à chaque processus, un observateur aura le

sentiment que tous les processus avancent simultanément.


Processus et Thread
Processus

Modèle de processus

Seul un ordinateur qui possèderait plusieurs processeurs (machines multi-

processeurs et machines massivement parallèles) permet une simultanéité

complète. Cependant, nous verrons qu'on peut en donner l'apparence, avec un

monoprocesseur, car l' écoulement du temps, à l'échelle d'un être humain, est

infiniment lente par rapport à la rapidité d'un processeur.


Processus et Thread
Processus

Exécution

On peut ainsi envisager trois méthodes pour exécuter deux


processus P et Q concurrents :
 Exécuter P entièrement puis charger le contexte de Q et
l'exécuter à son tour .
 Alterner les deux processus: on exécute alternativement
une série d'instructions de l'un puis de l'autre processus. Ils
sont arrêtés en des points interruptibles ou observables.
cependant lorsque le processus actif est interrompu par une
entrées-sortie, il faut prévoir un mécanisme pour démarrer
immédiatement l'autre processus.
 Ade processeurs que de processus. Chaque processus
s'exécute sur un processeur distinct. C'est le seul cas de vrai
parallélisme.
Processus et Thread
Processus
Les SE ont besoin de savoir que les processus nécessaire existent bel et bien, pour des systèmes
simples, il peut être envisageable que tous les processus soient actifs pendant le fonctionnement du
système. En revanche, les systèmes généralistes ont besoin de disposer d’une méthode pour créer et
arrêter un processus

Création d’un processus

Un processus peut être déclencher par l’un des événements suivants:

 Initialisation du système;

 Exécution d’un appel système de création de processus par un processus en cours d’exécution;

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

 Initialisation d’un trvail en traitement par lots


Processus et Thread
Processus
Fin d’un processus:

Quatre événements peuvent mettre fin à un processus:

 Arrêt Normal (volontaire) ;

 Arrêt pour erreur (volontaire);

 Arrêt pour erreur fatale(involontaire);

 Le processus est arrêté par un autre processus (involontaire).


Processus et Thread
Processus
Hiérarchie des processus:

Sur certains système, la création d’un processus « enfant » par un processus « parent», la
famille père et descendant peuvent être associés d’une certaine manière.

 Sous Windows: le seul concept d’hiérarchie peut être au lancement d’un processus
(jeton handle pour contrôler le processus), or le « handle » peut être passer à un autre
processus;

 Sous Unix (et familles), un processus et tout ces descendants forment un groupe de
processus. Lorsqu’un utilisateur envoie un signal cavier, il est délivré à tous les membres
du groupe, chacun de ces membres peut intercepter le signal, l’ignorer ou adopter
l’action.
Processus et Thread
Processus

Etat des processus:

A la phase nouveau, le SE crée un processus en lui atribuant un identificateur pour le

processus (PID) et en construisant les tableaux pour gérer le processus cependant le

processus n’est pas en mode exécution;

À la phase terminé; Le processus n ’est plus exécutable, mais ses données sont

encore requises par le SE (comptabilité, …)


Processus et Thread
Processus
Etat des processus:

Dès sa créations et avant sa fin, un


processus peut être dans l’une des trois
états suivant:

 En cours d’exécution: le processus


utulise le processeur

 Prêt: temporairement arrêté

 Bloqué: En attente d’un événement


externe
Processus et Thread
Processus
Transition entre état des processus:

4 transitions sont possibles entre les trois états décrits:

 Transition1: le processus s’aperçoit qu’il ne peut pas poursuivre son exécution;

 Transition2: provoqué par l’ordonnanceur, lorsque ce dernier juge que le processus


a pris suffisamment de temps;

 Transition3: provoqué par l’ordonnanceur, lorsque ce dernier juge que les autres
processus ont bénéficié suffisamment de temps;

 Transition4: l’événement externe attendu est produit.


Processus et Thread
Processus
Etats particuliers
Selon les systèmes d'exploitation, ces différents états peuvent aussi
être possibles :
 Zombie :Si un processus terminé ne peut pas être déchargé de la
mémoire, par exemple, si un de ses fils n'est pas terminé, il passe
dans un état appelé zombie.
 Swappé :Lorsqu'un processus est transféré de la mémoire centrale
dans la mémoire virtuelle.
 Préempté : L'ordonnanceur a décidé de suspendre l'activité d'un
processus. Un ordonnanceur préemptif utilise aussi l'indice de
priorité (nice) pour décider le processus qui sera préempté.
 Exécution en espace utilisateur : L'exécution a lieu dans un
espace limité: seules certaines instructions sont disponibles.
 Exécution en espace noyau : L'exécution du processus n'est pas
limitée. Par exemple, un processus dans cet état peut aller lire
dans la mémoire d'un autre.
Processus et Thread
Processus

SE et Implémentation d’un processus:

 Le SE maintien une table des processus et contenant une entrée par processus

(blocs de contrôle de processus « PCB »). Ces entrées contiennent des

informations relatives aux éléments concernant:

 Gestion du processus : Informations relatives aux processus afin qu’il puisse

redémarrer ultérieurement à chaque moment

 Gestion de la mémoire:

 Gestion de fichier:
Processus et Thread
Processus

Les champs les plus importants dans une table de processus:

Gestion du processus Gestion de la mémoire Gestion de fichier

Registres ID du processus Pointeur vers un segment de texte Répertoire racine

Pointeur vers un segment de


Compteur ordinal Processus Parents Répertoire de travail
données

Mot d’état du programme Groupe du processus Pointeur vers un segment de la pile Descripteurs de fichiers

Pointeur de la pile Signaus ID utilisateur

Etat du processus Heure de début du processus ID du groupe

Priorité Temps de traitement utilisé

Paramètres d’ordennancement Heure de la prochaine alerte


Processus et Thread
Processus

Commutation de processeur ou commutation de contexte

Quand le processeur passe de l’exécution d’un processus 0 à l’exécution d’un processus

1*, il faut:

–mettre à jour le PCB de 0

–reprendre le PCB de 1, qui avait été sauvegardé avant

–remettre les registres d ’UCT tels que le compteur d ’instructions etc… dans la même

situation qui est décrite dans le PCB de 1

* Heap: Identification (Process ID, Group ID, User ID, fichier, Locks, Sockets ….)
Stack: Stack pointer, Prog counter, Registers…
Static/Global
Code
Processus et Thread
Processus
Processus et Thread
Processus
Registres
Un registre est un emplacement de mémoire interne à un processeur. Les registres se
situent au sommet de la hiérarchie mémoire : il s'agit de la mémoire la plus rapide
d'un ordinateur, mais dont le coût de fabrication est le plus. On distingue plusieurs
types de registres dont:
 Accumulateur contient les opérandes ou les résultats des opérations de l’ unité
arithmétique et logique
 Etat indique si le processeur fonctionne en mode utilisateur (user) ou en mode noyau
(kernel)
 Instruction contient l’instruction en cours d’exécution, elle demeure dans ce registre
pendant toute la durée de son exécution
 Compteur ordinal indique l'emplacement de la prochaine instruction à être exécutée
(synonymes : compteur de programme, pointeur d'instruction)
 Tampon:(RTM) est un registre de l'unité de contrôle d'un processeur qui contient la
donnée à écrire en mémoire où qui vient d'être lue depuis la mémoire

Vitesse de Mémoire
 Registre > Cache > RAM >> DD
Processus et Thread
Processus
Gestion d’interruption

 Une interruption est un arrêt temporaire de l'exécution normale d'un programme


informatique par le microprocesseur afin d'exécuter un autre programme (appelé
service d'interruption).

 Le terme ne désigne dans la majorité des cas que des interruptions dont
l'exécution est provoquée par des causes externes au programme «interruptions
asynchrones »: avancement d'une horloge, signalisation de la complétion d'un
transfert de données, positionnement des têtes de lecture/écriture, etc…

 Cependant, on l'utilise aussi pour désigner des exceptions, c'est-à-dire des arrêts
provoqués par une condition exceptionnelle dans le programme «interruptions
synchrones » (instruction erronée, accès à une zone mémoire inexistante, calcul
arithmétique incorrect, appel volontaire au système d'exploitation, etc.).
Processus et Thread
Processus
Fonctionnement d’interruption

 Lors d'une interruption, le processeur sauve tout ou une partie de son état
interne, généralement dans la pile système, et exécute ensuite une routine
d'interruption, généralement en suivant les directives d'une table indiquant pour
chaque type d'interruption, le sous programme à exécuter.

 Une fois le traitement de l'interruption terminé, la routine se finit normalement


par une instruction de retour d'interruption, qui restaure l'état sauvé et fait
repartir le processeur de l'endroit où il avait été interrompu. Dans certains cas,
la routine d'interruption modifie l'adresse de retour, notamment pour effectuer
des commutations de tâches
Processus et Thread
Processus
Fonctionnement d’interruption
Exercice
 Qu’est ce qu’un système d’exploitation?

 Comment peut on différencier entre système d’exploitation? (donner des


exemples)

 Donner un schéma décrivant un ordinateur et la place d’un système


d’exploitation.

 Ecrire un programme batch qui permet de copier un fichier dans le lecteur f:


et de changer l’extension de tous les fichiers vers une extension .exe et
cache tous les fichiers.

 A l’aide d’un schéma, expliquer le « pseudo parallélisme », quelle la


différence entre le « pseudo parallélisme et le véritable parallélisme.

 Quelle est la différence entre programme, processus, processeur et thread?


Processus et Thread
Processus

Un processus est crée dans 4 situations

 Démarrage du système

 Appel système de création par un processus

 Demande de création par un utilisateur

 Batch job (soumission d’un travail à un cluster…)

Terminaison

 Fin normale

 Fin anormale

 Erreur

 Tué par un autre processus (kill)


Processus et Thread
Thread

Définitions

 Un thread est l’entité planifiée pour leur exécution par leur processeur, c’est la plus
petite unité d’exécution d’un processus

 Ce n’est pas un programme, il ne peut pas être déclencher tout seul mais au sein d’un
programme.

 La durée de vie d’un thread ne peut pas dépasser celle du processus qui l’a crée — Les
threads d’un même processus partagent la même mémoire — Le coût de création moindre
que pour les processus lourds.

 Un processus doit avoir au moins un Thread

 Tous les threads d’un processus ont accès à sa mémoire et ses ressources(processus
légers), par conséquent les threads du même processus partage le même espace mémoire
protégé, les mêmes ressources et le même espace mémoire.
Processus et Thread
Thread
Threads
 Un processus possède un espace d’adressage et un thread de contrôle unique.

 Un thread –processus léger ou leightweight process inclut:


– un compteur ordinal, qui effectue le suivi des instructions à exécuter

– des registres, qui détiennent les variables en cours.

– une pile, qui contient l’historique de l’exécution.

 Etats d’un thread: en cours d’exécution, bloqué, prêt ou arrêté.

 Procédures de bibliothèque: thread_create, thread_exit, thread_wait, thread_yield


(abandon volontaire de la CPU).

 Temps de création d’un processus >> Temps de création d’un thread (100 )

49
Processus et Thread
Thread
Eléments de processus partagé par les Threads

Eléments par Processus Eléments privés par Thread

Espace d’adressage Compteur ordinal

Variables globales Registres

Fichiers ouverts Pile

Processus enfant Etat

Alertes en attente

Signaux et handlers de signaux

Information de décompte
Processus et Thread
Thread

Eléments d’un thread

Le Thread inclut:

 Le contexte :

CO, une pile utilisateur et une noyau, les valeurs des registres, une zone privée pour des
données

 L’espace commun :

ce sont les objets du processus via les handles, l’espace d’adressage et toute autre
ressource.
Processus et Thread
Thread

Exemple de thread

 Primary Thread: le premier Thread déclenché avec le démarrage d’un processus

 Thread yield: méthode d’abandon du cpu pour laisser un autre thread

 Thread wait: méthode d’attente d’un autre thread

 Thread_exit: procédure de bibliothèque pour arrêter le thread

 Threads préemptifs — Le système peut suspendre l’exécution d’un thread à tout moment
pour exécuter un autre thread;

 Threads coopératifs — Chaque thread décide quand il peut être suspendu .


Exemple d’exécution
Exemple … Trait de Texte multithreaded
Absbjshd
Absbjshd
Absbjshd
Dnddjkjdq
Dnddjkjdq
Dnddjkjdq
Hqdjlqdjl
Hqdjlqdjl
Hqdjlqdjl
JddmkmJddmkmJddmkm
Djdlqjdjdq
Djdlqjdjdq
Djdlqjdq
djdqkmkd
djdqkmkd
djdqkmkd
clavier
Disque
noyau

Thread 1: remet en forme le document


Thread 2: interaction avec l’utilisateur
Thread 3: écrit périodiquement le contenu de la RAM sur le disque

54
Processus et Thread
Thread
Problématique?

Avec les threads, toutes les variables sont partagées : c'est la mémoire
partagée.

Mais cela pose des problèmes. En effet, quand deux threads cherchent à
modifier deux variables en même temps, que se passe-t-il ? Et si un thread
lit une variable quand un autre thread la modifie ?
C'est assez problématique. Par conséquent, nous allons voir une mécanisme
de synchronisation en utilisant des verrous.
Implémentation des Threads
… Implémentation de Threads
Soit dans l’Espace Utilisateur ou dans le Noyau

Processus
Thread
Espace
user Système
d’exécution
Table des
threads
noyau Table des
processus

57
noyau

Définition du Noyau/kernel du SE

Le noyau d’un système d’exploitation

contient seulement les fonctionnalités les

plus importantes telles que la gestion des

processus (tâches & threads),

l'ordonnanceur, la gestion de la mémoire

virtuelle et les mécanismes de

communication inter-processus (IPC).


Thread utilisateurs (plusieurs à un)
Thread utilisateurs (plusieurs à un)
Thread Noyau (un à un)
Thread Noyau (un à un)

Inconvénient
La gestion des processus légers est réalisée par des appels systèmes
coûteux en temps : la commutation de fil ou la synchronisation implique un
changement de contexte et des vérifications par le noyau de la validité des
paramètres.
Les entités noyau occupent de la place mémoire, or la mémoire disponible
dans le noyau n'est pas illimitée. Cet aspect limite le nombre de processus
légers disponibles pour l'ensemble du système.
Thread Hybrides (plusieurs à plusieurs)
Exercices

 Le jeu de registres est classé par éléments de thread et non par éléments de
processus, pourquoi?

 Un thread peut il préempté par une interruption d’horloge? Si oui, dans


quelles circonstances? Sinon, pourquoi?

 Pour quelle raison un thread céderait il volontairement le processus en


appelant thread_yield ? Après tout, étant donné qu’il n’y a pas d’interruption
d’horloge périodique, il risque de ne plus jamais récupérer de temps
processeur.
Ordonnancement du CPU
Introduction -- Généralités
 Le SE permet 2 types de décisions sur le processeur :
 Ordonnancement des processus : L’ordonnanceur (scheduler) choisit quel est le processus qui doit
tourner
 Problème: Dans quel ordre les processus sont servis?; par exemple, un processeur et plusieurs
processus.
 Allocation du processeur : l’allocateur (dispatcher) lance l’exécution du processus choisi par le
scheduler
 Ordonnanceur -- Scheduler
 Objectif :
Sur un intervalle de temps assez grand, faire progresser tous les processus, tout en ayant, à un instant
donné, un seul processus actif (dans le processeur).
 Rôle : Prendre en charge la commutation de processus, qui règle les transitions d’un état à un autre
des différents processus.
66
Introduction -- Objectifs de la Multiprogrammation
 Maximiser le taux d’utilisation de l’unité centrale (efficacité) :

 Durée(UC_active)/Durée_totale.

 En pratique, on obtient des valeurs comprises entre 40% et 90%

 Minimiser le temps de traitement moyen


 Moyenne des intervalles de temps séparant la soumission d’une tâche de sa fin d’exécution.

 Minimiser le temps de traitement total (temps de vie d’un processus dans le système)

 Temps(Résidence_FA_process_Prêts)+Temps(Occup_UC)+ temps(At_FA_E/S)
+ Temps( Résidence_MS)
 Minimiser le temps d’attente: l’attente dans la file prêt
 Minimiser Temps de réponse (pour les systèmes interactifs): le temps entre une demande et
la réponse
Types d’ordonnancement
Il existe différentes politiques d'allocation :
- avec ou sans priorité
sans : premier arrivé premier servi (first come, first
served : FCFS)
avec :
• la priorité peut être fixe ou dynamique
• il peut y avoir préemption, ou non
- Avec ou sans réquisition

68
Modèle Simple d’Ordonnancement

 Représentation de l’ordonnancement des processus

File des processus prêts Terminaison

Scheduler dispatch UC

File d’attente E/S


E/S Demande E/S

Tranche de temps expirée

exit
Fils s’exécute Fork un fils

Interruption Attente It
Politique d’Ordonnancement – Organisations des FAs
 H : Un seul processeur + plusieurs processus
 Une file d’attente, soit FA, des processus prêts
 Principe de chaînage d’une FA : avant/ arrière/ mixte
 Plusieurs processus sont mis dans une FA, et le service demandé leur est fourni
tour à tour, en fonction de critères de gestion spécifiques à la FA.
Réquisition
File d’attente des prêts
Arrivée Service
UC Sortie
satisfait

Dispatcher = allocateur
Scheduler=
Scheduler= Ordi
Gère la FA : Arrivée des processus et Gère l’allocation du processeur,
leur placement il peut réquisitionner
Politiques d’ordonnancement – Algorithmes sans préemption (sans réquisition) (FCFS
FCFS, SJF, Priorité) (1)

 Algorithme FCFS (First Come First Served) -- Premier Arrivé Premier Servi
 Un processus s'exécute jusqu'à sa terminaison, sans retrait forcé de la ressource.
 Modèle adapté au partage du processeur par des processus de même priorité (aucun privilège entre les processus)
 Avec les algorithmes d'ordonnancement sans réquisition, un processus affecté au processeur ne peut pas être interrompu.
 Facile à implanter, mais peu efficace (le choix n’est pas lié à l’utilisation de l’UC)
 Exemple

P ro c e ssu s D u r é e e st im é e D a t e d ’a r r iv é e

P1 24 0
P2 8 1
P3 12 2
P4 3 3
 Schématiser l’exécution des processus selon leur ordre d'arrivée. Pour cela, on utilise le DIAGRAMME DE GANTT

P1 P2 P3 P4
0 24 32 44 47 Temps de vie des processus
 Temps de traitement moyen = [(24 - 0) + (32 - 1) + (44 -2) + (47 -3)]/4 = 35,25 71
Exercice
Donner le diagramme d’exécution et comparer le temps moyen d'exécution en utilisant FIFO, pour les
processus arrivant en même temps donner toutes les possibilités d’exécution .

Processus Temps arrivé Temps requis

A 1 3
B 2 15
C 2 2
D 2 1
Politiques d’ordonnancement – Algorithmes sans préemption (FCFS, SJF
SJF, Priorité) (2)

 Algorithme SJF -- Shortest Job First (STCF -- Shortest Time to Completion First) : Algorithme
du ’’Plus Court d’Abord ’’ :
 Suppose la connaissance des temps d'exécution : estimation de la durée de chaque processus
en attente
 Les processus sont disponibles simultanément: Algorithme optimal (sans préemption)
 Exécuter le processus le plus court : Minimise le temps moyen d'exécution
 Dans le cas où plusieurs processus possèdent la même durée, la politique FCFS sera alors
utilisée.

73
Exercice
Pour TAB 1 ,Donner et comparer le temps moyen d'exécution produit par les algorithmes d'ordonnancement
a. FIFO (FCFS, PAPS)
b. PCTE (SJF),
c Pour TAB 2,Donner le diagramme de Gantt et le temps moyen d’exécution pour un
ordonnancement

TAB1 TAB2
Processus Ordre Temps Processus Ordre Temps
d’arrivée requis d'arrivée requis
E1 0 45 min E1 0 45 min
E2 1 15 min E2 5 15 min
E3 2 10 min E3 5 10 min
E4 4 5 min E6 5 20 min
Politiques d’ordonnancement – Algorithmes sans préemption (FCFS, SJF
SJF, Priorité)
Priorité (2)

 Le principe de cet algorithme consiste à attribuer à chaque processus une


valeur qui indique sa priorité.
 Le processeur est alloué au processus de plus haute priorité.
 Un classement possible des processus est donné comme suit (des processus
les plus prioritaires aux processus les moins prioritaires) :
1. Processus système.
2. Processus interactifs.
3. Processus batch.
4. Processus utilisateurs.
 L'ordonnancement avec priorité sans réquisition peut engendrer un problème de
famine puisque les processus de faible priorité risquent d'attendre indéfiniment.
75
Politiques d’ordonnancement – Algorithmes avec préemption (Priorité
Priorité, RR, SRTF) (1)

 L'idée de la réquisition est d'interrompre un processus en cours d'exécution à n'importe quel moment.
 A chaque processus est assignée (automatiquement par le SE /externe) une priorité
 Assignation statique -- priorités fixes : facile à implanter
 Assignation dynamique : la priorité initiale assignée à un processus peut être ajustée à d ’autres valeurs:
difficile à implanter
 Pb. de famine : un processus de faible priorité peut ne jamais s'exécuter si des processus plus
prioritaires se présentent constamment
 Recalculer périodiquement le numéro de priorité des processus (plusieurs FA): la priorité d’un
processus décroît (croit) au cours du temps pour ne pas bloquer les autres FA
 Principe : On lance le processus ayant la plus grande priorité

Algorithme d’ordonnancement à classes de priorité


76
Exercice

Soient les différents processus suivants :

Processus Date d'arrivée Temps de Priorité


traitement
A 0 5 4
B 2 4 2
C 2 2 6
D 4 4 3

Pour les processus du tableau suivant, dessinez un schéma illustrant leur


exécution, en utilisant l’ordonnancement avec priorités. Un nombre de
priorité élevé correspond à une priorité plus importante. Réalisez l’exercice
dans une approche avec préemption et sans préemption. Calculez ensuite le
temps d’exécution moyen.
Politiques d’ordonnancement – Algorithmes avec préemption (Round
Round Robin,
Robin Priorité, SRTF) (2)

 L'idée de la réquisition est d'interrompre un processus en cours d'exécution à n'importe quel moment.
 Algorithme tourniquet -- RR : l’un des algorithmes les plus utilises et des plus fiables
 Ordonnancement selon l’ordre FCFS ë Equitable
 Chaque processus possède un quantum de temps pendant lequel il s’exécute
 Lorsqu’un processus épuise son quantum de temps : au suivant !
 S’il n’a pas fini : le processus passe en queue du tourniquet et au suivant !
 Exemple : Le quantum de temps, Q, est égale à 2 unités; quel est le temps de traitement moyen?
P2 P3
(4 unités) (2 unités)

Exécution P1 Q Q P4
CPU (3 unités) Q Q (3 unités)

P8 Q Q P5
(2 unités) Q Q (3 unités)

P7 P6
(4 unités) (5 unités) 78
Algorithme Tourniquet -- Round Robin (suite)

P1 P2 P3 P4 P5 P6 P7 P8 P1 P2 P4 P5 P6 P7 P6
0 2 4 6 8 10 12 14 16 17 19 20 21 23 25 26 Temps de vie
Diagramme de Gantt (Q=2 unités)

 Temps de traitement moyen =

79
Algorithme Tourniquet -- Round Robin (suite)

P1 P2 P3 P4 P5 P6 P7 P8 P1 P2 P4 P5 P6 P7 P6
0 2 4 6 8 10 12 14 16 17 19 20 21 23 25 26 Temps de vie
Diagramme de Gantt (Q=2 unités)

 Temps de traitement moyen =


[(17-0) + (19-1) + (6-2) + (20-3) + (21-4) + (26-5) + (25-6) + (16-7)] /8 = 15,25
 Problème = réglage du quantum (petit/grand; fixe/variable; est-il le même pour tous les processus ?)
 Les quanta égaux rendent les différents processus égaux
 Quantum trop petit provoque trop de commutations de processus
 Le changement de contexte devient coûteux (perte de temps CPU)
 Quantum trop grand : augmentation du temps de réponse d’une commande (même simple)
 RR dégénère vers FCFS
 Réglage correct : varie d’un système (resp. d’une charge) à un autre et d’un processus à un autre
80
Exercice

Soient les différents processus suivants :

Processus Date d'arrivée Temps de traitement


P1 0 3
P2 2 6
P3 4 4
P4 6 5
P5 8 2

Donnez le diagramme de Gantt pour l’exécution de ces différents processus


en utilisant successivement les algorithmes sans préemption FCFS, SJF et
l’algorithme avec préemption RR (quantum = 1 unité de temps et quantum =
4 unités de temps), Calculer le temps d’exécution moyen pour chaque cas.
Algorithme Tourniquet -- Round Robin (suite)

P1 P2 P3 P4 P5 P6 P7 P8 P1 P2 P4 P5 P6 P7 P6
0 2 4 6 8 10 12 14 16 17 19 20 21 23 25 26 Temps de vie
Diagramme de Gantt (Q=2 unités)

 Temps de traitement moyen =


[(17-0) + (19-1) + (6-2) + (20-3) + (21-4) + (26-5) + (25-6) + (16-7)] /8 = 15,25
 Problème = réglage du quantum (petit/grand; fixe/variable; est-il le même pour tous les processus ?)
 Les quanta égaux rendent les différents processus égaux
 Quantum trop petit provoque trop de commutations de processus
 Le changement de contexte devient coûteux (perte de temps CPU)
 Quantum trop grand : augmentation du temps de réponse d’une commande (même simple)
 RR dégénère vers FCFS
 Réglage correct : varie d’un système (resp. d’une charge) à un autre et d’un processus à un autre
 Il existe d ’autres variantes de RR, telle que RR avec priorités 82
Algorithme Tourniquet avec priorités
 Le système de gestion possède n FA à différents niveaux de priorités (+ différents quanta)

- FA n-1 (Q n-1)
Réquisition

FA1 (Q1)

Arrivée Terminaison
FA 0 (Q 0) CPU

+
Priorité Scheduler Dispatcher
 A son arrivée, le processus est rangé dans la FA la plus prioritaire FA0
 Si un processus dans FAi épuise son quantum de temps Qi, il sera placé dans la FAi+1 (moins prioritaire)
 Une FAi ne peut être servie que si toutes les FAj (0 < j< i) sont vides
 un processus qui a traversé toutes les FA sans épuiser son temps de traitement reste dans la FA la moins prioritaire.
Exercice

Soient les différents processus suivants :

Processus Date d'arrivée Temps de Priorité


traitement
A 0 5 4
B 2 4 2
C 2 2 6
D 4 4 3

Pour les processus du tableau suivant, dessinez un schéma illustrant leur


exécution, en utilisant l’ordonnancement RR avec priorités (quantum = 2
unité) . Un nombre de priorité élevé correspond à une priorité plus
importante. Calculez ensuite le temps d’exécution moyen.
Politiques d’ordonnancement – Algorithmes avec préemption (Round Robin, Priorité, SRTF)
SRTF (3)

 Algorithme SRTF (Shortest Remaining Time First) -- SJF avec réquisition


 Choisir le processus dont le temps d'exécution restant est le plus court
 Il y a réquisition selon le critère de temps d'exécution restant et l'arrivée d’un processus
 Nécessité de sauvegarder le temps restant
 Exemple :
P ro cessu s D u ré e e stim é e D a t e d ’a r r i v é e
P1 8 0
P2 5 2
P3 5 3
P4 2 4

Diagramme de Gantt
P1 P2 P4 P2 P3 P1 P1
0 2 4 6 9 14 20
Temps de vie
 Temps de traitement moyen = [(20 - 0) + (9 -2) + (14 -3) + (6-4)]/4 = 9,5
 Théoriquement, + SRTF offre un minimum de temps d’attente; - difficile de prédire le futur 85
Exercice
Pour TAB 1 ,Donner et comparer le temps moyen d'exécution produit par les algorithmes d'ordonnancement
a. FIFO (FCFS, PAPS)
b. PCTE (SJF),
c. tourniquet avec un quantum de 5
d. Algorithme SRTF (Shortest Remaining Time First )
Pour TAB 2,Donner le diagramme de Gantt et le temps moyen d’exécution pour un ordonnancement
de type tourniquet avec priorités

Etudiant Temps Temps Etudiant Date Temps Priorité


d’arrivée requis ‘arrivée requis
E1 0 15 E1 0 15 1
E2 1 5 E2 5 5 2
E3 2 3 E3 5 3 3
E4 4 8 E4 5 8 1
E5 5 2 E5 10 2 2
E6 6 10
Hiérarchie d’Ordonnancement (1)
 L’ensemble des processus prêts est-il souvent en mémoire centrale?
 Un processus élu, qui est sur disque, prend beaucoup plus de temps qu’un processus en RAM pour
être chargé.
 Les algorithmes d’ordonnancement complexes permettent de distinguer entre 2 types différents:
 Ordonnancement à court terme (short term scheduling) : considère seulement les processus
prêts en mémoire centrale.
 Ordonnancement à long terme (long term scheduling) : consiste à utiliser un deuxième
algorithme d’ordonnancement pour gérer les ‘’swapping ’’ des processus prêts entre le disque et
la RAM

’’Swap out’’ Processus


File d’attente des Prêts Sortie
Arrivée
UC

E/S Files d’attente des E/S


Hiérarchie d’Ordonnancement (2)
 Ordonnancement multi-niveaux permet de satisfaire :
 Favoriser les processus courts
 Favoriser les processus ‘’’, qui ne demandent pas trop l ’UC
 Déterminer la nature de chaque processus le plutôt possible et effectuer l’ordonnancement
correspondant
 Files d’attente sans liens : un processus se trouvant dans dans FAi ne peut se trouver dans FAj
(j i); il reste dans FAi jusqu’à ce qu’il se termine’I/O Bound

-
FA n-1
(RR)
Réquisition

FA1
(FCFS/SJF) Processus Interactifs
Terminaison
CPU
+ FA 0
Priorité fixe Processus Système
Hiérarchie d’Ordonnancement (3)
 Files d’attente avec liens : hiérarchiser les FAs

Arrivée niveau n-1 FA n-1


(RR)
Réquisition
Arrivée niveau 1
FA1
(FCFS)
Terminaison
Arrivée niveau 0 CPU
FA 0
(FCFS)
 Un processus dans FAi ne peut être sélectionné que si toutes les FAj (j<i) sont toutes vides
 Permettre aux processus de se déplacer d’une FA à une autre
 Hiérarchie descendante/ascendante/bidirectionnelle
 Changement dynamique dans le comportement des processus
 Chaque FA a son propre algorithme d’ordonnancement
 Descendante FAn-1 est gérée avec FCFS
89
 Ascendante F0 est gérée avec FCFS
Ordonnanceur CPU

 Choisit parmi les processus prêts en mémoire, et alloue la CPU à l’un d’eux
 Les décisions d’ordonnancement de la CPU sont pris lors:
1. Du changement d’état “exécution” à “en attente”
2. Du changement d’état de “exécution” à “prêt”
3. Du changement d’état de “en attente” à “prêt”
4. De la terminaison d’un processus
 L’ordonnancement dans les cas 1 et 4 est non préemptif
 Pour les autres cas, c’est préemptif
Critères d’Ordonnancement
 Utilisation de la CPU – utiliser la CPU le maximum possible

 Débit (Throughput) – # de processus qui terminent leur exécution par unité de temps

 Temps de rotation (Turnaround time) – le temps depuis le lancement du processus


jusqu’à sa terminaison (les attentes incluses)

 Temps d’attente – temps d’un processus dans la file d’attente des processus prêts

 Temps de réponse – temps mis entre une requête émise et la première réponse, pas
la sortie (pour les environnements à temps partagé)
Critères d’Optimisation

 Utilisation maximale du CPU

 Débit maximum

 Temps de rotation minimal

 Temps d’attente minimal

 Temps de réponse minimal


SYNCHRONISATION ET COMMUNICATION ENTRE PROCESSUS --IPC

Exemple introductif
Int i;
P1 P2
i=0; i=0;
while (i<10) while (i>-10)
i++; i--;
printf(‘’P1 GAGNE! \n’’); printf(‘’P2 GAGNE !\n’’);

 i variable « partagée »  risque de conflit d’accès!


 Les instructions i++ et i– doivent s’exécuter de manière indivisible!
 Lequel des processus P1 ou P2 gagne?
 Vont-ils terminer? Si l’un se termine, est-ce que l’autre termine aussi?
 Est-ce que P1 peut commencer? 93
93
Présentation du problème

Pas d’interaction:
 Exécution dans n’importe quel ordre
 Exécution parallèle ou concurrente

 Interactions entre processus:


 Nécessité de synchroniser
 L’ordre d’exécution est important
 Cas particulier: Exclusion mutuelle –sérialisation des exécutions

 Moyens de synchronisation:
 Matériel: masquage d’interruption et TAS—Test-And-Set
 Logiciel: verrous, sémaphores, moniteurs, et passage par messages
94
94
Définitions de synchronisation, Section critique

 Synchronisation
 Utilisation d’opérations atomiques afin de garantir une bonne coopération entre
processus.
 Une opération qui consiste à distribuer, dans le temps, les accès à une ressource
partagée entre plusieurs processus.
 Conditions de rapidité
 un ordre quelconque de processus/instructions peut produire des résultats
incorrects
 La commutation dépend, dans le cas
 de concurrence, de l’ordonnancement
 de parallélisme, de la vitesse d’exécution relative– on synchronise le processus le plus
rapide sur le processus le plus lent..

95
Définitions de synchronisation, Section critique

Les processus concurrents s’exécutant dans le système d’exploitation peuvent être


des processus coopératifs ou indépendants.
–Un processus est indépendant s’il n’affecte pas les autres processus ou ne peut
pas être affecté par eux. (Un processus qui ne partagent pas de données avec
d’autres processus est indépendant )
–Un processus est coopératif s’il peut affecter les autres processus en cours
d’exécution ou être affecté par eux (Un processus qui partage des données avec
d’autres processus est un processus coopératif. Les données partagées par les
processus coopératifs peuvent se trouver en :
•Mémoire principale (RAM)
•Fichiers partagés
•Registres d’unité périphérique )
Section critique -SC
 Une partie d’un programme où se produit un conflit d’accès.
 Comment éviter ce conflit?
 Besoin de contrôler l’entrée à une SC
 Besoin de supporter l’exclusion mutuelle dans la SC.
 Une bonne solution au problème de SC doit satisfaire:
1. Exclusion mutuelle: accès exclusif: à tout instant un seul processus exécute sa SC
(ressource partagée).
2. Avancement et absence de blocage: un processus qui n’est pas dans sa SC ne doit
bloquer un autre processus à entrer en SC; c-àd pas d’attente s’il n’y a pas de
compétition
3. Attente bornée (pas de famine): une fois la demande d’entrée en SC est lancée, le
processus ne doit pas attendre indéfiniment. La demande est assurée de manière
équitable, si possible.
4. Aucune hypothèse ne doit être faite sur les vitesses relatives des processus
97
Structure Typique d’un Processus

Soient N processus exécutant le programme suivant:

Do

// ’’Entrer en SC’’ ] Prologue

SC

// ’’Sortir de la SC’’ ] Epilogue

SNC

While (1);
98
Solutions Possibles
 Hypothèses:
 Vitesses relatives des processus quelconque et inconnu
 tout processus quitte sa SC au bout d’un temps fini

 Aperçu

Opérations atomiques
de haut niveau (API) Verrous Sémaphores Moniteurs
Send/Receive
- +
Opérations atomiques
de bas niveau
(matériel) Load/Store Masquage Interruption TAS

IsetSiliana CHaabani Nizar 99


99
Solutions Matérielles:

 Permettre à l’utilisateur d’interdire momentanément les


interruptions (difficile et dangereuse!)
 Augmenter l’ensemble des actions atomiques
 Masquage d’interruptions
 Problème: les processus users ne peuvent pas garantir le test et la modification d’une variable
 Solution: Interdire la commutation de processus pendant qu’un processus est en SC ou encore
masquer les Its (le système peut le faire en mode SVC par un appel spécifique).
Masquer It
SC
Demasquer It

100
Solutions Matérielles:

 Problème: Si le processus utilisateur entre dans une boucle infinis le SE sera

planter

 Problème: Que ce passe-t-il avec des CPU multiples?

 Problème: Si la section critique est large, qu’est ce qui ce passe si un

périphérique a besoin d’attention

101
Solutions Matérielles --TAS
 TAS (Test-And-Set): Instruction spéciale cablée dont le rôle est de rendre atomique le ‘’test and set’’ du contenu d’un
mot.
Int TAS (int *val)
{ int temp;
temp= *val; //implantée de manière atomique
*val = 1;
return temp;
}
 Une solution au problème de SC pour n processus:
Int verrou = 0; void MutexDebut()
Processus Pi {
Do while (TAS(&verrou)) ;
MutexDebut(); }
SC
MutexFin(); void MutexFin()
SNC {
while (1); verrou = 0;
Preuve? } 102
Solutions Logicielles –Attente Active sur un Verrou
 Soient deux processus P0 et P1
 Algorithme1: A qui le tour!
Public //Variables partagées
int tour=0; //tour =i si Pi veut entrer en SC
Processus Pi
Do
while (tour != i)
; // on fait rien
SC
tour = (i+1)%2;
SNC
While (1);

 Démontrer que c’est une fausse solution?


 Exclusion mutuelles satisfaite
 Avancement non vérifié: si P0 est plus lent que P1 alors P0 bloque P1; bien qu’il n’est pas dans sa SC 103

 Nécessité d’une alternance stricte (jeton)


Algorithme2
 Algorithme2: deux drapeaux
Public //Variables partagées
int flag[2]=[0]; //flag[i]=0 si Pi est prêt pour entrer en SC
Processus Pi
Do
flag[i] = 1;
while (flag[i])
; // on fait rien
SC
flag[i] = 0;
SNC
While (1);

 Démontrer que c’est une fausse solution?


 Exclusion mutuelles satisfaite
 Avancement non vérifié: si les processus arrivent en même temps, c-a-d flag[0] = flag[1] =1!
104
104
 Une vraie solution consiste delà combiner les deux dernieres!
Solution de Peterson
 Algorithme3 //pour deux processus
Public //Variables partagées
int flag[2]=[0]; //flag[i]=0 si Pi est prêt pour entrer en SC
int tour = 0;
Processus Pi
Do
flag[i] = 1;
tour = j; // j = (i+1)%2;
while (flag[i] && tour == j)
; // on fait rien
SC
flag[i] = 0;
SNC
While (1);

 Preuve de correction?
 Cet algorithme satisfait les 3 conditions de SC, à démontrer?

 Généralisation à n processus: voir algorithme de Bakery 105


Attente active --Conclusion

 Solutions qui fournissent des attentes actives


 Inefficace: il faut que le processus en attente libère le processeur explicitement (exemple la
fonction sleep sous Unix).

 Les processus de priorité élevé peuvent être prives (inversion de priorité)

 Solutions de blocage
 Sémaphores

 Moniteurs

 Send/Receive

106
Les SEMAPHORES
Motivation : synchronisation des processus concurrents
 Une approche par attente active n’est pas intéressante, puisque le processeur est immobilisé simplement pour attendre

Gaspillage de la puissance CPU disponible



 Une approche alternative = utilisation de sémaphores
 Principe et définition des sémaphores
 Mécanisme de synchronisation simple et ancien entre des processus concurrents
 Le principe est directement hérité des chemins de fer -- Signal muni d’un bras indiquant si la voie ferrée est libre ou occupée

 Sémaphore levé : le processus P peut continuer son chemin


 Sémaphore baissé : il doit attendre jusqu'à ce qu’un autre processus Q le
lève
 Eviter des collisions en assurant l'accès exclusif à un croisement ferré
 Inventés par le mathématicien Allemand Dijkstra (1965)

Syntaxe et Sémantique
 Un sémaphore S est une variable spéciale contenant un nombre entier (IN) et manipulé uniquement par 3 opérations atomiques :
initialisation, P et V

107
107
Syntaxe et Sémantique d’un Sémaphore
 P --passer : P(S)/Wait(S)/Down(S)
 Décrémenter la variable S (à moins qu’elle ne soit déjà à 0)
 Utilisée (lorsque déjà 0) pour bloquer (suspendre) le processus appelant jusqu'à ce qu’un événement survienne.

 V --relâcher : V(S)/Signal(S)/Up(S)
 Incrémenter le sémaphore de 1
 Utilisée pour signaler un événement, et si possible, réactiver un processus en attente.

 Initialisation de S : interprétée comme un nombre d’autorisations (disponibles


quand l’entier est positif, attendues quand le le nombre est négatif).
 Déclaration de sémaphores -- Notation d’Andrews
 Sem S1, S2; Sem ingred[3]=([3] 1); S1 = 0; S2 = 1;
 Apres initialisation, les seules opérations permises sont P et V

P(S) : < attendre(S>0); S--; >



 V(S) : < S++; >
 Sémaphores général vs. sémaphore binaire :
 Sémaphore général : peut prendre n ’importe quelle valeur non-négative
 Sémaphore binaire : la valeur peut être uniquement 0 ou 1

108
108
Opérations des SI

 Périphériques d’E/S et la CPU peuvent s’exécuter simultanément

 Chaque contrôleur de périphérique est en charge d’un type particulier de périphériques

 Chaque contrôleur de périphérique a un tampon local

 CPU transfère les données de/à la mémoire centrale au/du tampon local

 E/S se fait du périphérique au tampon local du contrôleur

 Le contrôleur de périphérique informe la CPU qu’il a fini l’opération en générant une

interruption

109
Traîtement des Interruptions

 L’OS sauvegarde l’état de la CPU (registre, compteur de programme)

 Détermine quelle interruption a eu lieu:

 polling

 Vecteur d’interruption

 Différentes fonctions du noyau correspondent aux traîtement rattachés à


chaque interruption

110
Structure des E/S
 E/S Synchrones – Après le début de l’E/S, le contrôle ne retourne au processus utilisateur qu’à la terminaison
de l’opération d’E/S

 Instruction Wait qui fait attendre la CPU jusqu’à la nouvelle interruption


 Boucle Wait (contentieux sur l’accès mémoire)

 E/S Asynchrones – Après le début de l’E/S, le contrôle retourne au processus utilisateur sans attendre la fin
de l’E/S

 Appel système – requête à l’OS pour permettre à l’utilisateur d’attendre la fin de l’E/S

 Table de Statut de Périphérique contient une entrée par périphérique d’E/S indiquant son type, son
adresse, et son état

 L’OS regarde dans cette table d’E/S pour déterminer l’état du périphérique, pour y ajouter une requête,
et pour refléter l’occurrence d’une interruption

111
Deux Méthodes d’E/S

Synchronous Asynchronous

112
Storage Structure

 Mémoire Principale – le seul média de stockage que la CPU peut accéder directement

 Mémoire Secondaire – extension de la mémoire centrale qui offre un espace de stockage persistent

 Disques Magnétiques – plateaux couverts de matériel magnétique pour le stockage d’informations

 Surface du disque décomposée logiquement en pistes, divisées elles-mêmes en secteurs

 Le contrôleur de disque fait l’intermédiaire entre la vue logique du disque par l’OS et sa disposition physique

réelle

113
Hiérarchie des Périphériques de Stockage

114
La lecture sur le disque

115
Principe

– les plateaux tournent à très haute vitesse (entre 3600 et 15000 tours/min)

– la tête de lecture flotte au-dessus du plateau grâce au coussin d’air induit (à 10 nm de la


surface)

– lecture / écriture

• écriture : le courant électrique dans la tête génère un champ magnétique qui magnétise la
surface

• lecture : la magnétisation du support induit un courant électrique dans la tête

116
Capacité d’un disque

Taille d’une piste


= nb de secteurs par piste * taille d’un secteur
• Taille d’un cylindre
= nb de faces * taille d’une piste
• Taille d’un plateau
= nb de pistes par face * taille d’une piste * 2
• Taille du disque
= nb de cylindres * taille d’un cylindre
= nb de plateaux * taille d’un plateau

117
Qu’est-ce qu’un fichier ?

Une suite de secteurs


– l’ordre est essentiel !!!

118
Qu’est-ce qu’un répertoire ?
 une collection de noms de fichiers
 + un accès à la liste de leurs secteurs
 un répertoire est lui-même un fichier (rangé dans une suite de secteurs)
Les temps d’accès
Quand on demande à lire un secteur, la carte d'interface va
 1. Placer les têtes de lecture sur le bon cylindre
 2. Attendre que le secteur cherché arrive sous la tête
 3. Copier le secteur sur la carte d'interface.
 4. Envoyer les données de la carte à l'ordinateur.

119
Temps de lecture
Temps de lecture d’un secteur
= durée de 1 tour / nombre de secteurs par piste
• Durée constante (ex : 0,5 ms)
• Débit
= le nombre d'octets lus par seconde si on lisait sans arrêt
= le nombre d'octets qui passent sous la tête en 1 seconde
• Temps de latence
= durée moyenne d’attente d’un secteur = durée d’un 1/2 tour
• Exemple
– secteurs de 512 octets, 32 secteurs par piste, 7200 tours/min
• 16 ko par piste, 120 tours / s
• débit max = 1920 ko/s = 1,875 Mo/s
• temps de lecture d’un secteur = 1/(120*32) = 2,5.10-4s = 0,25ms
• temps de latence = 1/(120*2) = 4,2ms
120
Cache

 Utilisation d’une mémoire très rapide d’accès pour maintenir


des informations dernièrement accédées

 Besoin d’une polititque de gestion de cache

 Le cache introduit un autre niveau de stockage


 Besoin que les données stockées à plusieurs niveaux soient cohérents

121
Transfert d’un Entier “A” du Disque au Registre

122
Architecture Système Générale

 Composition
 Un (ou plusieurs) processeur(s)
 Mémoire
 Contrôleurs de périphériques
 Périphériques associés
 Bus de liaison d’n système informatique

123
Exemple : architecture Pentium

124
Cycle de Von Neumann
Scenario
 Extraction d’une instruction
 Stockage dans le registre d’instruction
 Décodage
 Extraction de données éventuelles (opérandes)
 Exécution
Implémentation
 Jeu d’instructions spécifique à chaque CPU
 Utilisation de registres CPU. Registres spéciaux : PC
(Program Counter), SP (Stack Pointer), PSW (Program Status Word)
 Architectures modernes : pipelines, CPU super-scalaires, RISC etc.
125
L’architecture de von Neumann décompose
l’ordinateur en 4 parties distinctes :

 l’unité arithmétique et logique (UAL ou ALU en anglais) ou unité de


traitement : son rôle est d’effectuer les opérations de base ;
 l’unité de contrôle, chargée du « séquençage » des opérations ;
 la mémoire qui contient à la fois les données et le programme qui
indiquera à l’unité de contrôle quels sont les calculs à faire sur ces
données. La mémoire se divise entre mémoire volatile (programmes
et données en cours de fonctionnement) et mémoire permanente
(programmes et données de base de la machine) ;
 les dispositifs d’entrée-sortie, qui permettent de communiquer avec
le monde extérieur.
Initialisation
BIOS (Basic Input Output System)
 initialise le matériel (registres processeur, mémoire etc.)
 scanne les bus (ISA et PCI d’abord) pour trouver un
périphérique amorçable (bootable) Premier secteur =) partition active =) deuxième « boot loader » ou
système
 charge le système d’exploitation en mémoire
Système d’Exploitation
 lance le premier processus (« init »)
 attend un événement

 Les événements sont produits par des « interruptions »

127
Les services du noyau

 Ordonnancement
 Gestion des interruptions et exceptions
interruption  asynchrone
exception  synchrone
 La synchronisation des processeurs
 La procédure de reprise du défaut d’alimentation

128
Noyaux