projects
/
gapil.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ancora revisione
[gapil.git]
/
fileadv.tex
diff --git
a/fileadv.tex
b/fileadv.tex
index 0251c7b551f7f38c016017639e242cffc322b8b0..6bbc00ce4c3889d033cf12e84a2c7adfb7c48a89 100644
(file)
--- a/
fileadv.tex
+++ b/
fileadv.tex
@@
-1,6
+1,6
@@
%% fileadv.tex
%%
%% fileadv.tex
%%
-%% Copyright (C) 2000-201
5
Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-201
8
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",
%% 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",
@@
-912,6
+912,9
@@
può presentare anche con l'uso di file mappati in memoria; pertanto allo stato
attuale delle cose è sconsigliabile fare affidamento sul \textit{mandatory
locking}.
attuale delle cose è sconsigliabile fare affidamento sul \textit{mandatory
locking}.
+% TODO il supporto è stato reso opzionale nel 4.5, verrà eliminato nel futuro
+% (vedi http://lwn.net/Articles/667210/)
+
\itindend{file~locking}
\itindend{mandatory~locking}
\itindend{file~locking}
\itindend{mandatory~locking}
@@
-1564,8
+1567,8
@@
sono state in discussione altre interfacce con le quali effettuare lo stesso
tipo di operazioni; \textit{epoll} è in grado di operare sia in modalità
\textit{level triggered} che \textit{edge triggered}.
tipo di operazioni; \textit{epoll} è in grado di operare sia in modalità
\textit{level triggered} che \textit{edge triggered}.
-La prima versione di \textit{epoll} prevedeva l'
apertura di uno speciale file
-di
di
spositivo, \texttt{/dev/epoll}, per ottenere un file descriptor da
+La prima versione di \textit{epoll} prevedeva l'
uso di uno speciale file di
+dispositivo, \texttt{/dev/epoll}, per ottenere un file descriptor da
utilizzare con le funzioni dell'interfaccia ma poi si è passati all'uso di
apposite \textit{system call}. Il primo passo per usare l'interfaccia di
\textit{epoll} è pertanto quello ottenere detto file descriptor chiamando una
utilizzare con le funzioni dell'interfaccia ma poi si è passati all'uso di
apposite \textit{system call}. Il primo passo per usare l'interfaccia di
\textit{epoll} è pertanto quello ottenere detto file descriptor chiamando una
@@
-1834,6
+1837,9
@@
modificano le modalità di notifica.
ed è utile per riconoscere la chiusura di una connessione dall'altro capo di
un socket quando si lavora in modalità \textit{edge triggered}.}
ed è utile per riconoscere la chiusura di una connessione dall'altro capo di
un socket quando si lavora in modalità \textit{edge triggered}.}
+% TODO aggiunto con il kernel 4.5 EPOLLEXCLUSIVE, vedi
+% http://lwn.net/Articles/633422/#excl
+
Il secondo campo, \var{data}, è una \dirct{union} che serve a identificare il
file descriptor a cui si intende fare riferimento, ed in astratto può
contenere un valore qualsiasi (specificabile in diverse forme) che ne permetta
Il secondo campo, \var{data}, è una \dirct{union} che serve a identificare il
file descriptor a cui si intende fare riferimento, ed in astratto può
contenere un valore qualsiasi (specificabile in diverse forme) che ne permetta
@@
-2186,9
+2192,9
@@
tal caso qualora vi fossero segnali pendenti questi resteranno tali, e
potranno essere ricevuti normalmente una volta che si rimuova il blocco
imposto con \func{sigprocmask}.
potranno essere ricevuti normalmente una volta che si rimuova il blocco
imposto con \func{sigprocmask}.
-Oltre
che con le funzioni dell'\textit{I/O multiplexing} l'uso del file
-descriptor restituito da \func{signalfd} cerca di seguire la semantica di un
-sistema unix-like anche con altre \textit{system call}; in particolare esso
+Oltre
a poter essere usato con le funzioni dell'\textit{I/O multiplexing}, il
+file descriptor restituito da \func{signalfd} cerca di seguire la semantica di
+
un
sistema unix-like anche con altre \textit{system call}; in particolare esso
resta aperto (come ogni altro file descriptor) attraverso una chiamata ad
\func{exec}, a meno che non lo si sia creato con il flag di
\const{SFD\_CLOEXEC} o si sia successivamente impostato il
resta aperto (come ogni altro file descriptor) attraverso una chiamata ad
\func{exec}, a meno che non lo si sia creato con il flag di
\const{SFD\_CLOEXEC} o si sia successivamente impostato il
@@
-2215,7
+2221,7
@@
successivo con \func{fcntl}.
\begin{figure}[!htb]
\footnotesize \centering
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{0.9
0
\textwidth}
+ \begin{minipage}[c]{0.9
5
\textwidth}
\includestruct{listati/signalfd_siginfo.h}
\end{minipage}
\normalsize
\includestruct{listati/signalfd_siginfo.h}
\end{minipage}
\normalsize
@@
-2245,8
+2251,8
@@
ad eventuali più segnali pendenti, fino al numero massimo di strutture
\label{fig:fiforeporter_code_init}
\end{figure}
\label{fig:fiforeporter_code_init}
\end{figure}
-Il contenuto di \struct{signalfd\_siginfo} ricalca da vicino quella
della
-analoga struttura \struct{siginfo\_t} (illustrata in
+Il contenuto di \struct{signalfd\_siginfo} ricalca da vicino quella
+
dell'
analoga struttura \struct{siginfo\_t} (illustrata in
fig.~\ref{fig:sig_siginfo_t}) usata dall'interfaccia ordinaria dei segnali, e
restituisce dati simili. Come per \struct{siginfo\_t} i campi che vengono
avvalorati dipendono dal tipo di segnale e ricalcano i valori che abbiamo già
fig.~\ref{fig:sig_siginfo_t}) usata dall'interfaccia ordinaria dei segnali, e
restituisce dati simili. Come per \struct{siginfo\_t} i campi che vengono
avvalorati dipendono dal tipo di segnale e ricalcano i valori che abbiamo già
@@
-3854,6
+3860,7
@@
per il campo \var{aio\_sigevent} di \struct{aiocb}.
% http://webfiveoh.com/content/guides/2012/aug/mon-13th/linux-asynchronous-io-and-libaio.html,
% https://code.google.com/p/kernel/wiki/AIOUserGuide,
% http://bert-hubert.blogspot.de/2012/05/on-linux-asynchronous-file-io.html
% http://webfiveoh.com/content/guides/2012/aug/mon-13th/linux-asynchronous-io-and-libaio.html,
% https://code.google.com/p/kernel/wiki/AIOUserGuide,
% http://bert-hubert.blogspot.de/2012/05/on-linux-asynchronous-file-io.html
+% https://www.fsl.cs.sunysb.edu/~vass/linux-aio.txt
\section{Altre modalità di I/O avanzato}
\section{Altre modalità di I/O avanzato}
@@
-4103,6
+4110,9
@@
file.
% TODO trattare MAP_HUGETLB introdotto con il kernel 2.6.32, e modifiche
% introdotte con il 3.8 per le dimensioni variabili delle huge pages
% TODO trattare MAP_HUGETLB introdotto con il kernel 2.6.32, e modifiche
% introdotte con il 3.8 per le dimensioni variabili delle huge pages
+% TODO trattare MAP_FIXED_NOREPLACE vedi https://lwn.net/Articles/751651/ e
+% https://lwn.net/Articles/741369/
+
L'argomento \param{flags} specifica infine qual è il tipo di oggetto mappato,
le opzioni relative alle modalità con cui è effettuata la mappatura e alle
modalità con cui le modifiche alla memoria mappata vengono condivise o
L'argomento \param{flags} specifica infine qual è il tipo di oggetto mappato,
le opzioni relative alle modalità con cui è effettuata la mappatura e alle
modalità con cui le modifiche alla memoria mappata vengono condivise o
@@
-4679,6
+4689,12
@@
caching dei dati.
\label{tab:madvise_advice_values}
\end{table}
\label{tab:madvise_advice_values}
\end{table}
+% TODO aggiunta MADV_FREE dal kernel 4.5 (vedi http://lwn.net/Articles/590991/)
+% TODO aggiunta MADV_WIPEONFORK dal kernel 4.14 that causes the affected memory
+% region to appear to be full of zeros in the child process after a fork. It
+% differs from the existing MADV_DONTFORK in that the address range will
+% remain valid in the child (dalla notizia in https://lwn.net/Articles/733256/).
+
\footnotetext{a partire dal kernel 2.6.32 è stato introdotto un meccanismo che
identifica pagine di memoria identiche e le accorpa in una unica pagina
(soggetta al \textit{copy-on-write} per successive modifiche); per evitare
\footnotetext{a partire dal kernel 2.6.32 è stato introdotto un meccanismo che
identifica pagine di memoria identiche e le accorpa in una unica pagina
(soggetta al \textit{copy-on-write} per successive modifiche); per evitare
@@
-4895,6
+4911,10
@@
si possono avere in concorrenza processi che utilizzano lo stesso file
descriptor (si ricordi quanto visto in sez.~\ref{sec:file_adv_func}) con delle
chiamate a \func{lseek}.
descriptor (si ricordi quanto visto in sez.~\ref{sec:file_adv_func}) con delle
chiamate a \func{lseek}.
+% TODO trattare preadv2() e pwritev2(), introdotte con il kernel 4.6, vedi
+% http://lwn.net/Articles/670231/ ed il flag RWF_HIPRI, anche l'aggiunta del
+% flag RWF_APPEND a pwritev2 con il kernel 4.16, vedi
+% https://lwn.net/Articles/746129/
\subsection{L'I/O diretto fra file descriptor: \func{sendfile} e
\subsection{L'I/O diretto fra file descriptor: \func{sendfile} e
@@
-5436,6
+5456,9
@@
copiati i puntatori.
% TODO?? dal 2.6.25 splice ha ottenuto il supporto per la ricezione su rete
% TODO?? dal 2.6.25 splice ha ottenuto il supporto per la ricezione su rete
+% TODO trattare qui copy_file_range (vedi http://lwn.net/Articles/659523/),
+% introdotta nel kernel 4.5
+
\subsection{Gestione avanzata dell'accesso ai dati dei file}
\label{sec:file_fadvise}
\subsection{Gestione avanzata dell'accesso ai dati dei file}
\label{sec:file_fadvise}