Sincronizzazione dei processi: problema della sezione critica nel sistema operativo

Sommario:

Anonim

Cos'è la sincronizzazione dei processi?

La sincronizzazione dei processi è il compito di coordinare l'esecuzione dei processi in modo tale che due processi non possano avere accesso agli stessi dati e risorse condivisi.

È particolarmente necessario in un sistema multi-processo quando più processi sono in esecuzione insieme e più di un processo cerca di accedere alla stessa risorsa o dati condivisi contemporaneamente.

Ciò può portare all'inconsistenza dei dati condivisi. Quindi la modifica apportata da un processo non si riflette necessariamente quando altri processi accedono agli stessi dati condivisi. Per evitare questo tipo di incoerenza dei dati, i processi devono essere sincronizzati tra loro.

In questo tutorial del sistema operativo imparerai:

  • Cos'è la sincronizzazione dei processi?
  • Come funziona la sincronizzazione dei processi?
  • Sezioni di un programma
  • Qual è il problema della sezione critica?
  • Regole per la sezione critica
  • Soluzioni per la sezione critica

Come funziona la sincronizzazione dei processi?

Ad esempio, il processo A cambia i dati in una posizione di memoria mentre un altro processo B sta cercando di leggere i dati dalla stessa posizione di memoria. C'è un'alta probabilità che i dati letti dal secondo processo siano errati.

Sezioni di un programma

Ecco quattro elementi essenziali della sezione critica:

  • Sezione di ingresso: fa parte del processo che decide l'ingresso di un particolare processo.
  • Sezione critica: questa parte consente a un processo di immettere e modificare la variabile condivisa.
  • Sezione di uscita: la sezione di uscita consente agli altri processi in attesa nella sezione di ingresso di entrare nelle sezioni critiche. Controlla anche che un processo che ha terminato la sua esecuzione debba essere rimosso tramite questa Sezione.
  • Sezione resto: tutte le altre parti del codice, che non sono nelle sezioni Critico, Ingresso e Uscita, sono note come Sezione resto.

Qual è il problema della sezione critica?

Una sezione critica è un segmento di codice a cui è possibile accedere da un processo di segnale in un momento specifico. La sezione è costituita da risorse di dati condivise che richiedono l'accesso da parte di altri processi.

  • L'ingresso alla sezione critica è gestito dalla funzione wait () ed è rappresentato come P ().
  • L'uscita da una sezione critica è controllata dalla funzione signal (), rappresentata come V ().

Nella sezione critica, può essere eseguito un solo processo. Altri processi, in attesa di eseguire la loro sezione critica, devono attendere fino a quando il processo corrente non completa la sua esecuzione.

Regole per la sezione critica

La sezione critica deve applicare tutte e tre le regole:

  • Mutual Exclusion: Mutual Exclusion è un tipo speciale di semaforo binario utilizzato per controllare l'accesso alla risorsa condivisa. Include un meccanismo di ereditarietà delle priorità per evitare problemi di inversione di priorità estesa. Non più di un processo alla volta può essere eseguito nella sua sezione critica.
  • Progresso: questa soluzione viene utilizzata quando nessuno si trova nella sezione critica e qualcuno vuole entrare. Quindi quei processi non nella loro sezione di promemoria dovrebbero decidere chi dovrebbe entrare, in un tempo finito.
  • Attesa vincolata: quando un processo richiede di entrare nella sezione critica, esiste un limite specifico al numero di processi che possono entrare nella sezione critica. Quindi, quando viene raggiunto il limite, il sistema deve consentire alla richiesta al processo di entrare nella sua sezione critica.

Soluzioni per la sezione critica

In Process Synchronization, la sezione critica gioca il ruolo principale in modo che il problema debba essere risolto.

Di seguito sono riportati alcuni metodi ampiamente utilizzati per risolvere il problema della sezione critica.

Soluzione Peterson

La soluzione di Peterson è una soluzione ampiamente utilizzata per problemi di sezioni critiche. Questo algoritmo è stato sviluppato da uno scienziato informatico Peterson, ecco perché è chiamato come una soluzione di Peterson.

In questa soluzione, quando un processo è in esecuzione in uno stato critico, l'altro processo esegue solo il resto del codice e può accadere il contrario. Questo metodo aiuta anche a garantire che solo un singolo processo venga eseguito nella sezione critica in un momento specifico.

Esempio

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
  • Supponiamo che ci siano N processi (P1, P2, ... PN) e ogni processo a un certo punto del tempo richiede di entrare nella sezione critica
  • Viene mantenuto un array FLAG [] di dimensione N che per impostazione predefinita è false. Quindi, ogni volta che un processo richiede di entrare nella sezione critica, deve impostare il suo flag come true. Ad esempio, se Pi vuole entrare, imposterà FLAG [i] = TRUE.
  • Un'altra variabile chiamata TURN indica il numero di processo che sta attualmente aspettando di entrare nel CS.
  • Il processo che entra nella sezione critica mentre esce cambierebbe il TURN con un altro numero dall'elenco dei processi pronti.
  • Esempio: il turno è 2 quindi P2 entra nella sezione critica e mentre esce dal turno = 3 e quindi P3 esce dal ciclo di attesa.

Hardware di sincronizzazione

Alcune volte i problemi della sezione critica vengono risolti anche dall'hardware. Alcuni sistemi operativi offrono una funzionalità di blocco in cui un processo acquisisce un blocco quando entra nella sezione Critico e rilascia il blocco dopo averlo lasciato.

Quindi, quando un altro processo sta tentando di entrare nella sezione critica, non sarà in grado di entrare poiché è bloccato. Può farlo solo se è gratuito acquisendo il lucchetto stesso.

Mutex Locks

Hardware di sincronizzazione non è un metodo semplice da implementare per tutti, quindi è stato introdotto anche un metodo software rigoroso noto come Mutex Locks.

In questo approccio, nella sezione di ingresso del codice, si ottiene un LOCK sulle risorse critiche utilizzate all'interno della sezione critica. Nella sezione di uscita quel blocco viene rilasciato.

Soluzione semaforo

Il semaforo è semplicemente una variabile non negativa e condivisa tra i thread. È un altro algoritmo o soluzione al problema della sezione critica. È un meccanismo di segnalazione e un thread in attesa su un semaforo, che può essere segnalato da un altro thread.

Utilizza due operazioni atomiche, 1) attesa e 2) segnale per la sincronizzazione del processo.

Esempio

WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;

Sommario:

  • La sincronizzazione dei processi è il compito di coordinare l'esecuzione dei processi in modo tale che due processi non possano avere accesso agli stessi dati e risorse condivisi.
  • Quattro elementi della sezione critica sono 1) Sezione di ingresso 2) Sezione critica 3) Sezione di uscita 4) Sezione di promemoria
  • Una sezione critica è un segmento di codice a cui è possibile accedere da un processo di segnale in un momento specifico.
  • Tre regole obbligatorie che devono essere applicate dalla sezione critica sono: 1) Esclusione reciproca 2) Soluzione del processo 3) Attesa vincolata
  • L'esclusione reciproca è un tipo speciale di semaforo binario utilizzato per controllare l'accesso alla risorsa condivisa.
  • La soluzione di processo viene utilizzata quando nessuno è nella sezione critica e qualcuno vuole entrare.
  • Nella soluzione di attesa vincolata, dopo che un processo ha richiesto di entrare nella sua sezione critica, c'è un limite al numero di altri processi che possono entrare nella loro sezione critica.
  • La soluzione di Peterson è una soluzione ampiamente utilizzata per problemi di sezioni critiche.
  • I problemi della sezione critica vengono risolti anche dalla sincronizzazione dell'hardware
  • L'hardware di sincronizzazione non è un metodo semplice da implementare per tutti, quindi è stato introdotto anche il rigoroso metodo software noto come Mutex Locks.
  • Il semaforo è un altro algoritmo o soluzione al problema della sezione critica.