Académique Documents
Professionnel Documents
Culture Documents
UAE – ENSAH
18 octobre 2021
2- Systèmes d’exploitation et programmation concourante
2.4- Threads
Fin de Séance
Vos Questions ?
2- Systèmes d’exploitation et programmation concourante
2.5- Problème du producteur-consommateur
État de concurrence
Problème du producteur-consommateur
Problème du producteur-consommateur
Tiré de Andrew S. Tanenbaum et Herbert Bos. Modern Operating Systems. Prentice Hall Press, 2015.
2- Systèmes d’exploitation et programmation concourante
2.5- Problème du producteur-consommateur
Problème du producteur-consommateur
Exclusion mutuelle
2- Systèmes d’exploitation et programmation concourante
2.6- Exclusion mutuelle et conditions
Mutex POSIX
Attributs de mutex
Mutexes peuvent être créés avec différents attributs
Reader-Writer Locks
Conditions
Conditions
Problème du producteur-consommateur
Problème du producteur-consommateur
2- Systèmes d’exploitation et programmation concourante
2.7- Barrières, fonctions réentrantes et lecture de fichiers
Barrières
Barrières
2- Systèmes d’exploitation et programmation concourante
2.7- Barrières, fonctions réentrantes et lecture de fichiers
Fonctions réentrantes
Fonctions réentrantes
� Plusieurs exécutions simultanées de la fonctions possibles
� Exemple problématique : malloc
� Allocation dynamique de mémoire demande de modifier structure de donnée interne
� Si deux ou plusieurs threads modifient la structure de données simultanément, sérieux
problèmes en perspective
Deux stratégies principales
� Utiliser mutex et autres primitives pour protéger sections critiques
� Engendre surcoût significatifs, autant pour processus à un thread que multithreadé
� Ne pas utiliser de variables globales, utiliser seulement arguments de la fonction
� Exige de modifier l’API
� Expose structure de données internes à l’utilisateur
mplémentation modernes offrent fonction réentrantes
� Par défaut, fonctions dans POSIX sont réentrantes
� Pour les exceptions, existe souvent version _r qui est réentrante (ex. asctime
vs asctime_r )
2- Systèmes d’exploitation et programmation concourante
2.7- Barrières, fonctions réentrantes et lecture de fichiers
� Quatre dernières fonctions doivent être encadrées par flockfile (ou ftrylockfile) et
funlockfile
2- Systèmes d’exploitation et programmation concourante
2.8- Pipes Unix
Pipes
Information transmise par les fonctions read et write, comme pour un fichier régulier
Tiré de W. Richard Stevens et Stephen A. Rago. Advanced programming in the UNIX environment. Addison-Wesley, 2013.
2- Systèmes d’exploitation et programmation concourante
2.8- Pipes Unix
Opération commune : lancer un processus pour lire sa sortie ou fournir son entrée
� popen fait fork et exec pour exécuter programme cmdstring et retourne pointeur de
fichier aux E/S standards
� Si argument type est "r", pointeur de fichier retourné est sortie standard de cmdstring
� Si valeur à argument type est "w", pointeur de fichier retourné est entrée standard de
cmdstring
� pclose ferme E/S standard, attend la commande pour terminer et retourne le statut
de terminaison
� Commande cmdstring exécutée dans un shell Bourne, comme
sh -c cmdstring
2- Systèmes d’exploitation et programmation concourante
2.9- Sockets Unix
Sockets Unix
� Interface général, mais portable seulement pour sockets de domaine Unix (domain=
AF_UNIX) int fd[2] ;
socketpair(AF_UNIX, SOCK_STREAM, 0, fd) ;
� Type : flot (SOCK_STREAM) ou datagram (SOCK_DGRAM)
� Datagram préserve frontières entre messages, alors que ot ne le fait pas
� Taille limite imposée sur messages avec datagram
2- Systèmes d’exploitation et programmation concourante
2.9- Sockets Unix
Sockets Unix
� Interface général, mais portable seulement pour sockets de domaine Unix (domain=
AF_UNIX) int fd[2] ;
socketpair(AF_UNIX, SOCK_STREAM, 0, fd) ;
� Type : flot (SOCK_STREAM) ou datagram (SOCK_DGRAM)
� Datagram préserve frontières entre messages, alors que ot ne le fait pas
� Taille limite imposée sur messages avec datagram
2- Systèmes d’exploitation et programmation concourante
2.9- Sockets Unix
Sockets Unix
Sockets nommés
Tiré de W. Richard Stevens et Stephen A. Rago. Advanced programming in the UNIX environment. Addison-Wesley, 2013.
2- Systèmes d’exploitation et programmation concourante
2.9- Sockets Unix
Sockets nommés
2.10- Signaux
2- Systèmes d’exploitation et programmation concourante
2.10- Signaux
Signaux
Transmettre signal
Intercepter signal
Ignorer signal
act.sa_handler = SIG_IGN ;
Utiliser signal par défaut
act.sa_handler = SIG_DFL ;
Fonctions réentrantes
� Fonction de gestion peut être appelée à tout moment
� Seules fonctions réentrantes doivent être appelées
Signaux non gérables
� outines pour signaux SIGKILL et SIGSTOP non modifiables, car gérés par SE
2- Systèmes d’exploitation et programmation concourante
2.10- Signaux
Fin de Séance
Vos Questions ?