Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Mutex - Teknopedia
Mutex - Teknopedia
Disambiguazione – "Mutua esclusione" rimanda qui. Se stai cercando l'omonimo concetto in biologia, vedi Mutua esclusione (biologia).
Niente fonti!
Questa voce o sezione sull'argomento informatica non cita le fonti necessarie o quelle presenti sono insufficienti.

Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti del progetto di riferimento.

In informatica un mutex (contrazione dell'inglese mutual exclusion, lett. "mutua esclusione") è un oggetto virtuale utilizzato per implementare l'omonimo meccanismo di sincronizzazione tra processi che concorrono per l'utilizzo di una risorsa condivisa.

Questo concetto riveste importanza fondamentale nella programmazione parallela e soprattutto nei sistemi transazionali.

Descrizione

[modifica | modifica wikitesto]

Per realizzare l'esclusione mutua si assegna a un oggetto o porzione di programma (sezione critica) un elemento che va sempre controllato prima che un altro processo o thread possa eseguire istruzioni sull'oggetto stesso. Se un processo o thread sta già accedendo all'oggetto, tutti gli altri devono aspettare che il primo finisca. Gli oggetti mutex utilizzati per coordinare processi diversi devono essere di per sé accessibili a tutti i processi coinvolti, il che implica necessariamente l'uso di memoria condivisa, oppure gestita direttamente dal sistema operativo.

Per realizzare ciò, la procedura di utilizzo di una risorsa critica deve essere strutturata nelle seguenti fasi:

  1. Richiesta
  2. Sezione Critica
  3. Rilascio

All'avvio, mediante la fase di richiesta, il processo verifica se un altro processo sta utilizzando la sezione critica. Al termine, mediante la fase di rilascio, il processo segnala che la risorsa critica utilizzata è libera e dunque utilizzabile da un altro processo.

Affinché sia possibile la mutua esclusione occorrono sei condizioni:

  1. un solo Processo o Thread accede alla sezione critica;
  2. nessun processo può bloccarsi in sezione critica;
  3. non ci sono deadlock (stallo) e starvation;
  4. non viene fatta nessuna assunzione sulla velocità dei processi;
  5. nessun processo fuori dalla sezione critica può impedire a un altro di entrare;
  6. l'accesso alla sezione critica è consentito in un tempo definito.

Implementazioni

[modifica | modifica wikitesto]

L'implementazione più comune dei mutex fa uso di monitor, ma lo stesso risultato si può ottenere anche per mezzo di semplici lock o semafori; un mutex può essere visto come caso particolare di semaforo inizializzato a uno. Spesso è possibile migliorare la tecnica di accesso con l'ausilio di lock read/write che consentono un numero illimitato di accessi in lettura e uno solo in scrittura. Questa tecnica è impiegata soprattutto per regolare l'accesso ai file e alle banche dati.

Per implementare un mutex in maniera efficiente è necessario che il sistema operativo offra uno scheduler adatto. Senza questa predisposizione, e in particolare su molti sistemi operativi real-time, bisogna ricorrere a spinlock che purtroppo riducono l'efficienza del multitasking poiché utilizzano il processore durante le attese.

Supporto

[modifica | modifica wikitesto]

Alcuni linguaggi di programmazione offrono la tecnica mutex come parte del linguaggio stesso, in particolare Rust, Ada, Java e i linguaggi di programmazione .NET. Per quasi tutti gli altri linguaggi esistono librerie che implementano il sistema mutex. Questo può essere integrato come parte dell'API o dell'ambiente runtime.

Problemi

[modifica | modifica wikitesto]

L'esclusione reciproca comporta il rischio di deadlock, situazione in cui più task si bloccano vicendevolmente e nessuno può più proseguire (starvation). Il problema dei filosofi a cena è un esempio di questa circostanza. Esistono algoritmi speciali per aggirare questo inconveniente (algoritmo di Peterson, algoritmo di Dekker) che si può facilmente evitare ponendo cura alla programmazione.

Voci correlate

[modifica | modifica wikitesto]
  • Controllo della concorrenza
  • Algoritmo del biglietto

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Denis Howe, mutual exclusion, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • Mutua Esclusione Distribuita (sito dell'università di Genova)
Controllo di autoritàBNF (FR) cb18083402f (data)
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Mutex&oldid=142353696"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022