X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=f50eeacf5de91bf3e075ddbcbf35d5ecf1fb3da4;hp=bb1c18e02e17ab0b570e12fc70a16f367976f2ab;hb=0e932d7963332ca87688c3695d7386d45ddcc46a;hpb=ae7bf994013ffbf4f5ef1d5a38a18033593e3e9f diff --git a/ipc.tex b/ipc.tex index bb1c18e..f50eeac 100644 --- a/ipc.tex +++ b/ipc.tex @@ -1,6 +1,6 @@ %% ipc.tex %% -%% Copyright (C) 2000-2018 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2019 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -221,9 +221,9 @@ Per realizzare quanto voluto useremo in sequenza i programmi \cmd{barcode} e \cmd{gs}, il primo infatti è in grado di generare immagini PostScript di codici a barre corrispondenti ad una qualunque stringa, mentre il secondo serve per poter effettuare la conversione della stessa immagine in formato -JPEG. Usando una \textit{pipe} potremo inviare l'output del primo sull'input del -secondo, secondo lo schema mostrato in fig.~\ref{fig:ipc_pipe_use}, in cui la -direzione del flusso dei dati è data dalle frecce continue. +JPEG. Usando una \textit{pipe} potremo inviare l'output del primo sull'input +del secondo, secondo lo schema mostrato in fig.~\ref{fig:ipc_pipe_use}, in cui +la direzione del flusso dei dati è data dalle frecce continue. Si potrebbe obiettare che sarebbe molto più semplice salvare il risultato intermedio su un file temporaneo. Questo però non tiene conto del fatto che un @@ -1397,7 +1397,7 @@ riguarda gli altri campi invece: % primo e ultimo messaggio sono inizializzati a \val{NULL} e % \var{msg\_cbytes}, che esprime la dimensione in byte dei messaggi presenti è % inizializzato a zero. Questi campi sono ad uso interno dell'implementazione -% e non devono essere utilizzati da programmi in user space). +% e non devono essere utilizzati da programmi in \textit{user space}). \end{itemize*} Una volta creata una coda di messaggi le operazioni di controllo vengono @@ -2140,7 +2140,7 @@ i seguenti: \param{semnum} dell'insieme \param{semid} (corrispondente al campo \var{sempid} di \struct{sem}). Va invocata con tre argomenti. Occorre avere il permesso di lettura. -\item[\constd{GETVAL}] Restituisce come valore di ritorno della funzione il il +\item[\constd{GETVAL}] Restituisce come valore di ritorno della funzione il valore corrente del semaforo \param{semnum} dell'insieme \param{semid} (corrispondente al campo \var{semval} di \struct{sem}). Va invocata con tre argomenti. Occorre avere il permesso di lettura. @@ -2304,7 +2304,7 @@ un valore nullo di \var{sem\_num}. Il campo \var{sem\_flg} è un flag, mantenuto come maschera binaria, per il quale possono essere impostati i due valori \const{IPC\_NOWAIT} e -\constd{SEM\_UNDO}. Impostando \const{IPC\_NOWAIT} si fa si che in tutti quei +\constd{SEM\_UNDO}. Impostando \const{IPC\_NOWAIT} si fa sì che in tutti quei casi in cui l'esecuzione di una operazione richiederebbe di porre il processo vada nello stato di \textit{sleep}, invece di bloccarsi \func{semop} ritorni immediatamente (abortendo così le eventuali operazioni restanti) con un errore @@ -2780,10 +2780,9 @@ si ha a cuore la portabilità. Questi comandi aggiuntivi sono: 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}). + \textit{capability} \const{CAP\_IPC\_LOCK}.} a partire 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[\constd{SHM\_UNLOCK}] Disabilita il \textit{memory locking} sul segmento di memoria condivisa. Fino al kernel 2.6.9 solo l'amministratore poteva utilizzare questo comando in corrispondenza di un segmento da lui bloccato. @@ -2869,9 +2868,9 @@ riferiti all'indirizzo di partenza del segmento). L'argomento \param{shmflg} permette di cambiare il comportamento della funzione; esso va specificato come maschera binaria, i bit utilizzati al -momento sono sono tre e sono identificati dalle costanti \const{SHM\_RND}, +momento sono tre e sono identificati dalle costanti \const{SHM\_RND}, \const{SHM\_RDONLY} e \const{SHM\_REMAP} che vanno combinate con un OR -aritmetico. +aritmetico. Specificando \constd{SHM\_RND} si evita che \func{shmat} ritorni un errore quando \param{shmaddr} non è allineato ai confini di una pagina. Si può quindi @@ -3554,6 +3553,8 @@ sez.~\ref{sec:ipc_sysv_shm} che possa restituisca i risultati via rete. % TODO: con il kernel 3.17 è stata introdotta una fuunzionalità di % sigillatura dei file mappati in memoria e la system call memfd % (capire se va messo qui o altrove) vedi: http://lwn.net/Articles/593918/ +% col 5.1 aggiunta a memfd F_SEAL_FUTURE_WRITE, vedi +% https://git.kernel.org/linus/ab3948f58ff8 e https://lwn.net/Articles/782511/ \section{L'intercomunicazione fra processi di POSIX} @@ -4399,9 +4400,9 @@ sincronizzazione completamente nuovo, basato sui cosiddetti \textit{futex} (la sigla sta per \textit{fast user mode mutex}) con il quale è stato possibile implementare una versione nativa dei semafori POSIX. Grazie a questo con i kernel della serie 2.6 e le nuove versioni della \acr{glibc} che usano questa -nuova infrastruttura per quella che viene che viene chiamata \textit{New Posix - Thread Library}, sono state implementate anche tutte le funzioni -dell'interfaccia dei semafori POSIX. +nuova infrastruttura per quella che viene chiamata \textit{New Posix Thread + Library}, sono state implementate anche tutte le funzioni dell'interfaccia +dei semafori POSIX. Anche in questo caso è necessario appoggiarsi alla libreria per le estensioni \textit{real-time} \texttt{librt}, questo significa che se si vuole utilizzare