Slides STR
Slides STR
Matthieu Herrb
[Link]
Janvier 2018
Plan général
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
2/90
Bibliographie
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
4/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
Gestion des ressources
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
Gestion des ressources
Propriétés :
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
Gestion des ressources
Propriétés :
Réactif
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
Gestion des ressources
Propriétés :
Réactif
Permanent
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
Gestion des ressources
Propriétés :
Réactif
Permanent
Interfaces standard
5/90
Système d’exploitation
(Operating System)
Programme particulier qui gère la machine :
Exécution des autres programmes
Protection contre les fautes
Gestion des ressources
Propriétés :
Réactif
Permanent
Interfaces standard
Économe
5/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Temps Réel
6/90
Système / logiciel embarqué
8/90
Quelques systèmes temps-réel
[Link]
9/90
Systèmes embarqués : architectures matérielles
Processeurs :
micro-controleurs divers : monde industriel, hobbyistes
(AVR / Arduino)
ARM :
Cortex M (sans MMU), systèmes industriels,
Cortex A (MMU), Exynos, [Link], Allwinnner,... : téléphones,
tablettes, internet des objets,
MIPS : équipements réseau, imprimantes,...
SPARC : spatial (Leon)
x86...
Bus dédiés :
CAN : bus temps réel (contrôle de process, automobile,...)
I2C, SPI, OneWire : liaisons séries simples avec E/S bas débit
10/90
Linux et le temps réel
11/90
Xenomai
12/90
RTEMS
13/90
Architecture logicielle
14/90
Composants d’un système d’exploitation
15/90
Composants d’un système d’exploitation
15/90
Composants d’un système d’exploitation
15/90
Composants d’un système d’exploitation
15/90
Composants d’un système d’exploitation (2)
16/90
Composants d’un système d’exploitation (2)
16/90
Mécanismes de base : architecture matérielle
17/90
Mécanismes de base : le processeur
18/90
Mécanismes de base : le processeur
18/90
Mécanismes de base : le processeur
18/90
Mécanismes de base : le processeur
18/90
Mécanismes de base : le processeur
18/90
Mécanismes de base : le processeur
18/90
Mécanismes de base : Les interruptions
19/90
Mécanismes de base : Les interruptions
19/90
Mécanismes de base : Les interruptions
19/90
Mécanismes de base : Les interruptions
19/90
Mécanismes de base : Les déroutements
20/90
Mécanismes de base : Les déroutements
20/90
Mécanismes de base : Les déroutements
20/90
Mécanismes de base : Les déroutements
20/90
Mécanismes de base : les entrées/sorties (1)
22/90
Mécanismes de base : Les entrées/sorties (2)
22/90
Mécanismes de base : Les entrées/sorties (2)
22/90
Mécanismes de base : Les entrées/sorties (2)
22/90
Mécanismes de base : Les entrées/sorties (2)
22/90
Plan
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
23/90
Processus : définition
24/90
Processus : définition
24/90
Processus : définition
24/90
Processus : définition
24/90
Processus : définition
24/90
Processus : définition
24/90
États d’un processus
2 1 Exécution utilisateur
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
États d’un processus
2 1 Exécution utilisateur
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
États d’un processus
2 1 Exécution utilisateur
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
États d’un processus
2 1 Exécution utilisateur
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
États d’un processus
2 1 Exécution utilisateur
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
États d’un processus
2 1 Exécution utilisateur
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
États d’un processus
1 Exécution utilisateur
2
2 Exécution superviseur
3 Bloqué
4 Prêt
3 4
25/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Descripteurs de processus
26/90
Opérations sur les processus
Création
Demandée par un autre processus.
allocation et initialisation d’un
descripteur,
copie en mémoire du
programme à exécuter.
−→ arbre des processus en cours.
Créé dans l’état prêt ou suspendu.
27/90
Opérations sur les processus
Création Destruction
Demandée par un autre processus. Peut être demandée par :
allocation et initialisation d’un le processus lui-même,
descripteur, un autre processus,
copie en mémoire du le noyau.
programme à exécuter.
Libération des ressources associées.
−→ arbre des processus en cours. Génération d’un événement.
Créé dans l’état prêt ou suspendu.
27/90
Opérations sur les processus
Blocage
Passage en mode bloqué en attente
d’un événement externe (condition
logique).
fin d’une entrée/sortie
disponibilité d’une ressource
interruption
Peut être demandé par le processsus
ou forcé par le système
→ préemption
28/90
Opérations sur les processus
Blocage Déblocage
Passage en mode bloqué en attente Passage en mode prêt d’un
d’un événement externe (condition processus bloqué lorsque
logique). l’évenement attendu se produit.
fin d’une entrée/sortie
disponibilité d’une ressource
interruption
Peut être demandé par le processsus
ou forcé par le système
→ préemption
28/90
Opérations sur les processus
Blocage Déblocage
Passage en mode bloqué en attente Passage en mode prêt d’un
d’un événement externe (condition processus bloqué lorsque
logique). l’évenement attendu se produit.
fin d’une entrée/sortie
Activation
disponibilité d’une ressource
Passage en mode exécution d’un
interruption processus prêt.
Peut être demandé par le processsus
ou forcé par le système
→ préemption
28/90
Processus & Threads
29/90
Processus : threads POSIX
#include <pthread.h>
int pthread_create(
pthread_t *thread, /* valeur retournee */
pthread_attr_t *attr, /* attributs du thread */
void *(*start_routine)(void *), /* fonction a executer */
void *arg /* argument */
);
void pthread_exit(void *retval);
int pthread_join(pthread_t thread, void *status);
int pthread_detach(pthread_t thread);
int pthread_cancel(pthread_t thread);
30/90
Ordonnancement : définition
31/90
Ordonnancement : définition
31/90
Ordonnancement : définition
31/90
Ordonnancement : définition
31/90
Ordonnancement : définition
31/90
Ordonnancement : définition
31/90
Ordonnancement : définition
31/90
Ordonnancement : définition
Peut être réalisé entièrement par le noyau ou par une tâche spécialisée
(scheduler).
31/90
Ordonnancement non préemptif
32/90
Ordonnancement non préemptif
32/90
Ordonnancement non préemptif
32/90
Ordonnancement non préemptif
32/90
Ordonnancement préemptif
33/90
Ordonnancement préemptif
33/90
Ordonnancement préemptif
33/90
Priorités entre processus
34/90
Priorités entre processus
34/90
Priorités entre processus
34/90
Priorités entre processus
34/90
Ordonnancement POSIX
#include <sched.h>
Policy :
SCHED_FIFO ordonnancement préemptif, basé sur les priorités
SCHED_RR ordonnacement préemptif, basé sur les priorités et qantas
de temps
SCHED_OTHER autre ordonnanceur, dépendant de l’implémentation.
35/90
Plan
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
36/90
Synchronisation des processus : pourquoi ?
37/90
Synchronisation des processus : pourquoi ?
37/90
Synchronisation des processus : pourquoi ?
37/90
Synchronisation des processus : section critique
38/90
Synchronisation des processus : section critique
38/90
Synchronisation des processus : section critique
38/90
Synchronisation des processus : section critique
38/90
Synchronisation des processus : exclusion mutuelle
39/90
Synchronisation des processus : exclusion mutuelle
39/90
Synchronisation des processus : solutions
40/90
Synchronisation des processus : solutions
40/90
Synchronisation des processus : solutions
40/90
Synchronisation des processus : solutions
40/90
Synchronisation des processus : solutions
40/90
Synchronisation des processus : solutions
40/90
Une solution matérielle : Test And Set
41/90
Test and Set en langage C
(Dijkstra)
Le sémaphore est un objet sur lequel seulement 2 opérations sont
possibles : P(s) et V(s), toutes 2 atomiques.
43/90
Sémaphores : définition
(Dijkstra)
Le sémaphore est un objet sur lequel seulement 2 opérations sont
possibles : P(s) et V(s), toutes 2 atomiques.
43/90
Sémaphores : définition
(Dijkstra)
Le sémaphore est un objet sur lequel seulement 2 opérations sont
possibles : P(s) et V(s), toutes 2 atomiques.
43/90
Sémaphores : définition
(Dijkstra)
Le sémaphore est un objet sur lequel seulement 2 opérations sont
possibles : P(s) et V(s), toutes 2 atomiques.
43/90
Sémaphores binaires
Un sémaphore binaire est réalisé avec une variable booléene et une file
d’attente de processus.
44/90
Sémaphores binaires
Un sémaphore binaire est réalisé avec une variable booléene et une file
d’attente de processus.
struct semaphore_t {
bool is_free ;
process_queue_t fifo ;
44/90
Sémaphores binaires (2)
45/90
Sémaphores binaires (2)
45/90
Sémaphores d’exclusion mutuelle
46/90
Sémaphores d’exclusion mutuelle
46/90
Sémaphores d’exclusion mutuelle
46/90
Sémaphores d’exclusion mutuelle
46/90
Mutex POSIX
#include <pthread.h>
47/90
Sémaphores privés
48/90
Sémaphores privés
48/90
Sémaphores privés
P1 ... P2 CYCLE
... ... ... ...
V(sp) ... V(sp) P(sp)
... ... ... ...
48/90
Sémaphores privés
P1 ... P2 CYCLE
... ... ... ...
V(sp) ... V(sp) P(sp)
... ... ... ...
48/90
Sémaphores généraux
49/90
Sémaphores généraux
49/90
Sémaphores généraux
49/90
Sémaphores généraux
49/90
Sémaphores généraux
49/90
Sémaphores généraux
49/90
Sémaphores généraux
49/90
Exemple : producteur / consommateur
50/90
Exemple : producteur / consommateur
50/90
Exemple : producteur / consommateur
50/90
Exemple : producteur / consommateur
50/90
Semaphores POSIX
#include <semaphore.h>
51/90
Moniteurs
52/90
Moniteurs
52/90
Moniteurs
52/90
Moniteurs
52/90
Moniteurs
52/90
Moniteurs
52/90
Moniteurs : variables conditions
53/90
Moniteurs : variables conditions
53/90
Moniteurs : variables conditions
53/90
Moniteurs : variables conditions
53/90
Moniteurs : variables conditions
53/90
Philosophes et spaghettis
Cinq philosophes sont dans une pièce avec une table ronde sur laquelle se
trouvent cinq assiettes contenant des spaghettis.
54/90
Philosophes et spaghettis
Cinq philosophes sont dans une pièce avec une table ronde sur laquelle se
trouvent cinq assiettes contenant des spaghettis.
Chaque philosophe a sa place attitrée.
54/90
Philosophes et spaghettis
Cinq philosophes sont dans une pièce avec une table ronde sur laquelle se
trouvent cinq assiettes contenant des spaghettis.
Chaque philosophe a sa place attitrée.
Chaque philosophe alterne entre faire de la philosophie (debout) et
manger des spaghettis (assis).
54/90
Philosophes et spaghettis
Cinq philosophes sont dans une pièce avec une table ronde sur laquelle se
trouvent cinq assiettes contenant des spaghettis.
Chaque philosophe a sa place attitrée.
Chaque philosophe alterne entre faire de la philosophie (debout) et
manger des spaghettis (assis).
Comme les philosophes sont peu sociaux, ils ne s’assoient à table
que si les deux places de part et d’autre de la leur sont libres.
54/90
Philosophes et spaghettis
Cinq philosophes sont dans une pièce avec une table ronde sur laquelle se
trouvent cinq assiettes contenant des spaghettis.
Chaque philosophe a sa place attitrée.
Chaque philosophe alterne entre faire de la philosophie (debout) et
manger des spaghettis (assis).
Comme les philosophes sont peu sociaux, ils ne s’assoient à table
que si les deux places de part et d’autre de la leur sont libres.
Représenter le système sous forme de processus indépendants (les
philosophes) mais synchronisés.
54/90
Variables Condition POSIX
55/90
Tickets locks
56/90
Tickets locks
56/90
Tickets locks
MONITEUR prendre_ticket
mon_ticket ← suivant
suivant ← suivant + 1
TANT QUE courant 6= mon_ticket
WAIT(c)
FIN TANT QUE
FIN
MONITEUR libérer_ticket
courant ← courant + 1
COND_BROADCAST(c)
FIN
56/90
Synchronisation par messages
P1 P2
Envoi Reception
temps
57/90
Interblocage
(Dead Lock)
58/90
Interblocage
(Dead Lock)
Définition
Un processus est en état d’interblocage s’il est bloqué en attente d’une
condition qui ne se produira jamais.
58/90
Interblocage
(Dead Lock)
Définition
Un processus est en état d’interblocage s’il est bloqué en attente d’une
condition qui ne se produira jamais.
Conditions nécéssaires :
58/90
Interblocage
(Dead Lock)
Définition
Un processus est en état d’interblocage s’il est bloqué en attente d’une
condition qui ne se produira jamais.
Conditions nécéssaires :
1 Les processus accèdent en exclusion mutuelle à des ressources
critiques.
58/90
Interblocage
(Dead Lock)
Définition
Un processus est en état d’interblocage s’il est bloqué en attente d’une
condition qui ne se produira jamais.
Conditions nécéssaires :
1 Les processus accèdent en exclusion mutuelle à des ressources
critiques.
2 Les processus gardent les ressources aquises pendant qu’ils sont
bloqués en attente d’une ressource.
58/90
Interblocage
(Dead Lock)
Définition
Un processus est en état d’interblocage s’il est bloqué en attente d’une
condition qui ne se produira jamais.
Conditions nécéssaires :
1 Les processus accèdent en exclusion mutuelle à des ressources
critiques.
2 Les processus gardent les ressources aquises pendant qu’ils sont
bloqués en attente d’une ressource.
3 Les ressources acquises par un processus ne peuvent lui être retirées
de l’extérieur.
58/90
Interblocage
(Dead Lock)
Définition
Un processus est en état d’interblocage s’il est bloqué en attente d’une
condition qui ne se produira jamais.
Conditions nécéssaires :
1 Les processus accèdent en exclusion mutuelle à des ressources
critiques.
2 Les processus gardent les ressources aquises pendant qu’ils sont
bloqués en attente d’une ressource.
3 Les ressources acquises par un processus ne peuvent lui être retirées
de l’extérieur.
4 Il existe un cycle de processus où chacun attend une ressource
acquise par un autre.
58/90
Interblocage : représentation
P demande la ressource R
Processus Exemple d’interblocage
P R P1
Ressource
R1 R2
P détient la ressource R
P2
P R
59/90
Interblocage : traitement
2 approches :
60/90
Interblocage : traitement
2 approches :
Prévenir (éviter)
prévention (statique)
esquive (dynamique)
60/90
Interblocage : traitement
2 approches :
Prévenir (éviter)
prévention (statique)
esquive (dynamique)
Guérir (vivre avec)
détection
récupération
60/90
Interblocage : prévention
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
Pas de partage de ressources (pas intéressant)
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
Pas de partage de ressources (pas intéressant)
Allocation globale des ressources en une seule fois
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
Pas de partage de ressources (pas intéressant)
Allocation globale des ressources en une seule fois
Libération des ressources acquises avant blocage (allocation
conditionnelle)
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
Pas de partage de ressources (pas intéressant)
Allocation globale des ressources en une seule fois
Libération des ressources acquises avant blocage (allocation
conditionnelle)
Ordonnancement de l’allocation des ressources
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
Pas de partage de ressources (pas intéressant)
Allocation globale des ressources en une seule fois
Libération des ressources acquises avant blocage (allocation
conditionnelle)
Ordonnancement de l’allocation des ressources
61/90
Interblocage : prévention
Prévention statique
Il suffit qu’une seule des conditions nécéssaires (1, 2, 3, 4) soit fausse :
Pas de partage de ressources (pas intéressant)
Allocation globale des ressources en une seule fois
Libération des ressources acquises avant blocage (allocation
conditionnelle)
Ordonnancement de l’allocation des ressources
61/90
Interblocage : détection
62/90
Interblocage : détection
Identification :
→ des processus en étreinte fatale
→ des ressources concernées
Construction du graphe “de propriété” et “de requête”.
62/90
Interblocage : détection
Identification :
→ des processus en étreinte fatale
→ des ressources concernées
Construction du graphe “de propriété” et “de requête”.
Réduction :
Suppression des arcs constituant le blocage (boucle).
62/90
Plan
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
63/90
Mécanismes de base : la mémoire
64/90
La mémoire
65/90
La mémoire
→ uniforme
Un seul espace d’adressage
Un seul problème : le découpage de cet espace entre les processus.
65/90
La mémoire
→ uniforme
Un seul espace d’adressage
Un seul problème : le découpage de cet espace entre les processus.
→ hiérarchisée
Plusieurs espaces d’adressage
Notion de hiérarchie entre ces espaces (mémoire primaire,
secondaire. . . )
Exemples : mémoire virtuelle, mémoire cache, mémoire segmentée
Problèmes : migration entre les niveaux, choix du niveau. . .
65/90
Contenu de la mémoire
code données
66/90
Mémoire uniforme
67/90
Mémoire uniforme
67/90
Mémoire uniforme
67/90
Mémoire uniforme
67/90
Mémoire uniforme
67/90
Mémoire uniforme
67/90
Algorithmes d’allocation par zones
68/90
Algorithmes d’allocation par zones
68/90
Algorithmes d’allocation par zones
68/90
Algorithmes d’allocation par zones
68/90
Algorithmes d’allocation par zones
68/90
Algorithmes d’allocation par zones
Libération
68/90
Algorithmes d’allocation par zones
Libération
simple marquage
68/90
Algorithmes d’allocation par zones
Libération
simple marquage
fusion des zones libres adjacentes
68/90
Algorithmes d’allocation par zones
Libération
simple marquage
fusion des zones libres adjacentes
ramasse-miettes
68/90
Systèmes à mémoire hiérarchisée
Temps d’accès
Cout
CACHE
PRINCIPALE
SECONDAIRE
69/90
Techniques de va et vient
(swapping)
70/90
Techniques de va et vient
(swapping)
70/90
Techniques de va et vient
(swapping)
70/90
Techniques de va et vient
(swapping)
70/90
Mémoire virtuelle et swap
0x00000000
0x00010000
text 0x00000000
0x10000000
data
0x00ffffff
stack
page belonging to process
0x7fffffff page not belonging to process
71/90
Fonctionnement
72/90
Traduction d’adressses
TLB hit
virtual address physical address
TLB
TLB miss
TLB writ e
page t able
hit
page table
page not
present
disk
73/90
Table des pages : cas des processeurs x86
Table à 2 niveaux :
PDT : Page Directory table : répertoire des pages
10 bits
PT : Page Table.
10 bits
Taille d’une page : 4096 octets (212 ).
74/90
Table des pages : cas des processeurs x86
75/90
Exemple
76/90
Exemple
76/90
Exemple
76/90
Exemple
76/90
Exemple
76/90
Exemple
76/90
Exemple
76/90
Trashing
77/90
Plan
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
78/90
Horloges et mesure du temps
79/90
Temps universel POSIX
#include <time.h>
80/90
Temps universel décodé
#include <sys/types.h>
#include <time.h>
struct tm {
int tm_sec; /* seconds (0 - 60) */
int tm_min; /* minutes (0 - 59) */
int tm_hour; /* hours (0 - 23) */
int tm_mday; /* day of month (1 - 31) */
int tm_mon; /* month of year (0 - 11) */
int tm_year; /* year - 1900 */
int tm_wday; /* day of week (Sunday = 0) */
int tm_yday; /* day of year (0 - 365) */
int tm_isdst; /* is summer time in effect? */
long tm_gmtoff; /* offset from UTC in seconds */
char *tm_zone; /* abbreviation of timezone name */
} 81/90
Horloges POSIX
#include <time.h>
int clock_gettime(clockid_t, struct timespec *tp);
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
clockid_t :
CLOCK_REALTIME temps universel ;
CLOCK_MONOTONIC horloge CPU ;
CLOCK_PROCESS_CPUTIME_ID horloge du processus ;
82/90
Timers
Utilisations :
Permettent le cadencement précis d’un traitement périodique
Mécanisme de garde (watchdog) pour traitements blocants
83/90
Timers POSIX
#include <signal.h>
#include <time.h>
struct itimerspec {
struct timespec it_interval; /* Timer interval */
struct timespec it_value; /* Initial expiration */
};
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
85/90
Quelques questions ?
86/90
Plan
2 Processus
3 Synchronisation
4 Gestion de la mémoire
5 Gestion du temps
6 Conclusion
7 Exercices
87/90
(A) Allocation de ressources
88/90
(B) Producteurs/consomateurs
89/90
(C) Ping-pong
90/90