Commit a444b18d authored by Grégory Mounié's avatar Grégory Mounié

Quelques explications succintes sur les codes

parent 8ae525b7
#+options: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline
#+options: author:t broken-links:nil c:nil creator:nil
#+options: d:(not "LOGBOOK") date:t e:t email:nil f:t inline:t num:t
#+options: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t
#+options: timestamp:t title:t toc:t todo:t |:t
#+title: Code de fées: implantation des algorithmes de Dekker et Peterson
#+date: <2019-10-13 dim.>
#+author: Grégory Mounié
#+email: Gregory.Mounie@imag.fr
#+language: fr
#+select_tags: export
#+exclude_tags: noexport
#+creator: Emacs 26.3 (Org mode 9.2.3)
* Code de fées: implantation des algorithmes de Dekker et Peterson
Ces codes implantent les algorithmes de Dekker et Peterson, vus en
TD. Comme pour un conte de fées, leur intérêt est plutôt dans les
concepts sous-jacents et pas dans le code lui-même qui n'a pas
forcément d'utilité dans la /vraie vie/.
** Attention aux compilateurs
Les codes sont complexifiés (utilisation de pointeurs, de strides,
découpage en plusieurs fichiers/modules), pour éviter que les
compilateurs ne puissent optimiser le code et réaliser toutes les
incrémentations en une seule fois, avec une seule addition.
** Attention aux constantes =NBINC=
Si le premier thread termine avant le démarrage du second, il n'y
aura pas d'apparition d'erreurs dans l'exécution des codes de base.
Il faut alors augmenter les constantes =NBINC=.
** Différence entre les algorithmes vus en TD et ces codes
Les codes directement retranscrits de Dekker et Peterson ne
fonctionnent pas sur les architectures parallèles post-1990, depuis
l'apparition des caches lorsque la vitesse de la mémoire a
été dépassée par celle des processeurs.
Pour faire fonctionner ces algorithmes, il faut demander au
compilateur d'utiliser les instructions atomiques du processeur.
** Le code en C11
Ce code illustre le modèle mémoire de C11 (acquire-release).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment