← Tornar a l'auditoria
Exclusió mútua
Versió de 2013 a viki.cat
·
Versió actual a ca.wikipedia
·
Historial
5.115caràcters el 2013
4.968caràcters avui
10passatges que ja no hi són
Text que hi era el 18 de juny de 2013 i que avui no es troba
a l'article. S'ha descartat el que només s'ha reescrit amb altres paraules: només hi surt
allò la major part de les frases del qual han desaparegut. Es compara el text llegible,
sense plantilles; les taules i les fitxes en queden fora, i per veure-ho tot pots mirar-lo
en wikitext.
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 (deadlock s) 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 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 dóna 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 qualsevol del codi normal i això pot provocar greus errors.
Exclusió mútua, (comunament abreujada com mutex per mutual exclusion ), es 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 excloure mútuament per no provocar inconsistències en les dades que estan actualitzant.
En un sistema multiprocessador de memòria compartida, es fa servir l'operació indivisible test-and-set sobre una bandera, per esperar fins que l'altre processador la rebuig. L'operació test-and-setembre 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 spin lock o espera activa.
Alguns sistemes tenen instruccions multioperació indivisibles similars a les anteriorment descrites per manipular les llistes enllaçades que s'utilitzen per les cues d'esdeveniments i altres estructures de dades que els sistemes operatius fan servir comunament.
La majoria de les solucions estan encaminades maximitzar l'eficiència en l'us del processador, evitant en la mesura del possible efectes no desitjats tals com l'interbloqueig, la inanició de recursos o la inversió de prioritat.
Els algorismes d' exclusió mútua que s'usen en programació concurrent per evitar l'ús simultani de recursos comuns, com a variables globals, per fragments de codi coneguts com a seccions crítiques.
A nivell de programari, existeixen múltiples solucions per garantir exclusió mútua. Per exemple:
Monitor (concurrència) (inventat per CAR Hoare) (sense interbloquejos)
Alguns exemples d'algorismes clàssics de exclusió mútua són: