X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=f81dcc95dcdcc76c9a09689031a2e9bfe07d991f;hp=e6913ed01a7bc9ceb5a5e9b3daf11c2cb7827d3e;hb=f4469c536e047bd645eb84db1d5bed531ffde3b5;hpb=23010d9e9a5dd36da44a8a2a89eb8bd95cb18dfa diff --git a/prochand.tex b/prochand.tex index e6913ed..f81dcc9 100644 --- a/prochand.tex +++ b/prochand.tex @@ -17,7 +17,7 @@ problematiche generiche della programmazione in ambiente multitasking. \label{sec:proc_gen} Partiremo con una introduzione generale ai concetti che stanno alla base della -gestione dei processi in un sitema unix-like. Introdurremo in questa sezione +gestione dei processi in un sistema unix-like. Introdurremo in questa sezione l'architettura della gestione dei processi e le sue principali caratteristiche, e daremo una panoramica sull'uso delle principali funzioni per la gestione dei processi. @@ -219,7 +219,7 @@ Oltre al \acr{pid} e al \acr{ppid}, e a quelli usati per il controllo di sessione, ad ogni processo sono associati altri identificatori, usati per il controllo di accesso, che servono per determinare se il processo può o meno eseguire le operazioni richieste, a seconda dei privilegi e dell'identità di -chi lo ha posto in esecuzione; su questi torneremo in dettaglii più avanti in +chi lo ha posto in esecuzione; su questi torneremo in dettagli più avanti in \secref{sec:proc_perm}. @@ -1332,7 +1332,7 @@ il programma che si settati (il significato di questi bit è affrontato in dettaglio in \secref{sec:file_suid_sgid}). In questo caso essi saranno settati all'utente e al gruppo proprietari del file; questo consente, per programmi in cui ci sia -necessità, di dare a qualunquee utente normale privilegi o permessi di +necessità, di dare a qualunque utente normale privilegi o permessi di un'altro (o dell'amministratore). Come nel caso del \acr{pid} e del \acr{ppid} tutti questi identificatori @@ -1397,10 +1397,10 @@ di utente e gruppo associati dal kernel ad ogni processo, \subsection{Le funzioni \func{setuid} e \func{setgid}} \label{sec:proc_setuid} -Le due funzioni che venfono usate per cambiare identità (cioè utente e gruppo +Le due funzioni che vengono usate per cambiare identità (cioè utente e gruppo di appartenenza) ad un processo sono rispettivamente \func{setuid} e \func{setgid}; come accennato in \secref{sec:proc_user_group} in Linux esse -seguono la sematica POSIX che prevede l'esistenza di \textit{saved user id} e +seguono la semantica POSIX che prevede l'esistenza di \textit{saved user id} e \textit{saved group id}; i loro prototipi sono: \begin{functions} @@ -1426,7 +1426,7 @@ delle funzioni che tratteremo in questa sezione. L'effetto della chiamata è diverso a seconda dei privilegi del processo; se l'\textit{effective user id} è zero (cioè è quello dell'amministratore di -sistema) allora tutti gli identificatatori (\textit{real}, \textit{effective} +sistema) allora tutti gli identificatori (\textit{real}, \textit{effective} e \textit{saved}) vengono settati al valore specificato da \var{uid}, altrimenti viene settato solo l'\textit{effective user id}, e soltanto se il valore specificato corrisponde o al \textit{real user id} o al \textit{saved @@ -1441,7 +1441,7 @@ eventualmente tornare indietro. Come esempio per chiarire dell'uso di queste funzioni prediamo quello con cui viene gestito l'accesso al file \file{/var/log/utmp}. In questo file viene registrato chi sta usando il sistema al momento corrente; chiaramente non può -essere lasciato aperto in scrittura a qualunque utente, che protrebbe +essere lasciato aperto in scrittura a qualunque utente, che potrebbe falsificare la registrazione. Per questo motivo questo file (e l'analogo \file{/var/log/wtmp} su cui vengono registrati login e logout) appartengono ad un gruppo dedicato (\acr{utmp}) ed i programmi che devono accedervi (ad @@ -1519,7 +1519,7 @@ Le funzioni restituiscono 0 in caso di successo e -1 in caso di fallimento: l'unico errore possibile è \macro{EPERM}. \end{functions} -I processi non privileguiati possono settare i \textit{real id} soltanto ai +I processi non privilegiati possono settare i \textit{real id} soltanto ai valori dei loro \textit{effective id} o \textit{real id} e gli \textit{effective id} ai valori dei loro \textit{real id}, \textit{effective id} o \textit{saved id}; valori diversi comportano il fallimento della @@ -1578,9 +1578,9 @@ l'unico errore possibile I processi non privilegiati possono cambiare uno qualunque degli identificatori usando uno qualunque dei valori correnti di \textit{real id}, -\textit{effective id} o \textit{saved id}, l'ammnistratore può specificare i +\textit{effective id} o \textit{saved id}, l'amministratore può specificare i valori che vuole; un valore di -1 per un qualunque parametro lascia inalterato -l'dentificatore corrispondente. +l'identificatore corrispondente. @@ -1634,7 +1634,7 @@ ha temporaneamente assunto l'identit quelli originari per quanto riguarda tutti gli altri controlli di accesso. Le due funzioni usate per cambiare questi identificatori sono \func{setfsuid} -e \func{setfsgid}, ovviamenete sono specifiche di Linux e non devono essere +e \func{setfsgid}, ovviamente sono specifiche di Linux e non devono essere usate se si intendono scrivere programmi portabili; i loro prototipi sono: \begin{functions} @@ -1683,7 +1683,7 @@ quando si ha la certezza che, qualora essa venga effettuata, tutti i passaggi che devono essere compiuti per realizzarla verranno eseguiti senza possibilità di interruzione in una fase intermedia. -In un ambiente multitasking il concetto è esseziale, dato che un processo può +In un ambiente multitasking il concetto è essenziale, dato che un processo può essere interrotto in qualunque momento dal kernel che mette in esecuzione un altro processo o dalla ricezione di un segnale; occorre pertanto essere accorti nei confronti delle possibili \textit{race condition} (vedi @@ -1736,7 +1736,7 @@ di eseguire atomicamente le operazioni necessarie, occorre che le risorse condivise siano opportunamente protette da meccanismi di sincronizzazione (torneremo su queste problematiche di questo tipo in \secref{sec:ipc_semaph}). -Un caso particolare di \textit{race condition} sono poi i cosidetti +Un caso particolare di \textit{race condition} sono poi i cosiddetti \textit{deadlock}; l'esempio tipico è quello di un flag di ``occupazione'' che viene rilasciato da un evento asincrono fra il controllo (in cui viene trovato occupato) e la successiva messa in attesa, attesa che a questo punto diventerà