le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
2024-07-04: Note di studio sulla sincronizzazione del sistema operativo e sulla mutua esclusione
Processi o programmi concorrenti perderanno la chiusura una volta eseguiti. Vale a dire, se due programmi utilizzano una risorsa condivisa in aree separate, i risultati di ciascuna esecuzione potrebbero essere diversi.
Il motivo è che non abbiamo protetto la risorsa condivisa x a cui devono accedere sia il programma a che il programma b.
La relazione reciprocamente restrittiva è la sincronizzazione. Una semplice comprensione della sincronizzazione è che deve esserci un ordine nell'esecuzione dei processi.
La relazione che si limita indirettamente a vicenda è chiamata relazione mutuamente esclusiva, ad es
"Modello produttore e consumatore"
contro+ +
首先把变量放到寄存器里面
register1 = counter;
接下来对寄存器进行一个自增
register1 = register1 + 1;
再把结果返回到counter里
counter = register1;
contatore- -
首先把变量放到寄存器里面
register2 = counter;
接下来对寄存器进行一个自减
register2 = register2 - 1;
再把结果返回到counter里
counter = register2;
Soluzione: trattare il contatore come una risorsa critica e consentire al processo di accedere reciprocamente alla variabile contatore (imparerai il meccanismo di sincronizzazione in seguito)
Che si tratti di una risorsa critica per l'hardware o di una risorsa critica per il software, più processi devono accedervi reciprocamente.
Queste aree sono essenzialmente codici
Quando nessun processo si trova nella sezione critica, indica che le risorse della sezione critica sono inattive. Un processo che richiede di entrare nella sezione critica dovrebbe essere autorizzato ad entrare immediatamente nella propria sezione critica per utilizzare in modo efficace le risorse.
Quando un processo esistente entra nella sezione critica, indica che è in corso l'accesso alla risorsa critica. Pertanto, altri processi che tentano di entrare nella sezione critica devono attendere per garantire un accesso mutuamente esclusivo alla risorsa critica.
Per i processi che richiedono l'accesso a risorse critiche, dovrebbero garantire di poter entrare nella propria sezione critica entro un tempo limitato per evitare di cadere in uno stato di "attesa di morire".
Quando un processo non può entrare nella propria sezione critica, il processore (CPU) dovrebbe essere rilasciato immediatamente per evitare che il processo cada in uno stato di "attesa occupata".
两个进程必须交替进入临界区,若一个进程不再进入临界区,则另一个进程也无法进入临界区,违背了“空闲让进”准则
Il metodo di primo controllo a doppio flag imposta un flag di array booleano[2] per contrassegnare la volontà di ciascun processo di entrare nella sezione critica flag[i]=true significa che Pi vuole entrare nella sezione critica.
- Il ciclo while è equivalente al meccanismo del semaforo
- Impostare la bandiera dell'altra parte equivale a cambiare il semaforo dell'altra parte.
- Tuttavia, poiché entrambi i processi controllano prima il flag [guarda prima il semaforo], ed entrambi sono inizialmente falsi [entrambi semafori verdi], è possibile che i due processi passino il semaforo nello stesso momento ed entrino insieme nella sezione critica .
Il metodo di post-controllo a doppio flag controllerà il flag dell'altra parte e quindi imposterà il proprio. Queste due operazioni non possono essere eseguite in una volta sola, quindi i due processi potrebbero entrare nella sezione critica allo stesso tempo. Pertanto, il post-controllo è stato ideato un metodo che prima imposta il proprio flag e poi controlla il flag dell'altra parte, se il flag dell'altra parte è vero, aspetta altrimenti, entra nella sezione critica
L'algoritmo di Peterson combinametodo del segno singoloEMetodo di controllo post-controllo con doppio segnoL'idea è di utilizzare flag[] per risolvere il problema di accesso mutuamente esclusivo e utilizzare turn per risolvere il problema della fame.
Se entrambe le parti sono in competizione per entrare nella sezione critica, il processo può essere consentito per dare all'altra parte l'opportunità di entrare nella sezione critica.
Prima che ciascun processo entri nella sezione critica, imposta la propria bandiera e imposta la bandiera di turno a cui è consentito entrare. Successivamente, rileva la bandiera dell'altra parte e gira allo stesso tempo per garantire che solo un processo possa entrare quando. entrambe le parti chiedono di entrare nella sezione critica contemporaneamente.
Mancata rinuncia al diritto di attesa
È difficile per il software risolvere il problema della mutua esclusione di ciascun processo dall'ingresso nella sezione critica e presenta grandi limitazioni. Pertanto, il computer fornisce alcune istruzioni hardware speciali per risolvere il problema.
L'istruzione TS può essere considerata come un processo di funzione (primitivo) il cui processo di esecuzione è indivisibile.
Utilizza TS per gestire le sezioni critiche e impostare un blocco per ciascuna risorsa critica.
Si chiama istruzione di scambio e viene utilizzata per scambiare il contenuto di due parole.
È definito come un numero intero S utilizzato per rappresentare il numero di risorse. Ci sono solo tre operazioni per questo semaforo intero: inizializzazione (assegnando un valore iniziale), attesa (decremento), segnale (incremento).
Meccanismo di sincronizzazione del processo senza fenomeno di "attesa di occupato".
- L'operazione di attesa è equivalente all'operazione P
- L'operazione del segnale è equivalente all'operazione V
- Solo due nomi diversi, le funzioni sono esattamente le stesse
- attendere(A) = P(A)
- segnale(B) = V(A)
Imposta un semaforo mutex=1 mutuamente esclusivo, quindi posiziona la sezione critica per ciascun processo per accedere alle risorse critiche tra wait(mutex) e signal(mutex)
Impostare un semaforo di sincronizzazione S=0, in modo che prima segnali l'istruzione(S) da eseguire e poi l'attesa(S)