Étape 3: Objets IPC
Objets IPC viennent dans deux grandes familles : SysV et POSIX. Ce projet utilisera SysV pour aucune raison véritable. (Les deux familles sont supportés sur le Galileo, alors après avoir fini ce Instructable j’ai l’intention de revenir en arrière et passer en choses les versions POSIX car ils offrent quelques avantages). SysV a trois objets IPC : partage de mémoire, les sémaphores et les files d’attente de message. Ce projet ne fera que rendre l’utilisation des deux premiers.Un objet de mémoire partagée est juste une partie de la mémoire qui sont accessibles par plusieurs processus. C’est le moyen le plus rapide pour transférer de grandes quantités de données entre les processus. Cependant, il n’a aucune protection intégrée. Sans ajout de code de synchronisation supplémentaire les processus écrira probablement au fil des uns et des autres données.
Un sémaphore peut être considéré comme un compteur pour combien de temps d’une ressource partagée est disponible. Un processus peut atomiquement (c'est-à-dire sans interruption) incrémenter ou décrémenter le décompte d’un sémaphore. Si un processus tente de décrémenter un sémaphore lorsque son compteur est à zéro, le processus ira généralement inactif jusqu'à ce qu’un processus différent incrémente le compteur du sémaphore. L’importance d’aller inactif, c’est que le processus n’est plus, consomme des ressources de système d’exploitation. Une implémentation naïve qui interroge plutôt sur le nombre à être différent de zéro sera fois utiliser les ressources de l’OS et rendre plus difficile pour les autres processus à respecter leurs délais.
Pour une description plus détaillée de la mémoire partagée ou sémaphores, il y a plusieurs explications et exemples entre Wikipedia et le débordement de pile.