dbo:abstract
|
- Vzájemné vyloučení (anglicky mutual exclusion, nebo zkráceně mutex) je algoritmus používaný v programování jako synchronizační prostředek. Zabraňuje tomu, aby byly současně vykonávány dva (nebo více) kritické kódy nad stejným sdíleným prostředkem, jako například globální proměnné. Kritický kód je část kódu, ve které proces nebo vlákno přistupuje k veřejným prostředkům. Kritický kód není mechanismus ani algoritmus pro vzájemné vyloučení.Pokud jeden proces vstoupil do kritického kódu a nedokončil poslední instrukci (nevystoupil z kritického kódu), nemůže nad tímto prostředkem žádný jiný proces vstoupit do kritického kódu. (cs)
- Exclusió mútua (comunament abreujada com mutex per mutual exclusion ), és una expressió utilitzada en programació concurrent que fa referència al fet d'evitar l'accés simultani de dos fragments de codi a un recurs compartit (per exemple una cua, un comptador, etc.). Així, aquests fragments de codi (seccions crítiques) s'han d'excloure mútuament per no provocar inconsistències en les dades que estan actualitzant. En general, és necessari disposar de mecanismes adequats per garantir accés exclusiu en sistemes multitasca on diversos fils d'execució poden intentar accedir a un recurs al mateix temps, o també en recursos que poden accedits en context d'interrupció de la CPU. La major part d'aquests recursos són els senyals, comptadors, cues i altres dades que s'empren en la comunicació entre el codi que s'executa quan es dona servei a una interrupció i el codi que s'executa la resta del temps. Es tracta d'un problema de vital importància perquè, si no es prenen les precaucions degudes, una interrupció pot passar entre dues instruccions qualssevol del codi normal i això pot provocar greus errors. La tècnica que s'utilitza normalment per aconseguir l'exclusió mútua és inhabilitar les interrupcions durant el conjunt d'instruccions més petit que impedirà la corrupció de l'estructura compartida (la secció crítica). Això impedeix que el codi de la interrupció s'executi al mig de la secció crítica. En un sistema multiprocessador de memòria compartida, es fa servir l'operació indivisible sobre una bandera, per esperar fins que l'altre processador la rebutgi. L'operació test-and-set realitza les dues operacions sense alliberar el bus de memòria a un altre processador. Així, quan el codi deixa la secció crítica, s'aclareix la bandera. Això es coneix com a o espera activa. Alguns sistemes tenen instruccions multioperació indivisibles similars a les anteriorment descrites per manipular les llistes enllaçades que s'utilitzen per a les cues d'esdeveniments i altres estructures de dades que els sistemes operatius fan servir comunament. La majoria dels mètodes d'exclusió mútua clàssics intenten reduir la latència i espera activa mitjançant les cues i canvis de context. Alguns investigadors afirmen que les proves indiquen que aquests algorismes especials perden més temps del que estalvien. Malgrat tot el que s'ha dit, moltes tècniques d'exclusió mútua tenen efectes col·laterals. Per exemple, els semàfors permeten interbloquejos (deadlocks) en què un procés obté un semàfor, un altre procés obté el semàfor i tots dos es queden a l'espera que l'altre procés alliberi el semàfor. Altres efectes comuns inclouen la inanició, en el qual un procés essencial no s'executa durant el temps desitjat, i la inversió de prioritats , en el qual una tasca de prioritat elevada espera per altra tasca de menor prioritat, així com la latència alta en què la resposta a les interrupcions no és immediata. La major part de la investigació actual en aquest camp, pretén eliminar els efectes anteriorment descrits. Si bé no hi ha un esquema perfecte conegut, hi ha un interessant esquema no clàssic d'enviament de missatges entre fragments de codi que, tot i que permet inversions de prioritat i produeix una major latència, impedeix els interbloquejos. (ca)
- استبعاد التشارك أو إقصاء التشارك (بالإنجليزية: Mutual exclusion : mutex) أداة مزامنة تستعملها بعض الخوارزميات المستعملة في البرمجة لتفادي الاستخدام المتزامن للموارد المشتركة، مثل الوصول لمتغير عام، قد تقوم به بعض المقاطع الحرجة. المقطع الحرج هو جزء من البرمجية حيث تسعى عملية أو خيط للوصول فيه إلى مورد مشترك. المقطع الحرج في حد ذاته ليس آلية أو خوارزمية للاستبعاد المتبادل. خوارزميات استبعاد التشارك تسمح بضبط الوصول للبيانات. مثلا، حين يتم تنفيذ روتين معين مرة واحدة في نفس الوقت فلا يقبل التوازي. (ar)
- Der Begriff wechselseitiger Ausschluss bzw. Mutex (Abk. für englisch mutual exclusion) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex-Verfahren verhindern, dass nebenläufige Prozesse bzw. Threads gleichzeitig oder zeitlich verschränkt gemeinsam genutzte Datenstrukturen unkoordiniert verändern, wodurch die Datenstrukturen in einen inkonsistenten Zustand geraten können, auch wenn die Aktionen jedes einzelnen Prozesses oder Threads für sich betrachtet konsistenzerhaltend sind. Mutex-Verfahren koordinieren den zeitlichen Ablauf nebenläufiger Prozesse/Threads derart, dass andere Prozesse/Threads von der Ausführung kritischer Abschnitte ausgeschlossen sind, wenn sich bereits ein Prozess/Thread im kritischen Abschnitt befindet (die Datenstruktur verändert). Mutex-Verfahren sind der Klasse der Verfahren zur Prozess- oder Thread-Synchronisation zugeordnet und sind von zentraler Bedeutung für jegliche Systeme nebenläufig ablaufender Prozesse/Threads mit modifizierendem Zugriff auf gemeinsam genutzte Daten oder Datenstrukturen, so z. B. auch für Client/Server-Systeme mit unabhängigen Client-Prozessen oder -Threads, die gleichzeitig bzw. zeitlich verschränkt auf einen Datenbank-Server zugreifen. (de)
- Στην επιστήμη των υπολογιστών με τον όρο αμοιβαίο αποκλεισμό (Αγγλικά: Mutual exclusion) αναφερόμαστε στην διασφάλιση παράλληλων διεργασιών να αποκτήσουν αποκλειστική πρόσβαση όταν φτάσουν σε μια κρίσιμη περιοχή (όπου υπάρχει διαμοιρασμός πόρων όπως για παράδειγμα μια κοινή θέση μνήμης). Η ιδέα είναι να υπάρξει ένας μηχανισμός ώστε όταν δύο παράλληλες διεργασίες θέλουν να χρησιμοποιήσουν ένα κοινό πόρο να μην υπάρχει σύγκρουση επεξεργασίας αλλά να διασφαλίζεται ένας αμοιβαίος αποκλεισμός. Το πρόβλημα αυτό μελετήθηκε από τον Ντάικστρα σε ακαδημαϊκή δημοσίευση το 1965 με τίτλο Λύση στο πρόβλημα ελέγχου παράλληλων και ταυτόχρονων προγραμμάτων. Θεωρείται ο πρώτος που ασχολήθηκε με παράλληλους αλγόριθμους. Με τον αμοιβαίο αποκλεισμό μπορούν να επιλυθούν πολλά προβλήματα που προκύπτουν από την ταυτόχρονη προσπέλαση κοινών πόρων. Τέτοια ζητήματα εμφανίζονται κυρίως (αλλά όχι αποκλειστικά) στο χώρο των λειτουργικών συστημάτων αλλά και των βάσεων δεδομένων. Οι σημαφόροι (semaphores) υλοποιούν τον μηχανισμό με τον οποίο μπορεί να επιτευχθεί αμοιβαίος αποκλεισμός μεταξύ δύο ή περισσοτέρων διεργασιών. Ένα απλό παράδειγμα γιατί ο αμοιβαίος αποκλεισμός είναι σημαντικός στην πράξη μπορεί να φανεί στο παράδειγμα μιας απλής συνδεδεμένης λίστας. Σε αυτή την λίστα η αφαίρεση ενός κόμβου γίνεται αλλάζοντας τον δείκτη που δείχνει στον επόμενο κόμβο. Για παράδειγμα εάν ο κόμβος i θέλουμε να αφαιρεθεί τότε το επόμενος δείκτης του i-1 θα αλλαχθεί ώστε να δείχνει τον κόμβο i+1. Στην περίπτωση που η συνδεδεμένη λίστα είναι προσβάσιμη από δύο παράλληλες διεργασίες και στην περίπτωση που και οι δύο διεργασίες προσπαθήσουν να αφαιρέσουν δύο διαφορετικούς κόμβους παράλληλα ενδέχεται να αντιμετωπίσουμε το παρακάτω πρόβλημα: έστω οι κόμβοι i και i+1 θέλουμε να αφαιρεθούν. Μετά την αφαίρεση ο κόμβος i-1 θα δείχνει τον i+1 ενώ ο κόμβος i θα δείχνει στον i+2. Παρόλο που οι δύο διεργασίες θα ολοκληρώσουν παράλληλα και με επιτυχία τις αφαιρέσεις των δύο κόμβων στην πράξη ο κόμβος i+1 δεν αφαιρείται. Για να λυθεί σωστά το πρόβλημα θα πρέπει να απαιτείται ο αμοιβαίος αποκλεισμών των διεργασιών όταν οι διεργασίες φτάνουν στην κρίσιμη περιοχή αφαίρεσης του κόμβου. Όταν η μια διεργασία αμοιβαία αποκλείει την άλλη κατά την κρίσιμη περιοχή η αφαίρεση και των δύο κόμβων συνδεδεμένη λίστα μπορεί να γίνει με επιτυχία. (el)
- Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar que entre más de un proceso a la vez en la sección crítica. La sección crítica es el fragmento de código donde puede modificarse un recurso compartido. La mayor parte de estos recursos son las señales, contadores, colas y otros datos que se emplean en la comunicación entre el código que se ejecuta cuando se da servicio a una interrupción y el código que se ejecuta el resto del tiempo. Se trata de un problema de vital importancia porque, si no se toman las precauciones debidas, una interrupción puede ocurrir entre dos instrucciones cualesquiera del código normal y esto puede provocar graves fallos. (es)
- Informatikan, elkar-bazterketa baldintza bat da, programazio konkurrentean erabiltzen dena, prozesu edo hari desberdinak sekzio kritikoan aldi berean sartzea ekiditeko. Metodo honekin lortu nahi da datuak modu atomikoan lortzea. (eu)
- Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d'un système ne soient utilisées en même temps. Son implémentation varie selon les systèmes (masquage des interruptions, lecture/écriture en un cycle, etc.) Ces algorithmes permettent de réguler l'accès aux données, en permettant par exemple qu'une seule routine y accède à la fois. (fr)
- In computer science, mutual exclusion is a property of concurrency control, which is instituted for the purpose of preventing race conditions. It is the requirement that one thread of execution never enters a critical section while a concurrent thread of execution is already accessing said critical section, which refers to an interval of time during which a thread of execution accesses a shared resource or shared memory. The shared resource is a data object, which two or more concurrent threads are trying to modify (where two concurrent read operations are permitted but, no two concurrent write operations or one read and one write are permitted, since it leads to data inconsistency). Mutual exclusion algorithm ensures that if a process is already performing write operation on a data object [critical section] no other process/thread is allowed to access/modify the same object until the first process has finished writing upon the data object [critical section] and released the object for other processes to read and write upon. The requirement of mutual exclusion was first identified and solved by Edsger W. Dijkstra in his seminal 1965 paper "Solution of a problem in concurrent programming control", which is credited as the first topic in the study of concurrent algorithms. A simple example of why mutual exclusion is important in practice can be visualized using a singly linked list of four items, where the second and third are to be removed. The removal of a node that sits between 2 other nodes is performed by changing the next pointer of the previous node to point to the next node (in other words, if node is being removed, then the next pointer of node is changed to point to node , thereby removing from the linked list any reference to node ). When such a linked list is being shared between multiple threads of execution, two threads of execution may attempt to remove two different nodes simultaneously, one thread of execution changing the next pointer of node to point to node , while another thread of execution changes the next pointer of node to point to node . Although both removal operations complete successfully, the desired state of the linked list is not achieved: node remains in the list, because the next pointer of node points to node . This problem (called a race condition) can be avoided by using the requirement of mutual exclusion to ensure that simultaneous updates to the same part of the list cannot occur. The term mutual exclusion is also used in reference to the simultaneous writing of a memory address by one thread while the aforementioned memory address is being manipulated or read by one or more other threads. (en)
- 排他制御(はいたせいぎょ)とは、コンピュータ・プログラムの実行において、複数のプロセスが利用出来る共有資源に対し、複数のプロセスからの同時アクセスにより競合が発生する場合に、あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにする事で整合性を保つ処理の事をいう。相互排除または相互排他(mutual exclusion)ともいう。最大k個のプロセスが共有資源にアクセスして良い場合を k-相互排除という。 換言すれば1つのクリティカルセクションに複数のプロセス(またはスレッド)が同時に入ることを防ぐことである。クリティカルセクションとは、プロセスが共有メモリなどの共有資源にアクセスしている期間を指す。排他制御の問題は1965年、エドガー・ダイクストラが並行プログラミング制御における問題の解法に付いて扱った論文で扱ったのが最初である。 排他制御の重要性を示す例として、片方向連結リストがある(右図)。このような連結リストからノードを削除するには、1つ前のノードにある、次のノードを指すポインタを、削除したいノードの、次のノードを指すように書き換える(例えば、ノード i を削除するには、ノード i-1 のnextポインタをノード i+1 を指すよう書き換える)。このとき、その連結リストを複数プロセスが共有しているなら、2つのプロセスがそれぞれ別のノードを削除しようとして次のような問題を生じる可能性がある。
* 2つのプロセスはそれぞれノード i と i+1 を同時に削除しようとする。どちらのノードも連結リストの途中にあり、先頭でも最後尾でもないとする。
* ノード i-1 のnextポインタはノード i+1 を指すよう書き換えられ、ノード i のnextポインタはノード i+2 を指すよう書き換えられる。
* 両方の削除処理が完了した状態を見ると、ノード i-1 がノード i+1 を指すよう書き換えられたために、ノード i+1 は連結リストに残ってしまう。 この問題は排他制御を施して複数の状態更新処理が同時に行われないようにすれば解決する。 (ja)
- 상호 배제(相互排除, mutual exclusion, Mutex, 뮤텍스)는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계 구역(critical section)으로 불리는 코드 영역에 의해 구현된다. 공유 불가능한 자원의 예로는 동시에 실행되고 있는 프로그램간의 통신에 사용되는 비트 단위의 깃발, 계수기, 큐 등이다. 문제는 스레드가 언제라도 정지되거나 시작될 수 있다는 것이다. 예) 프로그램의 일부분이 여러 단계를 거치면서 데이터를 읽고 쓰고 있다고 하자. 그런데 예상치 못한 사건 등에 의해 다른 스레드가 동작하기 시작했다. 첫 번째의 스레드가 쓰고 있는 영역에서, 이 두 번째의 스레드가 또 다른 작업을 시작한다면, 해당 영역의 값은 부적절하며 예상할 수 없는 상태에 놓이게 된다. 게다가 두 번째의 스레드가 값을 덮어 써버리기라도 한다면, 복구 불가능한 상태로 되고 만다. 그러므로 공유 데이터를 접근하는 프로그램 내부의 이른바 임계 구역이라는 부분은 홀로 수행되도록 보호되어야 하며, 다른 스레드가 동일한 부분의 프로그램을 수행해서 동일한 공유 데이터를 접근하는 것을 막아야 한다. 시스템에서, 상호 배제를 구현하는 가장 단순한 방법은 인터럽트를 억제해서 공유 데이터가 손상되는 것을 막는 것이다. 성능에 최소한의 영향을 주기 위해 인터럽트가 발생하지 않을 명령어 집합의 수는 가능한 최소로 유지시키는 것이 좋다. 상호배제를 처음으로 소프트웨어를 통해 해결한 사람은 네덜란드 수학자 데커(Dekker)이며 그 알고리즘을 데커의 알고리즘이라 한다. 상호배제는 교착상태의 4가지 필요조건 중 하나이다. (ko)
- Wederzijdse uitsluiting (Engels: mutual exclusion of mutex) is een term uit de informatica waarmee de eis bedoeld wordt dat wanneer een proces zich in een kritieke sectie bevindt en er gebruikgemaakt wordt van gedeelde bronnen, er geen andere processen zijn die zich ook in een kritieke sectie bevinden waarbij dezelfde gedeelde bronnen worden gebruikt. Voorbeelden van gedeelde bronnen zijn , of queues die gebruikt worden om te communiceren tussen verschillende processen of threads. Het regelen van de toegang tot gedeelde bronnen is een probleem in de computerwetenschappen. Dit komt doordat threads op eenieder willekeurig moment kunnen starten of stoppen. (nl)
- In informatica il termine mutex (contrazione dell'inglese mutual exclusion, mutua esclusione) indica un procedimento di sincronizzazione fra processi o thread concorrenti con cui si impedisce che più task paralleli accedano contemporaneamente ai dati in memoria o ad altre risorse soggette a corsa critica (race condition). Questo concetto riveste importanza fondamentale nella programmazione parallela e soprattutto nei sistemi di transazione. (it)
- Algorytmy wzajemnego wykluczania (w skrócie często nazywane mutex, z ang. mutual exclusion) są używane w przetwarzaniu współbieżnym w celu uniknięcia równoczesnego użycia wspólnego zasobu (np. zmiennej globalnej) przez różne wątki/procesy w częściach kodu zwanych sekcjami krytycznymi.Sekcja krytyczna jest fragmentem kodu, w którym wątki (lub procesy) odwołują się do wspólnego zasobu. Sama w sobie nie jest ani mechanizmem, ani algorytmem wzajemnego wykluczania. Program, proces lub wątek może posiadać sekcje krytyczne bez mechanizmów czy algorytmów implementujących wzajemne wykluczanie. Przykładami takich zasobów są flagi drobnoziarniste, liczniki czy kolejki, używane do komunikacji pomiędzy wykonywanymi współbieżnie częściami kodu, takimi jak aplikacje i ich procedury obsługi przerwań. Synchronizacja dostępu do tych zasobów nie jest prostym zagadnieniem, ponieważ wątki mogą być zatrzymywane i uruchamiane w różnych momentach. Na przykład: Przypuśćmy, że sekcja kodu modyfikuje jakieś dane w kilku krokach. W tym samym czasie uruchamiany jest inny wątek, który próbuje odczytać te same dane. Ze względu na to, że dane są w trakcie modyfikacji przez pierwszy wątek, ich stan jest niespójny. Wynik działania drugiego wątku może być nieoczekiwany. Jeśli drugi wątek spróbuje ponadto zmodyfikować dane, staną się one niespójne i przestaną być użyteczne dla któregokolwiek z wątków. Z tego względu wspólne dane używane w sekcjach krytycznych powinny być zabezpieczone, to znaczy inne procesy czytające lub modyfikujące dane powinny być wykluczone. Nazwą mutex określane są obiekty negocjujące dostęp pomiędzy wątkami, zwane również blokadami. (pl)
- Exclusão mútua (também conhecida pelo acrônimo mutex para mutual exclusion, o termo em inglês) é uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado, acesso esse denominado por seção crítica. Um meio simples para exclusão mútua é a utilização de um semáforo binário, isto é, que só pode assumir dois valores distintos, 0 e 1. O travamento por semáforo deve ser feito antes de utilizar o recurso, e após o uso o recurso deve ser liberado. Enquanto o recurso estiver em uso, qualquer outro processo que o utilize deve esperar a liberação. Porém, essa técnica pode causar vários efeitos colaterais, como deadlocks, em que dois processos obtêm o mesmo semáforo e ficam esperando indefinidamente um outro processo liberar o semáforo; e inanição, que é quando o processo nunca dispõe de recursos suficientes para executar plenamente. (pt)
- М'ю́текс (англ. mutex, від англ. mutual exclusion — взаємне виключення) призначено для захисту певного об’єкта у потоці від доступу інших потоків. М'ютекс є одним із засобів синхронізації роботи потоків або процесів. (uk)
- 互斥锁(英語:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全域變數)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行存取的代码,并非一种机制或是算法。一个程序、进程、线程可以拥有多个临界区域,但是并不一定会应用互斥锁。 需要此机制的资源的例子有:旗标、队列、计数器、中断处理程序等用于在多条并行运行的代码间传递数据、同步状态等的资源。维护这些资源的同步、一致和完整是很困难的,因为一条线程可能在任何一个时刻被暂停(休眠)或者恢复(唤醒)。 例如:一段代码(甲)正在分步修改一块数据。这时,另一条线程(乙)由于一些原因被唤醒。如果乙此时去读取甲正在修改的数据,而甲碰巧还没有完成整个修改过程,这个时候这块数据的状态就处在极大的不确定状态中,读取到的数据当然也是有问题的。更严重的情况是乙也往这块地方写数据,这样的一来,后果将变得不可收拾。因此,多个线程间共享的数据必须被保护。达到这个目的的方法,就是确保同一时间只有一个临界区域处于运行状态,而其他的临界区域,无论是读是写,都必须被挂起并且不能获得运行机会。 (zh)
|
rdfs:comment
|
- Vzájemné vyloučení (anglicky mutual exclusion, nebo zkráceně mutex) je algoritmus používaný v programování jako synchronizační prostředek. Zabraňuje tomu, aby byly současně vykonávány dva (nebo více) kritické kódy nad stejným sdíleným prostředkem, jako například globální proměnné. Kritický kód je část kódu, ve které proces nebo vlákno přistupuje k veřejným prostředkům. Kritický kód není mechanismus ani algoritmus pro vzájemné vyloučení.Pokud jeden proces vstoupil do kritického kódu a nedokončil poslední instrukci (nevystoupil z kritického kódu), nemůže nad tímto prostředkem žádný jiný proces vstoupit do kritického kódu. (cs)
- استبعاد التشارك أو إقصاء التشارك (بالإنجليزية: Mutual exclusion : mutex) أداة مزامنة تستعملها بعض الخوارزميات المستعملة في البرمجة لتفادي الاستخدام المتزامن للموارد المشتركة، مثل الوصول لمتغير عام، قد تقوم به بعض المقاطع الحرجة. المقطع الحرج هو جزء من البرمجية حيث تسعى عملية أو خيط للوصول فيه إلى مورد مشترك. المقطع الحرج في حد ذاته ليس آلية أو خوارزمية للاستبعاد المتبادل. خوارزميات استبعاد التشارك تسمح بضبط الوصول للبيانات. مثلا، حين يتم تنفيذ روتين معين مرة واحدة في نفس الوقت فلا يقبل التوازي. (ar)
- Informatikan, elkar-bazterketa baldintza bat da, programazio konkurrentean erabiltzen dena, prozesu edo hari desberdinak sekzio kritikoan aldi berean sartzea ekiditeko. Metodo honekin lortu nahi da datuak modu atomikoan lortzea. (eu)
- Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d'un système ne soient utilisées en même temps. Son implémentation varie selon les systèmes (masquage des interruptions, lecture/écriture en un cycle, etc.) Ces algorithmes permettent de réguler l'accès aux données, en permettant par exemple qu'une seule routine y accède à la fois. (fr)
- In informatica il termine mutex (contrazione dell'inglese mutual exclusion, mutua esclusione) indica un procedimento di sincronizzazione fra processi o thread concorrenti con cui si impedisce che più task paralleli accedano contemporaneamente ai dati in memoria o ad altre risorse soggette a corsa critica (race condition). Questo concetto riveste importanza fondamentale nella programmazione parallela e soprattutto nei sistemi di transazione. (it)
- М'ю́текс (англ. mutex, від англ. mutual exclusion — взаємне виключення) призначено для захисту певного об’єкта у потоці від доступу інших потоків. М'ютекс є одним із засобів синхронізації роботи потоків або процесів. (uk)
- 互斥锁(英語:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全域變數)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行存取的代码,并非一种机制或是算法。一个程序、进程、线程可以拥有多个临界区域,但是并不一定会应用互斥锁。 需要此机制的资源的例子有:旗标、队列、计数器、中断处理程序等用于在多条并行运行的代码间传递数据、同步状态等的资源。维护这些资源的同步、一致和完整是很困难的,因为一条线程可能在任何一个时刻被暂停(休眠)或者恢复(唤醒)。 例如:一段代码(甲)正在分步修改一块数据。这时,另一条线程(乙)由于一些原因被唤醒。如果乙此时去读取甲正在修改的数据,而甲碰巧还没有完成整个修改过程,这个时候这块数据的状态就处在极大的不确定状态中,读取到的数据当然也是有问题的。更严重的情况是乙也往这块地方写数据,这样的一来,后果将变得不可收拾。因此,多个线程间共享的数据必须被保护。达到这个目的的方法,就是确保同一时间只有一个临界区域处于运行状态,而其他的临界区域,无论是读是写,都必须被挂起并且不能获得运行机会。 (zh)
- Exclusió mútua (comunament abreujada com mutex per mutual exclusion ), és una expressió utilitzada en programació concurrent que fa referència al fet d'evitar l'accés simultani de dos fragments de codi a un recurs compartit (per exemple una cua, un comptador, etc.). Així, aquests fragments de codi (seccions crítiques) s'han d'excloure mútuament per no provocar inconsistències en les dades que estan actualitzant. (ca)
- Στην επιστήμη των υπολογιστών με τον όρο αμοιβαίο αποκλεισμό (Αγγλικά: Mutual exclusion) αναφερόμαστε στην διασφάλιση παράλληλων διεργασιών να αποκτήσουν αποκλειστική πρόσβαση όταν φτάσουν σε μια κρίσιμη περιοχή (όπου υπάρχει διαμοιρασμός πόρων όπως για παράδειγμα μια κοινή θέση μνήμης). Η ιδέα είναι να υπάρξει ένας μηχανισμός ώστε όταν δύο παράλληλες διεργασίες θέλουν να χρησιμοποιήσουν ένα κοινό πόρο να μην υπάρχει σύγκρουση επεξεργασίας αλλά να διασφαλίζεται ένας αμοιβαίος αποκλεισμός. Το πρόβλημα αυτό μελετήθηκε από τον Ντάικστρα σε ακαδημαϊκή δημοσίευση το 1965 με τίτλο Λύση στο πρόβλημα ελέγχου παράλληλων και ταυτόχρονων προγραμμάτων. Θεωρείται ο πρώτος που ασχολήθηκε με παράλληλους αλγόριθμους. (el)
- Der Begriff wechselseitiger Ausschluss bzw. Mutex (Abk. für englisch mutual exclusion) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex-Verfahren verhindern, dass nebenläufige Prozesse bzw. Threads gleichzeitig oder zeitlich verschränkt gemeinsam genutzte Datenstrukturen unkoordiniert verändern, wodurch die Datenstrukturen in einen inkonsistenten Zustand geraten können, auch wenn die Aktionen jedes einzelnen Prozesses oder Threads für sich betrachtet konsistenzerhaltend sind. Mutex-Verfahren koordinieren den zeitlichen Ablauf nebenläufiger Prozesse/Threads derart, dass andere Prozesse/Threads von der Ausführung kritischer Abschnitte ausgeschlossen sind, wenn sich bereits ein Prozess/Thread im kritischen Abschnitt befindet (die Datenst (de)
- Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar que entre más de un proceso a la vez en la sección crítica. La sección crítica es el fragmento de código donde puede modificarse un recurso compartido. (es)
- In computer science, mutual exclusion is a property of concurrency control, which is instituted for the purpose of preventing race conditions. It is the requirement that one thread of execution never enters a critical section while a concurrent thread of execution is already accessing said critical section, which refers to an interval of time during which a thread of execution accesses a shared resource or shared memory. (en)
- 排他制御(はいたせいぎょ)とは、コンピュータ・プログラムの実行において、複数のプロセスが利用出来る共有資源に対し、複数のプロセスからの同時アクセスにより競合が発生する場合に、あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにする事で整合性を保つ処理の事をいう。相互排除または相互排他(mutual exclusion)ともいう。最大k個のプロセスが共有資源にアクセスして良い場合を k-相互排除という。 換言すれば1つのクリティカルセクションに複数のプロセス(またはスレッド)が同時に入ることを防ぐことである。クリティカルセクションとは、プロセスが共有メモリなどの共有資源にアクセスしている期間を指す。排他制御の問題は1965年、エドガー・ダイクストラが並行プログラミング制御における問題の解法に付いて扱った論文で扱ったのが最初である。 この問題は排他制御を施して複数の状態更新処理が同時に行われないようにすれば解決する。 (ja)
- 상호 배제(相互排除, mutual exclusion, Mutex, 뮤텍스)는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계 구역(critical section)으로 불리는 코드 영역에 의해 구현된다. 공유 불가능한 자원의 예로는 동시에 실행되고 있는 프로그램간의 통신에 사용되는 비트 단위의 깃발, 계수기, 큐 등이다. 문제는 스레드가 언제라도 정지되거나 시작될 수 있다는 것이다. 예) 프로그램의 일부분이 여러 단계를 거치면서 데이터를 읽고 쓰고 있다고 하자. 그런데 예상치 못한 사건 등에 의해 다른 스레드가 동작하기 시작했다. 첫 번째의 스레드가 쓰고 있는 영역에서, 이 두 번째의 스레드가 또 다른 작업을 시작한다면, 해당 영역의 값은 부적절하며 예상할 수 없는 상태에 놓이게 된다. 게다가 두 번째의 스레드가 값을 덮어 써버리기라도 한다면, 복구 불가능한 상태로 되고 만다. 그러므로 공유 데이터를 접근하는 프로그램 내부의 이른바 임계 구역이라는 부분은 홀로 수행되도록 보호되어야 하며, 다른 스레드가 동일한 부분의 프로그램을 수행해서 동일한 공유 데이터를 접근하는 것을 막아야 한다. (ko)
- Wederzijdse uitsluiting (Engels: mutual exclusion of mutex) is een term uit de informatica waarmee de eis bedoeld wordt dat wanneer een proces zich in een kritieke sectie bevindt en er gebruikgemaakt wordt van gedeelde bronnen, er geen andere processen zijn die zich ook in een kritieke sectie bevinden waarbij dezelfde gedeelde bronnen worden gebruikt. (nl)
- Algorytmy wzajemnego wykluczania (w skrócie często nazywane mutex, z ang. mutual exclusion) są używane w przetwarzaniu współbieżnym w celu uniknięcia równoczesnego użycia wspólnego zasobu (np. zmiennej globalnej) przez różne wątki/procesy w częściach kodu zwanych sekcjami krytycznymi.Sekcja krytyczna jest fragmentem kodu, w którym wątki (lub procesy) odwołują się do wspólnego zasobu. Sama w sobie nie jest ani mechanizmem, ani algorytmem wzajemnego wykluczania. Program, proces lub wątek może posiadać sekcje krytyczne bez mechanizmów czy algorytmów implementujących wzajemne wykluczanie. (pl)
- Exclusão mútua (também conhecida pelo acrônimo mutex para mutual exclusion, o termo em inglês) é uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado, acesso esse denominado por seção crítica. Porém, essa técnica pode causar vários efeitos colaterais, como deadlocks, em que dois processos obtêm o mesmo semáforo e ficam esperando indefinidamente um outro processo liberar o semáforo; e inanição, que é quando o processo nunca dispõe de recursos suficientes para executar plenamente. (pt)
|