X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=3b560d7b57802ca53131e2c3515f2716eed08729;hp=8ac1a734b907f0d6d6ca001e211079069d231024;hb=b0a24b5ec13267af5bcc1807c1f9aee892b3f788;hpb=2270d0dd8cf9460e3aef8d5ffa2bf5c825707e58 diff --git a/fileadv.tex b/fileadv.tex index 8ac1a73..3b560d7 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -1,6 +1,6 @@ %% fileadv.tex %% -%% Copyright (C) 2000-2016 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2018 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", @@ -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}. +% 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} @@ -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}.} +% 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 @@ -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 +% https://www.fsl.cs.sunysb.edu/~vass/linux-aio.txt \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_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 @@ -4679,6 +4689,12 @@ caching dei dati. \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 @@ -4895,6 +4911,8 @@ 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}. +% TODO trattare preadv2() e pwritev2(), introdotte con il kernel 4.6, vedi +% http://lwn.net/Articles/670231/ ed il flag RWF_HIPRI \subsection{L'I/O diretto fra file descriptor: \func{sendfile} e @@ -5436,6 +5454,9 @@ copiati i puntatori. % 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}