[HOME PAGE] [STORES] [CLASSICISTRANIERI.COM] [FOTO] [YOUTUBE CHANNEL]

Exclusió mútua - Viquipèdia

Exclusió mútua

De Viquipèdia

Exclusió mútua 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 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.

Una forma habitual de garantir exclusió mútua en sistemes uni-processador es deshabilitar les interrupcions a l'entrada de la secció crítica i habilitar-les a la sortida. Aquesta solució, permet que mentre s'accedeix al recurs no hi hagi canvis de context deguts a una interrupció. En sistemes multi-processador de memòria compartida (per exemple SMP) s'utilitza una operació atòmica anomenada test-and-set, que permet comprovar l'estat d'una adreça de memòria i actualitzar el seu valor en un sol pas (sense alliberar el bus de memòria). Així, el processador que vulgui accedir al recurs compartit entrarà en espera activa fins que processador que en aquell moment utilitza el recurs l'alliberi i re-inicii el valor d'una variable (aquesta tècnica s'anomena spinlock).

A nivell de programari, existeixen múltiples solucions per garantir exclusió mútua. Per exemple:

  • L'ús de semàfors
  • L'ús de monitors
  • L'algorisme de Dekker
  • L'algorisme de Peterson
  • L'algorisme de Lamport
  • El pas de missatges

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.