Le maître-esclave est un modèle de communication ou de contrôle asymétrique dans lequel un dispositif ou un processus (le maître) contrôle un ou plusieurs autres dispositifs ou processus (les esclaves) et sert de centre de communication. Dans certains systèmes, un maître est sélectionné parmi un groupe de dispositifs éligibles, les autres dispositifs jouant le rôle d'esclaves[1],[2],[3].

Exemple de système Maître-esclave : réseau de synchronisation des horloges au début du XXe siècle ou une horloge mère produit des impulsions électriques qui actionnent les autres horloges.

La terminologie maître-esclave a été utilisée pour la première fois en 1904[4]. Depuis le début du 21e siècle, ce terme est devenu un sujet de controverse en raison de son association avec l'esclavage et certaines organisations ont choisi de le remplacer par d'autres termes[5],[6],[7].

Exemples

modifier

Parallel ATA

modifier

La technique maître-esclave est notamment utilisée dans le fonctionnement des disques durs Parallel ATA[8] où sur chaque contrôleur se trouvent un disque dur maître et (zéro ou) un disque dur esclave[9].

Les disques durs Parallel ATA sont de plus en plus remplacés par des disques durs Serial ATA qui n'utilisent pas la technique maître-esclave.

Base de données

modifier

La réplication maître-esclave est utilisée dans les systèmes de base de données pour assurer la tolérance aux pannes et augmenter les performances en lecture.

Le maître reçoit des requêtes en lecture ou en écriture des clients. Lorsque le maître reçoit une requête en écriture, il valide et exécute localement cette requête avant de la faire suivre aux esclaves pour qu'ils exécutent localement le même changement et ainsi obtenir le même état que le maître.

Lorsque le maître devient indisponible, une technique de tolérance aux pannes possible consiste à exécuter un algorithme pour élire le nouveau maître parmi les nœuds esclaves.

Une horloge maîtresse fournit des signaux temporels utilisés pour synchroniser une ou plusieurs horloges esclaves dans le cadre d'un réseau d'horloges.

Controverses de terminologie

modifier

En 2003, après avoir reçu une plainte pour discrimination de la part d'un employé du comté, le comté de Los Angeles, en Californie, a demandé aux fabricants, fournisseurs et entrepreneurs de cesser d'utiliser les termes maître et esclave[10],[11]. À la suite de réactions négatives à cette demande, le comté de Los Angeles a publié une déclaration indiquant que la demande n'était « rien de plus qu'une demande »[10].

La société d'analyse des médias Global Language Monitor a placé le terme sur sa liste annuelle des termes politiquement chargés en 2004[12]. En 2018, après un débat houleux, les développeurs du langage de programmation Python ont remplacé le terme[13]. Le mouvement Black Lives Matter aux États-Unis a relancé la discussion et les changements de terminologie en 2020[14],[6]. Le guide de style de la documentation des développeurs de Google recommande d'éviter le terme maître dans la documentation des logiciels, en particulier lorsqu'il est associé au terme esclave[15].

Certains ont affirmé que ce changement était superficiel et que les entreprises devraient procéder à de véritables changements pour soutenir la communauté noire[14],[6].

Autres terminologies

modifier

Différents termes de remplacement pour maître et esclave ont été proposés et mis en œuvre. En 2020, GitHub a remplacé la branche git master par main[16]. D'autres noms de remplacement pour master incluent default, primary, controller, root, initiator, leader et director ; et pour slave : performer, worker, peripheral, responder, device, replica, satellite et secondary[16],[6],[17],[18],[19]. Python a adopté les termes main, parent et server, ainsi que worker, child et helper, en fonction du contexte[13],[20]. Le noyau Linux a adopté une politique similaire pour utiliser des termes plus spécifiques dans le nouveau code et la nouvelle documentation[18].

Notes et références

modifier
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Master/slave (technology) » (voir la liste des auteurs).
  1. « Master–slave terminology alternatives you can use right now », sur TheServerSide.com
  2. Description of the Microsoft Computer Browser Service from Microsoft KnowledgeBase
  3. « Microsoft Support », sur support.microsoft.com
  4. Ron Eglash, « Broken Metaphor: The Master–Slave Analogy in Technical Literature », Technology and Culture, vol. 48, no 2,‎ , p. 360–369 (DOI 10.1353/tech.2007.0066, S2CID 1358719, lire en ligne)
  5. Leonard Ellis, « It's Time for IEEE to Retire 'Master / Slave' », sur EE Times, (consulté le )
  6. a b c et d (en-US) Elizabeth Landau, « Tech Confronts Its Use of the Labels 'Master' and 'Slave' », Wired,‎ (ISSN 1059-1028, lire en ligne, consulté le ).
  7. « 'Master/Slave' Terminology Was Removed from Python Programming Language »
  8. (fr) Article sur commentcamarche.net.
  9. Image montrant un exemple d'emplacements maître-esclave.
  10. a et b « 'Master' and 'slave' computer labels unacceptable, officials say », CNN,
  11. Master/Slave, Snopes, (lire en ligne)
  12. 'Master/slave' named most politically incorrect term, Seattle PI, (lire en ligne) :

    « "We found 'master/slave' to be the most egregious example of political correctness in 2004," said Paul JJ Payack, president of The Global Language Monitor. »

  13. a et b (en) « 'Master/Slave' Terminology Was Removed from Python Programming Language », sur Vice.com, (consulté le )
  14. a et b (en) Stephen Shankland, « Tech terms face scrutiny amid anti-racism efforts », sur CNET, (consulté le )
  15. « Google Developer Style Guide »
  16. a et b (en) Catalin Cimpanu, « GitHub to replace "master" with alternative term to avoid slavery references », sur ZDNet, (consulté le )
  17. « I2C-bus specification Rev 7 » [archive du ], NXP Semiconductors, (consulté le )Modèle:Secondary source needed
  18. a et b (en) Catalin Cimpanu, « Linux team approves new terminology, bans terms like 'blacklist' and 'slave' », ZDNet,‎ (lire en ligne).
  19. « A Resolution to Redefine SPI Signal Names », Open Source Hardware Association,
  20. « Issue 34605: Avoid master/slave terminology - Python tracker », sur bugs.python.org (consulté le )

Voir aussi

modifier

Articles connexes

modifier