Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Master–slave (technology)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Relationship between devices in which one controls the other}} {{About||the master branch in Git version control|Git#Conventions|mastering in audio processing|Mastering (audio)}}{{Wiktionary|master|slave}} In [[engineering]], '''master–slave''' is a relationship between two systems in which one controls the other. In some cases one master controls just one slave system, but in others there are multiple slave systems controlled by the same master. Sometimes the master is a different kind of system than the slave, but sometimes there are multiple similar systems and one of them is designated the master in order to centralize external (i.e. user) control of the collection.<ref>{{Cite web|url=https://www.theserverside.com/opinion/Master-slave-terminology-alternatives-you-can-use-right-now|title=Master–slave terminology alternatives you can use right now|website=TheServerSide.com}}</ref> Due to its connection to [[slavery]], the terminology is a subject of controversy and has been replaced with alternative terms in some cases.<ref>{{Cite web|last=Ellis|first=Leonard|date=2020-06-18|title=It's Time for IEEE to Retire 'Master / Slave'|url=https://www.eetimes.com/its-time-for-ieee-to-retire-master-slave/|access-date=2020-09-26|website=[[EE Times]]}}</ref><ref name="Wired">{{Cite magazine |title=Tech Confronts Its Use of the Labels 'Master' and 'Slave' |url=https://www.wired.com/story/tech-confronts-use-labels-master-slave/ |magazine=Wired |language=en-us |issn=1059-1028 |access-date=2020-07-14}}</ref><ref name="vice.com">{{Cite web |date=September 13, 2018 |title='Master/Slave' Terminology Was Removed from Python Programming Language |url=https://www.vice.com/en/article/masterslave-terminology-was-removed-from-python-programming-language/ |access-date=2020-07-14 |website=[[Vice.com]] |language=en}}</ref> == Examples == {{More citations needed|section|date=November 2022}} In photography, [[Flash synchronization#Wireless sync|secondary]], or slave, flash units are connected to a master unit to provide synchronized lighting. Parallel audio duplication often entails multiple [[Sound recording and reproduction|recording]] with linkdevices (i.e. for [[cassette tape]] or [[compact disc]]) linked together so that operating the controls of a master device triggers the same commands on slave devices. Railway [[locomotive]]s operating in the same train (for example, to pull a load too heavy for a single locomotive) may be configured for master–slave operation with all but one of the locomotives controlled from the first. See [[Multiple-unit train control]]. In a [[hydraulic]] system, a [[master cylinder]] is a control device that converts [[force]] into hydraulic pressure that drives movement in a slave cylinder at the other end of the hydraulic line. A common application is a vehicle [[brake]] system. A [[master clock]] provides [[time signal]]s used to synchronize one or more [[slave clock]]s as part of a [[clock network]];<ref name="USNO">{{Cite web |title=USNO Master Clock |url=http://www.usno.navy.mil/USNO/time/master-clock |archive-url=https://web.archive.org/web/20100310143915/http://www.usno.navy.mil/USNO/time/master-clock |archive-date=2010-03-10 |access-date=2009-10-07}}</ref> a slave clock receives and displays the time from a master; though it may be able to keep time itself if the master is not working. === Computing === [[Bus (computing)|Computer bus]] protocols often use a master-slave relationship. For instance, a [[USB]] host manages access to the USB bus shared by any number of USB devices. A [[serial peripheral interface]] (SPI) bus typically has a single master controlling multiple slaves.<ref name=":0">{{Cite web |last=Dhaker |first=Piyu |date=2018 |title=Introduction to SPI Interface |url=https://www.analog.com/en/analog-dialogue/articles/introduction-to-spi-interface.html |url-status=live |archive-url=https://web.archive.org/web/20230525152752/https://www.analog.com/en/analog-dialogue/articles/introduction-to-spi-interface.html |archive-date=2023-05-25 |access-date=2023-07-21 |website=[[Analog Dialogue]]}}</ref><ref> [[Open Source Hardware Association]]. [https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/ "A Resolution to Redefine SPI Signal Names"]. </ref><ref> Nathan Seidle. [https://www.sparkfun.com/spi_signal_names "A redefinition of SPI signal names"]. </ref><ref> Utah State University ECE 3700 [https://left.engr.usu.edu/courses/3700/assignments/2_rtl/2_communication/1_SPI_READ/assigned_tasks.html "SPI Chip-to-Chip Communication"] </ref> [[I2C]] and [[I3C (bus)|I3C]] may even have multiple masters on a bus. [[Modbus]] also uses a master device to initiate connection requests to slave devices. An edge-triggered [[Flip-flop (electronics)|flip-flop]] can be created by arranging two [[Flip-flop (electronics)#Gated latches|gated latches]] in a master–slave configuration. It is so named because the master latch controls the slave latch's value and forces the slave latch to hold its value, as the slave latch always copies its new value from the master latch. In [[database replication]], the master database is the authoritative source. The slave or replica database is controlled by the master database which repeats its update commands (for example by way of [[event log]]) to the slave. The slave therefore retains an exact copy of transaction processed by the source database (up to the most recently transmitted log)<ref>{{cite web |title=MySQL Master-Slave Replication: 6 Easy Steps {{!}} Airbyte |url=https://airbyte.com/data-engineering-resources/master-slave-replication |website=airbyte.com |language=en |quote=The binary logs containing the changes are shipped from the master server to the slave servers so that they can exactly mimic what the main server is doing}}</ref> This scheme is not as strict as electronic devices sharing a clock, however the slave database only does what the master tells it, unless the slave is promoted due to failure of the master. Some databases implement so called "[[multi-master replication]]", where a mix of writeable master nodes and readable nodes are used. These databases are used in scenarios where performance is an acceptable tradeoff for [[ACID]] properties, for example non mission critical data, like suggesting similar purchases. == Non-examples == The term ''master'' is used in some technology contexts that do not refer to a relationship of control. ''Master'' may be used to mean a copy that has more significance than other copies in which case the term is an absolute concept; not a relationship. Sometimes the term ''master-slave'' is used in contexts that do not imply a controlling relationship. In [[source code management]] master may refer to the trunk branch. In [[disk image|disk imaging]] the [[Mastering (audio)| gold master]] is the version which will be released to manufacturing for duplication. A [[Parallel ATA]] (aka IDE) [[hard drive]] interface supports two hard drives on a cable, which are designated ''master'' and ''slave''. The distinction is required by the interface even though neither drive has control or priority over the other. == History == The ''master–slave'' terminology was first used in 1904.<ref>{{cite journal |url=https://www.researchgate.net/publication/236752849 |doi=10.1353/tech.2007.0066|title=Broken Metaphor: The Master–Slave Analogy in Technical Literature |year=2007 |last1=Eglash |first1=Ron |journal=Technology and Culture |volume=48 |issue=2 |pages=360–369 |s2cid=1358719 }}</ref> The terminology was used in 1988 for RFC 1059 and in 1997 for RFC 2136, related to the [[domain name system]]. In 2020, [[Paul Vixie]] commented on his choice of words: <blockquote>I introduced the master/slave terminology in RFC 2136, because I needed names for the roles in an [[DNS zone transfer|AXFR/IXFR transaction]], and the zone transfer hierarchy could be more than one layer deep, such that a server might initiate some AXFR/IXFR's to the "primary master" but then respond to AXFR/IXFR's from other servers. In retrospect I should have chosen the terms, "transfer initiator" and "transfer responder". However, the [[hydraulic brake]] and clutch systems in my car had "[[master cylinder]]s" and "slave cylinders", and so I did not think I was either inventing a new use for the words "master" and "slave", or that my use of them for this purpose would be controversial.<ref>[https://mailarchive.ietf.org/arch/msg/dnsop/RFbV_nBJdJSvBhByxH30K7zvSxw/ Re: DNSOP Question regarding RFC 8499]</ref></blockquote> Said [[hydraulic brake]]s for the automotive industry were patented in 1917 by [[Malcolm Loughead]].<ref>Loughhead, Malcolm, [http://pdfpiw.uspto.gov/.piw?docid=01249143&PageNum=1&&IDKey=57615156EEFC&HomeUrl=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1%2526Sect2=HITOFF%2526d=PALL%2526p=1%2526u=%25252Fnetahtml%25252FPTO%25252Fsrchnum.htm%2526r=1%2526f=G%2526l=50%2526s1=1249143.PN.%2526OS=PN/1249143%2526RS=PN/1249143 "Braking apparatus, "] {{Webarchive|url=https://web.archive.org/web/20200723192923/https://pdfpiw.uspto.gov/.piw?docid=01249143&PageNum=1&&IDKey=57615156EEFC&HomeUrl=http%3A%2F%2Fpatft.uspto.gov%2Fnetacgi%2Fnph-Parser%3FSect1%3DPTO1%2526Sect2%3DHITOFF%2526d%3DPALL%2526p%3D1%2526u%3D%25252Fnetahtml%25252FPTO%25252Fsrchnum.htm%2526r%3D1%2526f%3DG%2526l%3D50%2526s1%3D1249143.PN.%2526OS%3DPN%2F1249143%2526RS%3DPN%2F1249143 |date=2020-07-23 }} U.S. Patent no. 1,249,143 (filed: 1917 January 22; issued: 1917 December 4).</ref> The term ''slave cylinder'' was used in other patent applications, including one by [[Robert Esnault-Pelterie]], published in 1919.<ref>{{Cite web|url=https://patents.google.com/patent/CH94537A|title=Hydraulic power transmission installation}}</ref> == Controversy == {{globalize|section|date=December 2023}} Media analytics company [[Global Language Monitor]] placed ''master/slave'' first in their annual list of politically charged language for 2004.<ref>{{Citation |date= December 2, 2004 |title = 'Master/slave' named most politically incorrect term |publisher= Seattle PI |url= http://www.seattlepi.com/national/article/Master-slave-named-most-politically-incorrect-1161133.php |quote="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.}}</ref> The [[Black Lives Matter]] movement in the United States sparked renewed discussion, and terminology changes occurred in 2020.<ref name="zdnet-2020" /> Some argued, however, that terminology changes were superficial [[performative activism]].<ref>{{Cite web |last=Shankland |first=Stephen|date=2020-06-10 |title=Tech terms face scrutiny amid anti-racism efforts |url=https://www.cnet.com/news/master-and-slave-tech-terms-face-scrutiny-amid-anti-racism-efforts/ |access-date=2020-07-06 |website=CNET |language=en}}</ref><ref name="Wired" /> Various alternate and generally context sensitive terms have been proposed including:<ref name="zdnet-2020"/><ref name="Wired" /><ref name="i2c-spec">{{cite web |url=https://docs.kernel.org/i2c/summary.html |title=Introduction to I2C and SMBus |series=The Linux Kernel documentation |work=Linux Kernel Organization |access-date=May 5, 2025 |quote=In earlier I2C specifications, controller was named 'master' and target was named 'slave'. These terms have been obsoleted with v7 of the specification...use the inclusive terms: controller and target.}}</ref><ref name="zdnet-2" /><ref>{{cite web |title=A Resolution to Redefine SPI Signal Names |date=7 January 2022 |url=https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/ |publisher=[[Open Source Hardware Association]]}}</ref><ref>{{Cite web |last=Stoicescu |first=Alin |title=Getting Started with Serial Peripheral Interface (SPI) |url=https://onlinedocs.microchip.com/pr/GUID-EF58F3A9-B49B-4C31-A7EC-B71EBB831870-en-US-5/index.html |url-status=live |archive-url=https://web.archive.org/web/20231221205244/https://onlinedocs.microchip.com/pr/GUID-EF58F3A9-B49B-4C31-A7EC-B71EBB831870-en-US-5/index.html |archive-date=2023-12-21 |access-date=2023-12-21 |website=[[Microchip Technology]]}}</ref><ref>{{Cite web |title=Leader and Followers |url=https://martinfowler.com/articles/patterns-of-distributed-systems/leader-follower.html |access-date=2024-04-11 |website=martinfowler.com}}</ref><ref>{{Cite web |url=https://www.ibm.com/docs/en/aix/7.1?topic=models-masterslave-model |title=Documentation: AIX version 7.1: Master/Slave Model |author=<!--Not stated--> |date=2020 |website=[[ibm.com]] |access-date=30 October 2024}}</ref><ref>{{Cite web |url=https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/master-slave |title=Microsoft Writing Style Guide: master/slave |author=<!--Not stated--> |date=24 June 2022 |website=[[microsoft.com]] |access-date=30 October 2024}}</ref><ref>{{Cite web |title=Serial Peripheral Interface (SPI) Devices |url=https://www.nxp.com/products/interfaces/ic-spi-i3c-interface-devices/spi-interface-devices:SPI |access-date=2025-01-29 |website=www.nxp.com}}</ref> * host-client * primary-secondary * main-replica or subordinate * initiator-target * requester-responder * controller-target or device * host-worker or proxy * leader-follower * director-performer * boss-worker * primary-replica * principal-agent * controller-worker * primary-subordinate * dom-sub ===Notable events=== In 2003, after receiving a discrimination complaint from a county employee, the [[County of Los Angeles]] in [[California]] asked that manufacturers, suppliers and contractors stop using ''master'' and ''slave'' terminology on products.<ref name="CNN">{{cite web |date= November 26, 2003 |title= 'Master' and 'slave' computer labels unacceptable, officials say |publisher= [[CNN]] |url= http://edition.cnn.com/2003/TECH/ptech/11/26/master.term.reut/ |access-date= January 2, 2014 |archive-date= November 12, 2020 |archive-url= https://web.archive.org/web/20201112020617/http://edition.cnn.com/2003/TECH/ptech/11/26/master.term.reut/ |url-status= dead }}</ref><ref>{{Citation |title= Master/Slave |date= 9 December 2007 |publisher= [[Snopes]] |url= http://www.snopes.com/inboxer/outrage/master.asp}}</ref> Following complaints, the County of Los Angeles issued a statement saying that the decision was "nothing more than a request".<ref name=CNN /> In 2018, after a heated debate, developers of [[Python programming language|Python]] replaced the term.<ref name="vice.com" /> Python switched to ''main'', ''parent'', and ''server''; and ''worker'', ''child'', and ''helper'', depending on context.<ref name="vice.com" /><ref>{{Cite web|title=Issue 34605: Avoid master/slave terminology - Python tracker|url=https://bugs.python.org/issue34605|access-date=2020-07-13|website=bugs.python.org}}</ref> The [[Linux kernel]] adopted a similar policy to use more specific terms in new code and documentation.<ref name="zdnet-2">{{cite news |last1=Cimpanu |first1=Catalin |title=Linux team approves new terminology, bans terms like 'blacklist' and 'slave' |url=https://www.zdnet.com/article/linux-team-approves-new-terminology-bans-terms-like-blacklist-and-slave/ |work=ZDNet |language=en}}</ref><ref>{{cite web |author=Microsoft |url=https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/master-slave |title=master/slave |work=Microsoft Style Guide |date=June 24, 2022}}</ref> In July 2018, [[Google]]'s developer [[style guide]] was updated to include avoiding the term ''master'' in software documentation, especially in combination with ''slave.'' Instead, the guide recommends terms --when in combination -- such as ''primary/secondary'' and ''original/replica''; Many individual variants of master and slave are given.<ref>{{cite web |title=Google Developer Style Guide |url=https://developers.google.com/style/word-list}}</ref> In 2020, GitHub renamed the default ''master'' [[git]] branch to ''main''.<ref name="zdnet-2020">{{cite web |last1=Cimpanu |first1=Catalin |title=GitHub to replace "master" with alternative term to avoid slavery references |url=https://www.zdnet.com/article/github-to-replace-master-with-alternative-term-to-avoid-slavery-references/ |website=ZDNet |access-date=3 November 2022 |language=en |date=14 June 2020}}</ref> == See also == * {{Annotated link|Bus mastering}} * {{Annotated link|Flexible single master operation}} * {{Annotated link|Loop bin duplicator}} * {{Annotated link|Multi-master replication}} * {{Annotated link|SCSI initiator and target}} == References == {{Reflist}} [[Category:AT Attachment]] [[Category:Network protocols]] [[Category:Distributed computing architecture]] [[Category:African-American-related controversies]] [[Category:Connotation]] [[Category:Linguistic controversies]] [[Category:Politics and race in the United States]] [[Category:Race-related controversies]] [[Category:Metaphors referring to people]] [[Category:1900s neologisms]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:Annotated link
(
edit
)
Template:Citation
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite magazine
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Globalize
(
edit
)
Template:More citations needed
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)
Template:Wiktionary
(
edit
)