X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=abe229a50538d4ffb8bd31449eba60c6f15f43a2;hp=ff1772d5d07e400a6ea815b262522b10f32daf00;hb=0c4a9ed958f4797e1cf4dc90e0c0358e302956f5;hpb=8f0d759b2a9864c839d8803b2ea12860f386f17d diff --git a/ipc.tex b/ipc.tex index ff1772d..abe229a 100644 --- a/ipc.tex +++ b/ipc.tex @@ -122,7 +122,7 @@ fra \const{O\_NONBLOCK} o \const{O\_CLOEXEC} che hanno l'effetto di impostare su entrambi i file descriptor restituiti dalla funzione i relativi flag, già descritti per \func{open} in tab.~\ref{tab:open_operation_flag}, che attivano rispettivamente la modalità di accesso \textsl{non-bloccante} ed il -\textit{close-on-exec} \itindex{close-on-exec}. +\textit{close-on-exec}. Chiaramente creare una \textit{pipe} all'interno di un singolo processo non serve a niente; se però ricordiamo quanto esposto in @@ -369,8 +369,8 @@ La funzione restituisce il puntatore ad uno stream associato alla input}) in caso di \code{w}. A partire dalla versione 2.9 delle \acr{glibc} (questa è una estensione specifica di Linux) all'argomento \param{type} può essere aggiunta la lettera ``\texttt{e}'' per impostare automaticamente il -flag di \textit{close-on-exec} \itindex{close-on-exec} sul file descriptor -sottostante (si ricordi quanto spiegato in sez.~\ref{sec:file_open_close}). +flag di \textit{close-on-exec} sul file descriptor sottostante (si ricordi +quanto spiegato in sez.~\ref{sec:file_open_close}). Lo \textit{stream} restituito da \func{popen} è identico a tutti gli effetti ai \textit{file stream} visti in sez.~\ref{sec:files_std_interface}, anche se @@ -1075,8 +1075,7 @@ direttamente (in lettura o scrittura) all'oggetto. In tal caso lo schema dei controlli è simile a quello dei file, ed avviene secondo questa sequenza: \begin{itemize*} \item se il processo ha i privilegi di amministratore (più precisamente la - capacità \itindex{capability} \const{CAP\_IPC\_OWNER}) l'accesso è sempre - consentito. + capacità \const{CAP\_IPC\_OWNER}) l'accesso è sempre consentito. \item se l'\ids{UID} effettivo del processo corrisponde o al valore del campo \var{cuid} o a quello del campo \var{uid} ed il permesso per il proprietario in \var{mode} è appropriato\footnote{per appropriato si intende che è @@ -1451,9 +1450,9 @@ per \param{cmd} sono: occorre essere il proprietario o il creatore della coda, oppure l'amministratore e lo stesso vale per \var{msg\_qbytes}. Infine solo l'amministratore (più precisamente un processo con la capacità - \itindex{capability} \const{CAP\_IPC\_RESOURCE}) ha la facoltà di - incrementarne il valore a limiti superiori a \const{MSGMNB}. Se eseguita con - successo la funzione aggiorna anche il campo \var{msg\_ctime}. + \const{CAP\_IPC\_RESOURCE}) ha la facoltà di incrementarne il valore a + limiti superiori a \const{MSGMNB}. Se eseguita con successo la funzione + aggiorna anche il campo \var{msg\_ctime}. \end{basedescript} A questi tre valori, che sono quelli previsti dallo standard, su Linux se ne @@ -2423,8 +2422,7 @@ referenziata tramite i campi \var{sem\_pending} e \var{sem\_pending\_last} di operazioni richieste (nel campo \var{sops}, che è un puntatore ad una struttura \struct{sembuf}) e al processo corrente (nel campo \var{sleeper}) poi quest'ultimo viene messo stato di attesa e viene invocato lo -\itindex{scheduler} \textit{scheduler} per passare all'esecuzione di un altro -processo. +\textit{scheduler} per passare all'esecuzione di un altro processo. Se invece tutte le operazioni possono avere successo queste vengono eseguite immediatamente, dopo di che il kernel esegue una scansione della coda di @@ -2591,8 +2589,8 @@ creazione del segmento usando una \itindex{huge~page} \textit{huge page}, le pagine di memoria di grandi dimensioni introdotte con il kernel 2.6 per ottimizzare le prestazioni nei sistemi più recenti che hanno grandi quantità di memoria. L'operazione è privilegiata e richiede che il processo abbia la -\itindex{capability} \textit{capability} \const{CAP\_IPC\_LOCK}. Questa -funzionalità è specifica di Linux e non è portabile. +\textit{capability} \const{CAP\_IPC\_LOCK}. Questa funzionalità è specifica di +Linux e non è portabile. Il secondo flag aggiuntivo, introdotto a partire dal kernel 2.6.15, è \const{SHM\_NORESERVE}, ed ha lo stesso scopo del flag \const{MAP\_NORESERVE} @@ -2776,13 +2774,12 @@ si ha a cuore la portabilità. Questi comandi aggiuntivi sono: \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}} \item[\const{SHM\_LOCK}] Abilita il \itindex{memory~locking} \textit{memory locking} sul segmento di memoria condivisa, impedendo che la memoria usata - per il segmento venga salvata su disco dal meccanismo della - \index{memoria~virtuale} memoria virtuale. Come illustrato in - sez.~\ref{sec:proc_mem_lock} fino al kernel 2.6.9 solo l'amministratore - poteva utilizzare questa capacità,\footnote{che richiedeva la - \textit{capability} \const{CAP\_IPC\_LOCK}.} a partire dal dal kernel - 2.6.10 anche gli utenti normali possono farlo fino al limite massimo - determinato da \const{RLIMIT\_MEMLOCK} (vedi + per il segmento venga salvata su disco dal meccanismo della memoria + virtuale. Come illustrato in sez.~\ref{sec:proc_mem_lock} fino al kernel + 2.6.9 solo l'amministratore poteva utilizzare questa capacità,\footnote{che + richiedeva la \textit{capability} \const{CAP\_IPC\_LOCK}.} a partire dal + dal kernel 2.6.10 anche gli utenti normali possono farlo fino al limite + massimo determinato da \const{RLIMIT\_MEMLOCK} (vedi sez.~\ref{sec:sys_resource_limit}). \item[\const{SHM\_UNLOCK}] Disabilita il \itindex{memory~locking} \textit{memory locking} sul segmento di memoria condivisa. Fino al kernel @@ -3791,9 +3788,8 @@ dei limiti sono: valore massimo è \const{HARD\_MAX} che vale \code{(131072/sizeof(void *))}, ed il valore minimo 1 (ma era 10 per i kernel precedenti il 2.6.28). Questo limite viene ignorato per i processi con privilegi amministrativi (più - precisamente con la \itindex{capability} \textit{capability} - \const{CAP\_SYS\_RESOURCE}) ma \const{HARD\_MAX} resta comunque non - superabile. + precisamente con la \textit{capability} \const{CAP\_SYS\_RESOURCE}) ma + \const{HARD\_MAX} resta comunque non superabile. \item[\sysctlfile{fs/mqueue/msgsize\_max}] Indica il valore massimo della dimensione in byte di un messaggio sulla coda ed agisce come limite @@ -3801,14 +3797,14 @@ dei limiti sono: suo valore di default è 8192. Il valore massimo è 1048576 ed il valore minimo 128 (ma per i kernel precedenti il 2.6.28 detti limiti erano rispettivamente \const{INT\_MAX} e 8192). Questo limite viene ignorato dai - processi con privilegi amministrativi (con la \itindex{capability} - \textit{capability} \const{CAP\_SYS\_RESOURCE}). + processi con privilegi amministrativi (con la \textit{capability} + \const{CAP\_SYS\_RESOURCE}). \item[\sysctlfile{fs/mqueue/queues\_max}] Indica il numero massimo di code di messaggi creabili in totale sul sistema, il valore di default è 256 ma si può usare un valore qualunque fra $0$ e \const{INT\_MAX}. Il limite non viene applicato ai processi con privilegi amministrativi (cioè con la - \itindex{capability} \textit{capability} \const{CAP\_SYS\_RESOURCE}). + \textit{capability} \const{CAP\_SYS\_RESOURCE}). \end{basedescript} @@ -5087,10 +5083,10 @@ testo alla terminazione di quest'ultimo. % LocalWords: SysV capability short RESOURCE INFO UNDEFINED EFBIG semtimedop % LocalWords: scan HUGETLB huge page NORESERVE copy RLIMIT MEMLOCK REMAP UTC % LocalWords: readmon Hierarchy defaults queues MSGQUEUE effective fstat +% LocalWords: fchown fchmod Epoch January %%% Local Variables: %%% mode: latex %%% TeX-master: "gapil" %%% End: -% LocalWords: fchown fchmod Epoch January