X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=bd3063a0e2d5d3fd16cf3040265b6a690ed241cf;hp=f955a41e5fc19dd597a4a01830c2a4f456cb3626;hb=45e080607c5b618a11038a6afc9f79af9931b2da;hpb=c9c149db16c39efdfa53bde804b7a189dd923eef diff --git a/fileadv.tex b/fileadv.tex index f955a41..bd3063a 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -3907,12 +3907,12 @@ Il meccanismo è illustrato in fig.~\ref{fig:file_mmap_layout}, una sezione del file viene \textsl{mappata} direttamente nello spazio degli indirizzi del programma. Tutte le operazioni di lettura e scrittura su variabili contenute in questa zona di memoria verranno eseguite leggendo e scrivendo dal contenuto -del file attraverso il sistema della memoria virtuale \index{memoria~virtuale} -che in maniera analoga a quanto avviene per le pagine che vengono salvate e -rilette nella swap, si incaricherà di sincronizzare il contenuto di quel -segmento di memoria con quello del file mappato su di esso. Per questo motivo -si può parlare tanto di \textsl{file mappato in memoria}, quanto di -\textsl{memoria mappata su file}. +del file attraverso il sistema della memoria virtuale illustrato in +sez.~\ref{sec:proc_mem_gen} che in maniera analoga a quanto avviene per le +pagine che vengono salvate e rilette nella \textit{swap}, si incaricherà di +sincronizzare il contenuto di quel segmento di memoria con quello del file +mappato su di esso. Per questo motivo si può parlare tanto di \textsl{file + mappato in memoria}, quanto di \textsl{memoria mappata su file}. L'uso del \textit{memory-mapping} comporta una notevole semplificazione delle operazioni di I/O, in quanto non sarà più necessario utilizzare dei buffer @@ -3928,12 +3928,12 @@ cui si opera sarà a sua volta letta o scritta sul file una pagina alla volta e solo per le parti effettivamente usate, il tutto in maniera completamente trasparente al processo; l'accesso alle pagine non ancora caricate avverrà allo stesso modo con cui vengono caricate in memoria le pagine che sono state -salvate sullo swap. +salvate sullo \textit{swap}. Infine in situazioni in cui la memoria è scarsa, le pagine che mappano un file vengono salvate automaticamente, così come le pagine dei programmi vengono -scritte sulla swap; questo consente di accedere ai file su dimensioni il cui -solo limite è quello dello spazio di indirizzi disponibile, e non della +scritte sulla \textit{swap}; questo consente di accedere ai file su dimensioni +il cui solo limite è quello dello spazio di indirizzi disponibile, e non della memoria su cui possono esserne lette delle porzioni. L'interfaccia POSIX implementata da Linux prevede varie funzioni di sistema @@ -4063,12 +4063,12 @@ tab.~\ref{tab:file_mmap_flag}. con gli indirizzi crescenti verso il basso.\\ \const{MAP\_HUGETLB} & Esegue la mappatura usando le cosiddette ``\textit{huge pages}'' (dal 2.6.32).\\ - \const{MAP\_LOCKED} & Se impostato impedisce lo swapping delle pagine + \const{MAP\_LOCKED} & Se impostato impedisce lo \textit{swapping} delle pagine mappate (dal 2.5.37).\\ \const{MAP\_NONBLOCK} & Esegue un \textit{prefaulting} più limitato che non causa I/O (dal 2.5.46).\\ \const{MAP\_NORESERVE} & Si usa con \const{MAP\_PRIVATE}. Non riserva - delle pagine di swap ad uso del meccanismo del + delle pagine di \textit{swap} ad uso del meccanismo del \textit{copy on write} \itindex{copy~on~write} per mantenere le modifiche fatte alla regione mappata, in questo caso dopo una scrittura, se @@ -4079,7 +4079,7 @@ tab.~\ref{tab:file_mmap_flag}. privata cui solo il processo chiamante ha accesso. Le modifiche sono mantenute attraverso il meccanismo del \textit{copy on write} e - salvate su swap in caso di necessità. Non è + salvate su \textit{swap} in caso di necessità. Non è specificato se i cambiamenti sul file originale vengano riportati sulla regione mappata. Incompatibile con \const{MAP\_SHARED}.\\ @@ -5380,11 +5380,10 @@ all'accesso al disco; il suo prototipo è: La funzione richiede che venga letto in anticipo il contenuto del file \param{fd} a partire dalla posizione \param{offset} e per un ammontare di -\param{count} byte, in modo da portarlo in cache. La funzione usa la -\index{memoria~virtuale} memoria virtuale ed il meccanismo della -\index{paginazione} paginazione per cui la lettura viene eseguita in blocchi -corrispondenti alle dimensioni delle pagine di memoria, ed i valori di -\param{offset} e \param{count} vengono arrotondati di conseguenza. +\param{count} byte, in modo da portarlo in cache. La funzione usa la memoria +virtuale ed il meccanismo della paginazione per cui la lettura viene eseguita +in blocchi corrispondenti alle dimensioni delle pagine di memoria, ed i valori +di \param{offset} e \param{count} vengono arrotondati di conseguenza. La funzione estende quello che è un comportamento normale del kernel che quando si legge un file, aspettandosi che l'accesso prosegua, esegue sempre