X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=44dd0fcf1d83122514fceeb032559c3eb4def013;hp=bddc07a62e9286dbc34a3bf675a9737d8f4e2c28;hb=5eaf11a5e3e4daaee677554b68f4ba3c92c67b84;hpb=9b0f636834e8d92e87131bbb99d7d846bab1421a diff --git a/prochand.tex b/prochand.tex index bddc07a..44dd0fc 100644 --- a/prochand.tex +++ b/prochand.tex @@ -2464,13 +2464,13 @@ condiviso, onde evitare problemi con le ottimizzazioni del codice. \textit{deadlock}\index{deadlock}} \label{sec:proc_race_cond} -Si definiscono \textit{race condition} tutte quelle situazioni in cui processi -diversi operano su una risorsa comune, ed in cui il risultato viene a -dipendere dall'ordine in cui essi effettuano le loro operazioni. Il caso -tipico è quello di un'operazione che viene eseguita da un processo in più -passi, e può essere compromessa dall'intervento di un altro processo che -accede alla stessa risorsa quando ancora non tutti i passi sono stati -completati. +Si definiscono \textit{race condition}\index{race condition} tutte quelle +situazioni in cui processi diversi operano su una risorsa comune, ed in cui il +risultato viene a dipendere dall'ordine in cui essi effettuano le loro +operazioni. Il caso tipico è quello di un'operazione che viene eseguita da un +processo in più passi, e può essere compromessa dall'intervento di un altro +processo che accede alla stessa risorsa quando ancora non tutti i passi sono +stati completati. Dato che in un sistema multitasking ogni processo può essere interrotto in qualunque momento per farne subentrare un'altro in esecuzione, niente può @@ -2483,22 +2483,22 @@ funzioner Per questo occorre essere ben consapevoli di queste problematiche, e del fatto che l'unico modo per evitarle è quello di riconoscerle come tali e prendere gli adeguati provvedimenti per far sì che non si verifichino. Casi tipici di -\textit{race condition} si hanno quando diversi processi accedono allo stesso -file, o nell'accesso a meccanismi di intercomunicazione come la memoria -condivisa. In questi casi, se non si dispone della possibilità di eseguire -atomicamente le operazioni necessarie, occorre che quelle parti di codice in -cui si compiono le operazioni sulle risorse condivise (le cosiddette +\textit{race condition}\index{race condition} si hanno quando diversi processi +accedono allo stesso file, o nell'accesso a meccanismi di intercomunicazione +come la memoria condivisa. In questi casi, se non si dispone della possibilità +di eseguire atomicamente le operazioni necessarie, occorre che quelle parti di +codice in cui si compiono le operazioni sulle risorse condivise (le cosiddette \textsl{sezioni critiche}\index{sezioni critiche}) del programma, siano opportunamente protette da meccanismi di sincronizzazione (torneremo su queste problematiche di questo tipo in \capref{cha:IPC}). -Un caso particolare di \textit{race condition} sono poi i cosiddetti -\textit{deadlock}\index{deadlock}, particolarmente gravi in quanto comportano -spesso il blocco completo di un servizio, e non il fallimento di una singola -operazione. Per definizione un \textit{deadlock}\index{deadlock} è una -situazione in cui due o più processi non sono più in grado di proseguire -perché ciascuno aspetta il risultato di una operazione che dovrebbe essere -eseguita dall'altro. +Un caso particolare di \textit{race condition}\index{race condition} sono poi +i cosiddetti \textit{deadlock}\index{deadlock}, particolarmente gravi in +quanto comportano spesso il blocco completo di un servizio, e non il +fallimento di una singola operazione. Per definizione un +\textit{deadlock}\index{deadlock} è una situazione in cui due o più processi +non sono più in grado di proseguire perché ciascuno aspetta il risultato di +una operazione che dovrebbe essere eseguita dall'altro. L'esempio tipico di una situazione che può condurre ad un