Plan du Cours
Rappel
 Mécanismes de base des Systèmes
d’Exploitation
 Processus et Threads
 Ressources physiques et log...
Objectif du Module







Introduire les mécanismes de base utilisés par
les systèmes pour gérer les processus et les...
Rappel – Système
d’exploitation
C’est quoi un système d’exploitation
(OS)?
 Quelles sont les Classes et Types d’un
OS ?
...
Rappel - OS



Qu'est-ce qu'un système d'exploitation ?

L'interface entre le logiciel et le physique.
 Séparer les app...
Rappel - OS
Buts d'un système d'exploitation :
 décharger le programmeur d'une tache
énorme et fastidieuse  concentratio...
Rappel : Classes des OS
Mono-tâche (DOS): A tout instant, un seul programme est
exécuté; un autre programme ne démarrera, ...
Rappel : Type des OS
Systèmes pour mainframes
 Systèmes pour serveurs
 Systèmes multiprocesseurs
 Systèmes personnels
...
Rappel : Types des OS










Systèmes pour mainframes
Grosses machines, beaucoup de ressources
Systèmes pour ser...
Fonctionnalités d’un OS


OS = interface entre Programme et
Matériel.
Fonctionnalités d’un OS
Interface à plusieurs niveaux
d'abstraction entre :
 Le programme effectue des tâches 
processus...
Rôle d’un OS















Gérer les processus
Gérer les ressources (pour le compte des processus)
*CPU
*Mémo...
Structuration des OS
Plusieurs possibilités de conception
pour un SE :
1. Sans réelle structure
2. En couches
3. À noyau
...
Structuration des OS


Sans réelle structure
Structuration des OS


En couches
Structuration des OS


À noyau
Structuration des OS


À noyau : Monolithique
Structuration des OS


À noyau : Micronoyau
1.Mécanismes de base des
Systèmes d’Exploitation
 Différence interruption/exception
 Une interruption est provoquée par ...
1.Mécanismes de base des
Systèmes d’Exploitation
 Concepts
 Le kernel est chargé à partir du disque lors
du démarrage du...
1.Mécanismes de base des
Systèmes d’Exploitation


Concepts : Processus et espace
d'adressage



Plusieurs processus par...
1.Mécanismes de base des
Systèmes d’Exploitation
 Concepts

: Processus et noyau

La sémantique des interactions entre le...
1.Mécanismes de base des
Systèmes d’Exploitation


Concepts : Espace d'adressage des
processus et noyau



Une partie de...
1.Mécanismes de base des
Systèmes d’Exploitation
: Cycle de vie d’un
processus

 Concepts
2. Processus et Threads

Déf : Un processus est un programme
qui s'exécute.
 Les OS modernes permettent
l'exécution en pa...
2. Processus et Threads



Création d’un Processus:
 Suite :
○
○
○
○

Initialisation du système
Appel système de créati...
2. Processus et Threads




Création d’un Processus:
Appels systèmes
int fork ();
○ Crée une copie identique du process...
2. Processus et Threads


Destruction d’un processus:
 Arrêt volontaire
 Erreur
 Erreur fatale
 Arrêt par un autre pr...
2. Processus et Threads
Appel système
 int kill(pid_t pid, int sig);


○ Adresse le signal sig au processus pid
○ SIGTER...
2. Processus et Threads
Opérations de base sur les PS:
 Création /Destruction
 Suspension / Activation
 Abandon momenta...
2. Processus et Threads


État d’un processus:
2. Processus et Threads


Implémentation:
2. Processus et Threads













Traitement d’une Interruption:
Ex : Le processus 3 est en cours d'exécuti...
2. Processus et Threads
Ordonnancement :
 Comment choisir le processus à
exécuter?
 Il y a des tas de façon de choisir l...
Critères d’ordonnancement
Critères / Algorithme d’ordonnancement
 Équitable (pas de famine)
 Efficace
 Minimisant les t...
Critères d’ordonnancement


Algorithme avec / sans préemption
 Transition interrompu du cycle de vie autorisée si préemp...
Algorithmes d’ordonnancement 1/2


En multiprogrammation seule
 FIFO / FCFS (First In First out / First Come First Serve...
Algorithmes d’ordonnancement
2/2


Tourniquet avec priorités statiques







Une priorité est associée à un nombre...
Shortest-Job-First (SJR)
Associe à chaque processus la durée de
son exécution
 Deux possibilités :


 Non préemptif – u...
2. Processus et Threads
Des processus légers ? ( les Threads )
 Les processus induisent une certaine
lourdeur:


 Chang...
2. Processus et Threads
Les threads:
 La programmation par thread permet
d'intégrer dans la programmation des
application...
2. Processus et Threads








Les threads:
Un thread est un contexte d'exécution ordonnable
,comprend un compteur ...
Communication interprocessus
1. Conditions de Concurrence
2. Sections Critiques
3. Exclusion Mutuelle
4. Sommeil & Activat...
Communication interprocessus


Conditions de Concurrence

Conditions de concurrence (race conditions): situation où 2
pro...
Communication interprocessus
Comment éviter les conditions de
concurrence?
 Solution:Interdire que plusieurs processus
li...
Exclusion Mutuelle


Les Sections Critiques:
L’Exclusion Mutuelle avec
Attente Active (busy waiting)


Désactivation des interruptions
 Après son entrée dans une SC,...
L’Exclusion Mutuelle avec
Attente Active (busy waiting)


… Alternance Stricte
while (TRUE) {
while (TRUE) {
while (turn ...
L’Exclusion Mutuelle avec
Attente Active (busy waiting)


Solution de Peterson: combinaison de variables verrou,
de varia...
L’Exclusion Mutuelle avec
Attente Active (busy waiting)


Instruction TSL
 solution qui nécessite de l’aide du matériel....
Problème du consommateurproducteur










Connu aussi sous le nom de tampon délimité (bounded
buffer).
2 process...
Sommeil & Activation
Ne consomme pas de la CPU comme l’attente active

Primitives de communication:
 sleep: appel systèm...
Sommeil & Activation


Problème de blocage:
 Le consommateur note que le tampon est vide
 Interruption: arrêt du consom...
Sémaphore
Sémaphore: # de wakeup enregistrés
2 opérations:








down: si la valeur de la variable sémaphore est >...
Sémaphore
#define N 100
Typedef int semaphore;
semaphore mutex = 1;
semaphore empty = N;
semaphore full = 0;
void producer...
Mutex



Sémaphore d’exclusion mutuelle, où la fonction décompte n’est
pas nécessaire.
Une mutex a 2 états: déverrouillé:...
Moniteurs






Collection de procédures, de variables, de structures de
données regroupées dans un module.
Un process...
Moniteurs
monitor ProducteurConsommateur
condition full, empty;
integer count;
procedure insert (item: integer)
begin
if c...
Echange de Messages



Convient aux systèmes distribués
2 primitives appels systèmes: send et receive
 send (destinatio...
Echange de Messages
#define N 100
void producer (void) {
int item;
message m;
while (TRUE) {
item = produce_item();
receiv...
Les Barrières


Mécanisme de synchronisation destiné aux groupes de processus.



Cas d’applications décomposées en phas...
Gestion de la mémoire
Problématique :
 La mémoire centrale est une ressource requise par
tout processus
 Un programme do...
Hiérarchies de mémoire
Registres
 Caches


○ L1 on chip (2 x 32KO)
○ L2 en multi-cœurs (4 à 6MO)



Mémoire centrale
○ ...
Fonctions attendues
Principe de partage de la ressource mémoire
 Fournir une mémoire logique à chaque
processus (2K)
 ...
Fonctions attendues


Mémoire logique :
 Espace logiquement contigu
 Adressage direct aléatoire de mots
 Taille maximu...
Fonctions attendues


Adresse physique
 Index d’un mot dans la mémoire physique



Adresse logique
 Index d’un mot dan...
Swapping / Va et vient
Swapping: technique utilisée en cas de
multiprogrammation / temps partagé
 Sorte de partage de la ...
Les différentes techniques de
partitionnement de la mémoire centrale






Fonction attendue :
 Allouer-zone (t : tail...
Allocation en zones contiguës
de
taille fixée
Allocation en zones contiguës
de
taille fixée (implantation)
Allocation en zones contiguës
de
taille fixée (conclusion)

Algorithmes d’allocation / libération rapides
(si peu de recou...
Allocation en zones contiguës
de
tailles variables
Allocation en zones contiguës
de
taille variable (Implantations)
Allocation en zones contiguës de
taille variable (stratégies d’allocation)




First-Fit: liste non ordonnée, ou ordonn...
Allocation en zones contiguës
de
taille variable (conclusion)

En général, First-Fit et Best-Fit meilleurs
que Worst-Fit.
...
Allocation en zones contiguës
de
tailles variables contrôlées






Objectif = accélérer les temps de gestion des fusi...
Allocation en zones contiguës
de
tailles variables contrôlées

Algorithme Buddy:
éclatement d’un bloc en deux sous-blocs d...
Algorithme buddy
Allocation et libération rapides (pas de
parcours, le calcul d’adresse du bloc
précédent / suivant est di...
Allocation en zones contiguës
(remarques générales)
Fragmentation externe
 Quelque soit l’algorithme utilisé, il est
poss...
Gestion de la mémoire








Gestion de la mémoire par liste chaînée
Algorithme d’allocation mémoire : (gestionnair...
Gestion de la mémoire







Algorithme d’allocation mémoire :
(gestionnaire de la mémoire connaît la
taille de la mé...
Gestion de la mémoire








Algorithme d’allocation mémoire :
(gestionnaire de la mémoire connaît la
taille de la m...
La mémoire virtuelle
La mémoire Virtuelle
La pagination
La pagination
La pagination
Exemple :
Un PC peut générer des adresses de 16
bits de 0 à 64Ko. C’est l’adressage
virtuelle. Mais ce PC n’...
La pagination
La pagination









La table des pages donne la relation entre les
adresses virtuelles et la mémoire physique.
L’...
La pagination
Les transferts entre mémoire et DD se font
toujours par page entière.
 Le MMU « mappe » les adresses virtue...
La pagination









La table des pages
But de la table des pages :
Établir correspondance entre pages virtuelles...
Pagination


Conception des pages
Pagination


Conception des systèmes paginés
Pagination


Conception des systèmes paginés
Gestion Mémoire










Algorithmes d’allocation mémoire
FIFO - First In, First Out,
LFU - Least Frequently Used...
La segmentation








La pagination : La mémoire virtuelle étudiée
jusqu’ici est à une dimension, les adresses
virtu...
Segmentation
Le segment est une entité logique que le
programmeur doit manipuler.
 Il peut contenir une procédure, un
tab...
Segmentation
Une mémoire segmentée peut être
protégée ( à l’inverse de la mémoire
paginée)
 Dans un segment se trouve un ...
Pagination Vs
Segmentation
FIFO VS LRU


FIFO : Dans ce cas, le système choisit la
case qui contient la page la plus ancienne
présente en mémoire.

...
Système d’exploitation II
Système d’exploitation II
Système d’exploitation II
Upcoming SlideShare
Loading in...5
×

Système d’exploitation II

1,994

Published on

Système d’exploitation II
Cours de OS II ISITCOM

Published in: Education
1 Comment
2 Likes
Statistics
Notes
  • M. s'il vous plait ouvre le téléchargement du document. Merci
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,994
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Système d’exploitation II

  1. 1. Plan du Cours Rappel  Mécanismes de base des Systèmes d’Exploitation  Processus et Threads  Ressources physiques et logiques  Gestion des processus  Gestion des ressources (Processeur, Mémoire centrale, Disque)  Mémoire virtuelle 
  2. 2. Objectif du Module      Introduire les mécanismes de base utilisés par les systèmes pour gérer les processus et les ressources. Introduire les notions de Processus, Threads et Ressources. Présenter les techniques de gestion des processus. Présenter les techniques de gestion des ressources d’un ordinateur. Apprendre les techniques de sécurisation des systèmes et les techniques de protection des données.
  3. 3. Rappel – Système d’exploitation C’est quoi un système d’exploitation (OS)?  Quelles sont les Classes et Types d’un OS ?  Quelles sont les fonctionnalités d’un OS?  Comment les OS sont structurés? (structuration des OS) 
  4. 4. Rappel - OS   Qu'est-ce qu'un système d'exploitation ? L'interface entre le logiciel et le physique.  Séparer les applications des spécificités du matériel : portabilité  Séparer les applications des limitations du matériel : Fini  Infini  Protéger le matériel des applications. Ce n'est pas facile ! !
  5. 5. Rappel - OS Buts d'un système d'exploitation :  décharger le programmeur d'une tache énorme et fastidieuse  concentration sur le développement de son application.  protéger le système et ses usagers de fausses manipulations.  offrir une vue simple/uniforme/cohérente de la machine et des ressources. 
  6. 6. Rappel : Classes des OS Mono-tâche (DOS): A tout instant, un seul programme est exécuté; un autre programme ne démarrera, sauf conditions exceptionnelles, que lorsque le premier sera terminé.  Multi-tâches (Windows, Unix, Linux, VMS):plusieurs processus (i. e. un «programme» en cours d’exécution) peuvent s’exécuter simultanément (systèmes multi-processeurs) ou en quasiparallélisme (systèmes à temps partagé)  Mono-session (Windows 98,2000): au plus un utilisateur à la fois sur une machine. Les systèmes réseaux permettent de différencier plusieurs utilisateurs, mais chacun d’eux utilise de manière exclusive la machine (multi- utilisateurs, monosession)  Multi-sessions (Windows XP, Unix, Linux, VMS): Plusieurs utilisateurs peuvent travailler simultanément sur la même machine. 
  7. 7. Rappel : Type des OS Systèmes pour mainframes  Systèmes pour serveurs  Systèmes multiprocesseurs  Systèmes personnels  Systèmes temps réel  Systèmes embarqués 
  8. 8. Rappel : Types des OS       Systèmes pour mainframes Grosses machines, beaucoup de ressources Systèmes pour serveurs Beaucoup d'utilisateurs Beaucoup de réseau Systèmes multiprocesseurs Plusieurs processeurs Gestion concurrente des ressources Systèmes personnels Interface conviviale Utilisation basique Systèmes temps réel Respect de contraintes temporelles Systèmes embarqués Interface conviviale Contraintes matérielles Systèmes pour smart-cards
  9. 9. Fonctionnalités d’un OS  OS = interface entre Programme et Matériel.
  10. 10. Fonctionnalités d’un OS Interface à plusieurs niveaux d'abstraction entre :  Le programme effectue des tâches  processus  Les tâches sont exécutées par le matériel  ressources 
  11. 11. Rôle d’un OS             Gérer les processus Gérer les ressources (pour le compte des processus) *CPU *Mémoire *Fichiers *…. Protéger les processus et les ressources Décomposition d'un SE en sous-système gestion de la mémoire principale et des mémoires secondaires, exécution des E/S (périphériques) à faible débit ou haut débit multiprogrammation, temps partagé, parallélisme interruption, ordonnancement, répartition en mémoire, partage des données, lancement des outils du système (compilateurs, environnement utilisateur,...) lancement des outils pour l'administrateur du système protection, sécurité ; réseaux
  12. 12. Structuration des OS Plusieurs possibilités de conception pour un SE : 1. Sans réelle structure 2. En couches 3. À noyau  o Monolithique o Microkernel o Hybride o Exokernel
  13. 13. Structuration des OS  Sans réelle structure
  14. 14. Structuration des OS  En couches
  15. 15. Structuration des OS  À noyau
  16. 16. Structuration des OS  À noyau : Monolithique
  17. 17. Structuration des OS  À noyau : Micronoyau
  18. 18. 1.Mécanismes de base des Systèmes d’Exploitation  Différence interruption/exception  Une interruption est provoquée par un signal provenant du monde extérieur au processeur, et modifiant le comportement de celui-ci.  Une exception est un signal provoqué par un dysfonctionnement du programme en cours d'exécution .  Chaque interruption ou exception dispose d'un sous-programme (handler) qui prend en charge l'évènement correspondant : table de vecteurs d'interruption ou IDT : Interrupt Descriptor Table dans le langage Linux.
  19. 19. 1.Mécanismes de base des Systèmes d’Exploitation  Concepts  Le kernel est chargé à partir du disque lors du démarrage du système  Bootstrapping = initialisation du système et définition de l'environnement pour exécuter des processus  Un premier processus (init) est lancé  S'exécute (réside) jusqu'à l'arrêt du système  Les autres processus sont alors créés à partir d'init (ou d'un de ses descendants)
  20. 20. 1.Mécanismes de base des Systèmes d’Exploitation  Concepts : Processus et espace d'adressage  Plusieurs processus partagent le CPU, la mémoire, les périphériques Si système à temps partagé l'exécution des processus est virtuellement concurrente Chaque processus a son espace d'adressage contenant    Ses instructions (code)  Ses données   Cet espace est a priori virtuel Il contient un ensemble de registres (compteur ordinal, pointeur de pile, ...) nécessaires au bon fonctionnement du processus
  21. 21. 1.Mécanismes de base des Systèmes d’Exploitation  Concepts : Processus et noyau La sémantique des interactions entre le kernel et les processus utilisateurs est définie à travers l'API système : les appels système Ainsi le kernel effectue les instructions pour le compte du processus  Le kernel intervient également quand un processus effectue une action interdite   division par zéro  débordement de pile (stack overflow)  adressage mémoire incorrect (segmentation fault)  cause une exception matériel (hardware exception) que le kernel traite pour le compte du processus
  22. 22. 1.Mécanismes de base des Systèmes d’Exploitation  Concepts : Espace d'adressage des processus et noyau  Une partie de l'espace d'adressage de chaque processus correspond à du code et des objets du kernel : c'est la partie espace système. Il n'existe qu'une seule instance du kernel dans le système Tous les processus pointent sur ce même espace kernel L'accès à l'espace système se fait en mode système à travers les appels système Le kernel gère les processus via 2 objets spécifiques à chaque processus :      L'espace usager (user space) qui contient des infos sur le processus  Liste des fichiers ouverts  Valeurs des registres, ...  La pile kernel (kernel stack) pour la gestion des fonctions de tous les processus en appel système
  23. 23. 1.Mécanismes de base des Systèmes d’Exploitation : Cycle de vie d’un processus  Concepts
  24. 24. 2. Processus et Threads Déf : Un processus est un programme qui s'exécute.  Les OS modernes permettent l'exécution en parallèle de plusieurs processus. 
  25. 25. 2. Processus et Threads   Création d’un Processus:  Suite : ○ ○ ○ ○ Initialisation du système Appel système de création par un processus Demande d'un utilisateur Lancement d'un travail de traitement par lot (mainframes) Sous UNIX un seul appel système pour créer de nouveau processus. Au démarrage un seul processus est crée: init ce dernier a pour descendant tous les processus qui s'exécuteront sur le système. Plus généralement il se crée une hiérarchie entre les processus avec des connexion entre chaque processus et ses descendants.
  26. 26. 2. Processus et Threads    Création d’un Processus: Appels systèmes int fork (); ○ Crée une copie identique du processus ○ Le parent reçoit comme résultat le PID du descendant ○ Le descendant reçoit 0 comme résultat  int waitpid (int pid, int *status, int option); ○ pid numéro à attendre (-1 n'importe quel descendant) ○ status valeur de sortie ou signal ○ option en général 0 (voir man) ○ Fournit le PID du processus qui a changé, -1 en cas d'erreur
  27. 27. 2. Processus et Threads  Destruction d’un processus:  Arrêt volontaire  Erreur  Erreur fatale  Arrêt par un autre processus  Fonction bibliothèque  void exit(int status);  Destruction du processus actuel  status est placé dans la valeur de waitpid  Convention: 0 en cas de succès, autre valeur en cas d‘échec.
  28. 28. 2. Processus et Threads Appel système  int kill(pid_t pid, int sig);  ○ Adresse le signal sig au processus pid ○ SIGTERM Tue le processus. Mais peut être intercepté pour "nettoyage" ○ SIGKILL Tue le processus à coup sur.
  29. 29. 2. Processus et Threads Opérations de base sur les PS:  Création /Destruction  Suspension / Activation  Abandon momentané  Attente de la terminaison d’un fils  Commutation (opération de bas niveau) 
  30. 30. 2. Processus et Threads  État d’un processus:
  31. 31. 2. Processus et Threads  Implémentation:
  32. 32. 2. Processus et Threads             Traitement d’une Interruption: Ex : Le processus 3 est en cours d'exécution Une interruption disque survient (Matériel) Le mot d‘état, ainsi que l‘état des registres est placée sur la pile active par le disque (Matériel) Le processeur passe alors a l'adresse speciae par le vecteur d'interruption (Matériel) Traitement logiciel Sauvegarde des données processus dans la table des processus La pile active est vidée Utilisation d'une pile temporaire "gestion de processus" Exécution du service d'interruption en C L'ordonnanceur détermine le nouveau processus a exécuter Démarrage du nouveau processus
  33. 33. 2. Processus et Threads Ordonnancement :  Comment choisir le processus à exécuter?  Il y a des tas de façon de choisir le processus suivant à exécuter  Il y a des contraintes:  ○ ne pas donner la main à un processus bloqué ○ assurer la réactivité du système ○ limiter le coût du changement de contexte (cache)
  34. 34. Critères d’ordonnancement Critères / Algorithme d’ordonnancement  Équitable (pas de famine)  Efficace  Minimisant les temps d'attente / de réponse des processus  Maximisant le rendement (nombre de travaux par unité de temps 
  35. 35. Critères d’ordonnancement  Algorithme avec / sans préemption  Transition interrompu du cycle de vie autorisée si préemption  (temps partagé) et interdite sinon (multiprogrammation seule)   Choix du quantum Gestion de priorités  Processus systèmes  Processus utilisateurs interactifs  Processus utilisateurs peu interactif  non-préemptif: sélectionne un processus, puis le laisse s’exécuter jusqu’à ce qu’il se bloque (E/S, wait) ou se termine.  préemptif: sélectionne un processus et le laisse s’exécuter pendant un quantum, préemption par l’interruption horloge
  36. 36. Algorithmes d’ordonnancement 1/2  En multiprogrammation seule  FIFO / FCFS (First In First out / First Come First Served) ○ Efficace (utilisation maximale de l’UC) et équitable  En multiprogrammation + temps partagé  PCTE / SJF (Plus court temps d’exécution / Shortest Job First) ○ Priorité aux tâches courtes ○ Impose de connaître le temps d’exécution (estimé en fonction des exécutions antérieures) ○ Non équitable mais optimal / temps de réponse  Tourniquet (Round Robin) avec quantum fixe ○ Chaque processus dispose d'un quantum de temps CPU (10-100 millisecondes), après lequel il est préempté ○ Efficace (sauf si quantum trop petit), équitable et bon / temps de réponse et rendement (sauf si quantum trop grand)
  37. 37. Algorithmes d’ordonnancement 2/2  Tourniquet avec priorités statiques       Une priorité est associée à un nombre de quantum (1, 2, 4, etc) Plus la priorité est forte, plus le quantum est petit Le processus le plus prioritaire est élu Bon compromis efficacité / rendement Temps de réponse bons (travaux interactifs prioritaires) Famine possible ○ Problème ≡ les processus de faible priorité peuvent ne jamais s'exécuter ○ Solution ≡ "Aging" – augmenter la priorité d'un processus avec son âge  priorités dynamiques  Tourniquet avec priorités dynamiques  Un paramètre supplémentaire (une durée et un nombre d’interruptions, ou l'âge) permet de faire passer les processus de priorité P à la priorité P+1 ou inversement  Ou bien la priorité P est fonction de la fraction de quantum (f) utilisée (p = 1/f)  Equitable
  38. 38. Shortest-Job-First (SJR) Associe à chaque processus la durée de son exécution  Deux possibilités :   Non préemptif – une fois que le CPU est alloué à un processus, il ne peut être préempté.  Préemptif – si un nouveau processus arrive avec un temps d'exécution plus court que celui du processus courant, ce dernier est préempté (algorithme Shortest-Remaining-TimeFirst(SRTF))  SJF est optimal par rapport au temps de réponse moyen
  39. 39. 2. Processus et Threads Des processus légers ? ( les Threads )  Les processus induisent une certaine lourdeur:   Changement de contexte  Pas (peu) de partage de mémoire  Dépendant de l'ordonnanceur  Un processus pourrait tirer parti d'une architecture multiprocesseurs/multi coeur
  40. 40. 2. Processus et Threads Les threads:  La programmation par thread permet d'intégrer dans la programmation des applications les bénéfices de la programmation parallèle.  Tout en conservant une partie de la légèreté de la programmation classique (en particulier vis-à-vis de la mémoire). 
  41. 41. 2. Processus et Threads       Les threads: Un thread est un contexte d'exécution ordonnable ,comprend un compteur ordinal, des registres et une pile Un thread est une unité d’exécution rattachée à un processus, chargée d’exécuter une partie du processus Les programmes simples comportent un seul thread pas de surcoût Les programmes plus complexes peuvent tirer parti des threads. Chaque thread a :     un identificateur unique une pile d' exécution des registres (un compteur ordinal) un état
  42. 42. Communication interprocessus 1. Conditions de Concurrence 2. Sections Critiques 3. Exclusion Mutuelle 4. Sommeil & Activation 5. Sémaphores 6. Mutex 7. Moniteurs 8. Echange de Messages 9. Barrières
  43. 43. Communication interprocessus  Conditions de Concurrence Conditions de concurrence (race conditions): situation où 2 processus ou plus effectuent des lectures et des écritures conflictuelles.  Exemple du Spouleur d’impression   Un processus qui veut imprimer un fichier, entre son nom dans un         répertoire de spoule Le processus démon d’impression regarde périodiquement s’il y a des fichiers à imprimer. Il a 2 variables: ○ in: pointe vers la prochaine entrée libre. ○ out: pointe vers le prochain fichier à imprimer in = 7, out = 4 A et B deux processus qui veulent imprimer un fichier A >> lire in, next_free_slot = 7 Interruption: la CPU bascule vers le processus B B >> lire in, next_free_slot = 7, entrée7 = fichierB, in = 8 A >> entrée7 = fichierA, in = 8 Problème: le fichierB ne sera pas imprimé
  44. 44. Communication interprocessus Comment éviter les conditions de concurrence?  Solution:Interdire que plusieurs processus lisent et écrivent des données partagées simultanément.  Exclusion Mutuelle: permet d’assurer que si un processus utilise une variable ou fichier partagés, les autres processus seront exclus de la même activité. 
  45. 45. Exclusion Mutuelle  Les Sections Critiques:
  46. 46. L’Exclusion Mutuelle avec Attente Active (busy waiting)  Désactivation des interruptions  Après son entrée dans une SC, un processus désactive les interruptions, puis les réactive  Il empêche ainsi l’horloge d’envoyer des interruptions et le processeur de basculer  Il est imprudent de permettre à des processus user de désactiver les interruptions  Variables de verrou (lock)  Avant d’entrer en SC, tester la valeur de verrou, si verrou = 0, verrou  1, entrer en SC  Défaillance: 2 processus peuvent entrer simultanément dans leurs sections critiques comme le spouler d’impression  Alternance Stricte  la variable turn porte le numéro du processus dont c’est le tour d’entrer en SC. Chaque processus inspecte la valeur de la variable, avant d’entrer en SC.  Inconvénient: consomme bcp de temps CPU
  47. 47. L’Exclusion Mutuelle avec Attente Active (busy waiting)  … Alternance Stricte while (TRUE) { while (TRUE) { while (turn != 0); while (turn != 1); critical_region(); critical_region(); turn = 1; turn = 0; non_critical_region(); non_critical_region(); } }  Les attentes actives sont performantes dans le cas où elles sont brèves. En effet, il y’ a risque d’attente ○ P0 quitte la CS, turn = 1 ○ P1 termine sa CS, turn = 0 ○ Les 2 processus sont en section non critique ○ P0 exécute sa boucle, quitte la SC et turn = 1 ○ Les 2 processus sont en section non critique ○ P0 quoiqu’il a terminé, il ne peut pas entrer en SC, il est bloqué
  48. 48. L’Exclusion Mutuelle avec Attente Active (busy waiting)  Solution de Peterson: combinaison de variables verrou, de variables d’avertissement sans alternance stricte. #define FALSE 0 #define TRUE 1 #define N 2 // nombre de processus int turn; // à qui le tour? int interested[N]; // initialement les valeurs sont falses void enter_region (int process) { int other; other = 1 – process; interested[process] = TRUE; turn = process; while (turn == process && interested[other] == TRUE); } void leave_region (int process) { interested[process] = FALSE; }
  49. 49. L’Exclusion Mutuelle avec Attente Active (busy waiting)  Instruction TSL  solution qui nécessite de l’aide du matériel.  TSL acronyme de Test and Set Lock  Elle consiste en la lecture du contenu du mot mémoire Lock du registre RX, puis stocker d’une valeur différente de 0 à l’adresse mémoire lock. Ces opérations sont indivisibles: le processeur exécutant TSL verrouille le bus mémoire. enter_region: TSL REGISTER, LOCK | copie lock dans le registre et la définit à 1 CMP REGISTER, #0 | tester si lock est égale à 0 JNE enter_region | si elle est différente de 0 boucle RET | retour à l’appelant, entre en SC leave_region: MOVE LOCK, #0 | stocke un 0 dans lock RET | retour à l’appelant
  50. 50. Problème du consommateurproducteur        Connu aussi sous le nom de tampon délimité (bounded buffer). 2 processus partagent un tampon commun de taille fixe N. Le producteur place des jetons dans le tampon. Le consommateur récupère un jeton Problème 1: le producteur souhaite placer un nouveau jeton alors que le tampon est plein. Problème 2: le consommateur souhaite récupérer un jeton alors que le tampon est vide Count dénote le nombre de jetons dans le tampon
  51. 51. Sommeil & Activation Ne consomme pas de la CPU comme l’attente active  Primitives de communication:  sleep: appel système qui provoque le blocage de l’appelant  wake up: appel système qui réveille un processus.  Problème du producteur-consommateur #define N 100 int count = 0;  void producer (void) { int item; while (TRUE) { item = produce_item(); if (count == N) sleep(); insert_item(item); count++; if (count == 1) wakeup(consumer); } } void consumer (void) { int item; while (TRUE) { if (count == 0) sleep(); item = remove_item(); count--; if (count == N-1) wakeup(producer); consume_item(item); } }
  52. 52. Sommeil & Activation  Problème de blocage:  Le consommateur note que le tampon est vide  Interruption: arrêt du consommateur sans qu’il parte en sommeil  Le producteur insère un jeton, incrémente le décompte, appelle wakeup pour réveiller le consommateur  Le signal wakeup est perdu, car le consommateur n’est pas en sommeil  Le consommateur reprend, pour lui le tampon est vide, il dort  Le producteur remplit le tampon et dort  Solution: ajouter un bit d’attente d’éveil.  Quand un wakeup est envoyé à un processus le bit est à 1;  le consommateur teste le bit, s’il est à 1, il le remet à 0 et reste en éveil  Cette solution est + difficile à généraliser en cas de + sieurs processus.
  53. 53. Sémaphore Sémaphore: # de wakeup enregistrés 2 opérations:       down: si la valeur de la variable sémaphore est > 0, la décrémenter; si la valeur est nulle: sleep up: incrémenter la valeur de la sémaphore et réveiller au hasard un processus dormant down et up sont implémentées en tant que appels système, le SE désactive les interruptions, et c’est ainsi que les opérations de vérification, de m-à-j et de sommeil s’exécutent de manière atomique Problème du producteur-consommateur      3 sémaphores: full, empty et mutex full: # d’emplacemens occupés dans le tampon empty: # d’emplacements vides dans le tampon mutex: pour s’assurer que le consommateur et le producteur n’accèdent pas simultanément au tampon
  54. 54. Sémaphore #define N 100 Typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer (void) { int item; message m; while (TRUE) { item = produce_item(); down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full); } } void consumer (void) { int item; while (TRUE) { down(&full); down(&mutex); item = remove_item(&m); up(&mutex); up(&empty); consume_item(item); } }
  55. 55. Mutex  Sémaphore d’exclusion mutuelle, où la fonction décompte n’est pas nécessaire. Une mutex a 2 états: déverrouillé: valeur 0 ou verrouillé Si +sieurs threads sont bloqués sur une mutex, l’un d’entre eux est choisi au hasard pour prendre possession du verrou. mutex_lock et mutex_unlock  mutex_lock:     TSL REGISTER, MUTEX | copie mutex dans le registre et la définit à 1  CMP REGISTER, #0 | tester si mutex est égale à 0  JSE ok | si elle est différente de 0 retour  CALL thread_yield | relâcher la CPU    ok: RET | retour à l’appelant mutex_unlock:  MOVE MUTEX, #0  RET | retour à l’appelant | stocke un 0 dans mutex  ! Comparer au code d’enter_region slide 17
  56. 56. Moniteurs     Collection de procédures, de variables, de structures de données regroupées dans un module. Un processus ne peut appeler que les procédures du moniteur. Les moniteurs sont des constructions de langage, et c’est au compilateur d’implanter l’exclusion mutuelle sur les entrées du moniteur. Problème du producteur-consommateur  2 variables conditionnelles (vc): full et empty  Quand une procédure du moniteur découvre qu’elle ne peut plus poursuivre, elle effectue un wait sur une vc  Si un signal est adressé une vc attendue, un processus est réactivé.
  57. 57. Moniteurs monitor ProducteurConsommateur condition full, empty; integer count; procedure insert (item: integer) begin if count = N then wait(full) insert_item(item); count++; if (count = 1) then signal(empty); end; function remove: integer begin if count = 0 then wait(empty); remove = remove_item; count--; if (count = N –1) then signal(full); end; count = 0; end monitor; procedure producteur begin while true do { item = produce_item; ProducteurConsommateur.insert(item); } end; procedure consommateur begin while true do { item = ProducteurConsommateur.remove; consume_item(item); } end;
  58. 58. Echange de Messages   Convient aux systèmes distribués 2 primitives appels systèmes: send et receive  send (destination, &message)  receive (source, &message)  Problèmes  Perte de messages dans le réseau,  + de fiabilité par les ACKs, la retransmission de messages et la détection de doublons  Problème du producteur-consommateur  Les messages émis et non encore reçus sont mis en mémoire par le SE  Le consommateur envoie N messages vides au producteur  Le producteur remplit chaque message vide reçu
  59. 59. Echange de Messages #define N 100 void producer (void) { int item; message m; while (TRUE) { item = produce_item(); receive(consumer, &m); build_message(&m, item); send(consumer, &m); } } void consumer (void) { int item, i; for(i=0; i<N;i++) send(producer, &m); while (TRUE) { receive(producer,&m); item = extract_item(&m); send(producer, &m); consume_item(item); }  Problème, si le producer travaille + vite que le consumer  le producer envoie tous les messages pleins et reste bloqué en attente d’un message vide.
  60. 60. Les Barrières  Mécanisme de synchronisation destiné aux groupes de processus.  Cas d’applications décomposées en phases, où aucun processus ne peut entrer dans la phase suivante tant que tous les processus ne sont pas prêts à y entrer.  Solution: placer une barrière, et quand un processus atteint la barrière il est bloqué jusqu’à ce que tous les processus atteignent la barrière.
  61. 61. Gestion de la mémoire Problématique :  La mémoire centrale est une ressource requise par tout processus  Un programme doit être chargé dans la mémoire centrale pour être exécuté  ○ Demarrer_processus(p)  Allouer(taille(p)) ○ Terminer_processus(p)  Liberer(zone_allouée_à (p))    Problématique Gérer les processus associés à des programmes trop volumineux Gérer le partage de la mémoire physique entre différents processus
  62. 62. Hiérarchies de mémoire Registres  Caches  ○ L1 on chip (2 x 32KO) ○ L2 en multi-cœurs (4 à 6MO)  Mémoire centrale ○ 256MO à 2/4 GO  Mémoires secondaire ○ 80 GO
  63. 63. Fonctions attendues Principe de partage de la ressource mémoire  Fournir une mémoire logique à chaque processus (2K)  Gérer les translations entre les mémoires logiques et la mémoire physique (liaisons d'adresses)  Mémoire physique :   Suite contiguë de mots (8, 16, 32, 64 bits selon processeur)  Adressage direct aléatoire  Tailles courantes : 256 Méga  2 à 4 Giga
  64. 64. Fonctions attendues  Mémoire logique :  Espace logiquement contigu  Adressage direct aléatoire de mots  Taille maximum = 2 K – 1 (k = la capacité d’adressage)  Mise en œuvre des mémoires logiques au dessus de la mémoire physique  Swapping (partage de la mémoire dans le temps)  Découpage (partitionnement)  Multiplexage  Protection des espaces logiques
  65. 65. Fonctions attendues  Adresse physique  Index d’un mot dans la mémoire physique  Adresse logique  Index d’un mot dans la mémoire logique  Liaison d’adresses  Transformation d’une adresse logique en une adresse physique  La liaison peut avoir lieu à différents moments  À la compilation, au chargement ou à l’exécution  Le moment de la liaison d’adresses, ainsi que le type d’adresses sont dépendants des caractéristiques du matériel
  66. 66. Swapping / Va et vient Swapping: technique utilisée en cas de multiprogrammation / temps partagé  Sorte de partage de la mémoire dans le temps  La mémoire centrale ne peut pas contenir tous les processus en cours d'exécution  On doit pouvoir vider des processus en mémoire secondaire lorsque ceux-ci ne sont pas actifs 
  67. 67. Les différentes techniques de partitionnement de la mémoire centrale    Fonction attendue :  Allouer-zone (t : taille)  adresse  Libérer-zone (a : adresse, t : taille) Objectifs :  Optimiser l’utilisation de la mémoire (limiter la fragmentation)  Optimiser les algorithmes d’allocation / libération Techniques :  Zones contiguës de taille fixées  Zones contiguës de taille variables  Zones non contiguës de taille fixe (systèmes paginés)  Zones non contiguës de taille variable (systèmes
  68. 68. Allocation en zones contiguës de taille fixée
  69. 69. Allocation en zones contiguës de taille fixée (implantation)
  70. 70. Allocation en zones contiguës de taille fixée (conclusion) Algorithmes d’allocation / libération rapides (si peu de recouvrements)  Zones de tailles identiques :   Fragmentation interne si taille(processus) << taille(zone)  Gestion de recouvrement si taille(processus) >> taille(zone)  Zones de tailles différentes :  Fragmentation interne si mauvais découpage initial
  71. 71. Allocation en zones contiguës de tailles variables
  72. 72. Allocation en zones contiguës de taille variable (Implantations)
  73. 73. Allocation en zones contiguës de taille variable (stratégies d’allocation)    First-Fit: liste non ordonnée, ou ordonnée par adresse Best-Fit: liste ordonnée par tailles croissantes Worst-Fit: liste ordonnée par tailles décroissantes
  74. 74. Allocation en zones contiguës de taille variable (conclusion) En général, First-Fit et Best-Fit meilleurs que Worst-Fit.  Globalement :   (+) Simplicité  (+) Pas de fragmentation interne  (-) Fragmentation externe  (-) Temps de gestion des fusions / éclatements
  75. 75. Allocation en zones contiguës de tailles variables contrôlées     Objectif = accélérer les temps de gestion des fusions / éclatements en utilisant une gestion par subdivision Allocation : si aucun bloc libre de taille approximativement égale à la taille demandée, éclater un bloc libre en deux sous-blocs de tailles contraintes Libération : fusionner éventuellement le bloc libéré avec le(s) bloc(s) contigu(s) Règles d’éclatement et règles de fusionnement  différents algorithmes
  76. 76. Allocation en zones contiguës de tailles variables contrôlées Algorithme Buddy: éclatement d’un bloc en deux sous-blocs de taille égale(blocs siamois) : 2k= 2k-1+ 2k-1
  77. 77. Algorithme buddy Allocation et libération rapides (pas de parcours, le calcul d’adresse du bloc précédent / suivant est direct)  Fragmentation interne limitée (tailles arrondies à une puissance de 2)  Fragmentation externe (limitée) 
  78. 78. Allocation en zones contiguës (remarques générales) Fragmentation externe  Quelque soit l’algorithme utilisé, il est possible que la place libre devienne insuffisante :   Libérer une zone en renvoyant en mémoire secondaire les données qu’elle contient  Réorganiser entièrement l’espace mémoire (compactage)  Utiliser un ramasse-miettes dans le cas ou des blocs alloués ont pu devenir inaccessibles
  79. 79. Gestion de la mémoire       Gestion de la mémoire par liste chaînée Algorithme d’allocation mémoire : (gestionnaire de la mémoire connaît la taille de la mémoire allouée) 1- First fit : Le plus simple et le plus rapide, celui de la première zone libre. Le gestionnaire de la mémoire parcourt la liste des segments à la recherche de la première zone libre qui peut contenir le processus. Cette zone est alors scindée en deux parties : la première contient le processus et la deuxième l’espace mémoire inutilisé (sauf si le processus a la même taille que la zone).
  80. 80. Gestion de la mémoire      Algorithme d’allocation mémoire : (gestionnaire de la mémoire connaît la taille de la mémoire allouée) 2- Next fit : L’algorithme de la zone libre suivante est une variante de la première. Elle mémorise en plus la position de l’espace libre trouvé. Ainsi, la recherche suivante commencera à partir de cette position et non à partir du début.
  81. 81. Gestion de la mémoire      Algorithme d’allocation mémoire : (gestionnaire de la mémoire connaît la taille de la mémoire allouée) 3- Best fit : L’algorithme du meilleur ajustement. On recherche dans toute la liste la plus petite zone qui convient (afin d’éviter de fractionner une grande zone utilisable ultérieurement). C’est un algorithme plus lent que celui de la première zone libre.
  82. 82. La mémoire virtuelle
  83. 83. La mémoire Virtuelle
  84. 84. La pagination
  85. 85. La pagination
  86. 86. La pagination Exemple : Un PC peut générer des adresses de 16 bits de 0 à 64Ko. C’est l’adressage virtuelle. Mais ce PC n’a que 32Ko de mémoire physique.  Conséquence : il est possible d’écrire un programme de 64Ko mais pas de le charger entièrement en mémoire.  L’image mémoire de tout le programme est stocké sur DD pour pouvoir charger, au besoin, les différentes parties dans la mémoire principale.  
  87. 87. La pagination
  88. 88. La pagination       La table des pages donne la relation entre les adresses virtuelles et la mémoire physique. L’espace d’adressage virtuelle est divisé en petite unité appelé page. Les unités correspondantes de la mémoire physique sont les cases mémoires. Pages et cases ont toujours la même taille. Dans l’exemple ci-dessus, page et case ont une taille de 4Ko (de 512 octets à 8Ko) Avec 64Ko d’adresse ou mémoire virtuelle et 32Ko de mémoire physique, on a 16 pages virtuelles et 8 cases
  89. 89. La pagination Les transferts entre mémoire et DD se font toujours par page entière.  Le MMU « mappe » les adresses virtuelles par des adresses physiques.  Dans l’exemple ci-dessus, le mappage concerne que 8 pages virtuelles sur la mémoire physique. Les autres pages (noté x) ne sont pas mappées, mais en attente de libération de case pour être exécutées. (page mappée par bit de présence). 
  90. 90. La pagination        La table des pages But de la table des pages : Établir correspondance entre pages virtuelles et case mémoire. Remarque : Table des pages peut être très grande. Mappage très rapide. Si l’espace d’adressage virtuelle a 1 million de pages, la table des pages doit comporter 1 million d’entrées. Chaque processus a besoin de sa propre table des pages.
  91. 91. Pagination  Conception des pages
  92. 92. Pagination  Conception des systèmes paginés
  93. 93. Pagination  Conception des systèmes paginés
  94. 94. Gestion Mémoire         Algorithmes d’allocation mémoire FIFO - First In, First Out, LFU - Least Frequently Used , MIN : algorithme optimal. Random : au hasard LRU - Least Recently Used : ordre chronologique d'utilisation FINUFO - First In Not Used, First Out (algorithme de l'horloge ou Clock) : approximation du LRU, Performances : MIN, LRU, FINUFO, [FIFO, Random].
  95. 95. La segmentation     La pagination : La mémoire virtuelle étudiée jusqu’ici est à une dimension, les adresses virtuelles sont comprises entre 0 et une adresse maximale. Chaque segment est une suite d’adresses continus de 0 à une adresse maximale autorisée. Les segments ont des tailles différentes qui varient en cours d’exécution, il représente des espaces d’adressage séparés. La segmentation : plusieurs espaces d’adresses indépendants appelés segments
  96. 96. Segmentation Le segment est une entité logique que le programmeur doit manipuler.  Il peut contenir une procédure, un tableau, mais en général, il ne contient pas un mélange d’objets de types différents.  La segmentation simplifie le partage des procédures et des données entre plusieurs procédures. 
  97. 97. Segmentation Une mémoire segmentée peut être protégée ( à l’inverse de la mémoire paginée)  Dans un segment se trouve un type d’objet précis, un tableau, une procédure, une pile  écriture/lecture (le tableau), en exécution (la procédure) 
  98. 98. Pagination Vs Segmentation
  99. 99. FIFO VS LRU  FIFO : Dans ce cas, le système choisit la case qui contient la page la plus ancienne présente en mémoire.  LRU : Dans ce cas, le système choisit la case qui contient la page qui est la plus ancienne référencée parmi celles présentes en mémoire

×