From 46f04a7875f34640b75aab2d5163ea86afe1bf71 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 20 Jun 2009 14:57:25 +0000 Subject: [PATCH] Correzioni varie, la task struct aggiornata per il 2.6 riguardo le priorita', aggiornate le spiegazioni su tempi dei file e di relatime, inizio di documentazione di utimes. --- filedir.tex | 115 ++++++++++++++++++++++++++++++-------------- img/task_struct.dia | Bin 5009 -> 5152 bytes prochand.tex | 9 +--- system.tex | 2 +- 4 files changed, 83 insertions(+), 43 deletions(-) diff --git a/filedir.tex b/filedir.tex index eca8d1d..7c9beee 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1765,8 +1765,8 @@ riportato un esempio delle funzioni che effettuano cambiamenti su di essi. \end{table} Il primo punto da tenere presente è la differenza fra il cosiddetto tempo di -modifica (il \textit{modification time} \var{st\_mtime}) e il tempo di -cambiamento di stato (il \textit{change time} \var{st\_ctime}). Il primo +modifica (il \textit{modification time}, \var{st\_mtime}) e il tempo di +cambiamento di stato (il \textit{change time}, \var{st\_ctime}). Il primo infatti fa riferimento ad una modifica del contenuto di un file, mentre il secondo ad una modifica \itindex{inode} dell'\textit{inode}; siccome esistono molte operazioni (come la funzione \func{link} e molte altre che vedremo in @@ -1774,12 +1774,50 @@ seguito) che modificano solo le informazioni contenute \itindex{inode} nell'\textit{inode} senza toccare il contenuto del file, diventa necessario l'utilizzo di un altro tempo. -Il sistema non tiene conto dell'ultimo accesso \itindex{inode} -all'\textit{inode}, pertanto funzioni come \func{access} o \func{stat} non -hanno alcuna influenza sui tre tempi. Il tempo di ultimo accesso (ai dati) -viene di solito usato per cancellare i file che non servono più dopo un certo -lasso di tempo (ad esempio il programma \cmd{leafnode} cancella i vecchi -articoli sulla base di questo tempo). +Il tempo di ultima modifica viene usato ad esempio da programmi come +\cmd{make} per decidere quali file necessitano di essere ricompilati o +(talvolta insieme anche al tempo di cambiamento di stato) per decidere quali +file devono essere archiviati per il backup. Il tempo di ultimo accesso viene +di solito usato per identificare i file che non vengono più utilizzati per un +certo lasso di tempo. Ad esempio un programma come \texttt{leafnode} lo usa +per cancellare gli articoli letti più vecchi, mentre \texttt{mutt} lo usa per +marcare i messaggi di posta che risultano letti. Il sistema non tiene conto +dell'ultimo accesso \itindex{inode} all'\textit{inode}, pertanto funzioni come +\func{access} o \func{stat} non hanno alcuna influenza sui tre tempi. Il +comando \cmd{ls} (quando usato con le opzioni \cmd{-l} o \cmd{-t}) mostra i +tempi dei file secondo lo schema riportato nell'ultima colonna di +tab.~\ref{tab:file_file_times}. + +L'aggiornamento del tempo di ultimo accesso è stato a lungo considerato un +difetto progettuale di Unix, questo infatti comporta la necessità di +effettuare un accesso in scrittura sul disco anche in tutti i casi in cui +questa informazione non interessa e sarebbe possibile avere un semplice +accesso in lettura sui dati bufferizzati. Questo comporta un ovvio costo sia +in termini di prestazioni, che di consumo di risorse come la batteria per i +portatili, o cicli di riscrittura per i dischi su memorie riscrivibili. + +Per questo motivo, onde evitare di mantenere una informazione che nella +maggior parte dei casi non interessa, è sempre stato possibile disabilitare +l'aggiornamento del tempo di ultimo accesso con l'opzione di montaggio +\texttt{noatime}. Dato però che questo può creare problemi a qualche +programma, in Linux è stata introdotta la opzione \texttt{relatime} che esegue +l'aggiornamnto soltanto se il tempo di ultimo accesso è precedente al tempo di +ultima modifica o cambiamneto, così da rendere evidente che vi è stato un +accesso dopo la scrittura, ed evitando al contempo ulteriori operazioni su +disco negli accessi successivi. In questo modo l'informazione relativa al +fatto che un file sia stato letto resta disponibile, e ad esempio i programmi +citati in precedenza continuano a funzionare. Questa opzione, a partire dal +kernel 2.6.30, è diventata il comportamento di default e non deve più essere +specificata esplicitamente.\footnote{si può comunque riottere il vecchio + comportamento usando la opzione di montaggio \texttt{strictatime}.} + +L'effetto delle varie funzioni di manipolazione dei file sui relativi tempi è +illustrato in tab.~\ref{tab:file_times_effects}, facendo riferimento al +comportamento classico per quanto riguarda \var{st\_atime}. Si sono riportati +gli effetti sia per il file a cui si fa riferimento, sia per la directory che +lo contiene; questi ultimi possono essere capiti se si tiene conto di quanto +già detto, e cioè che anche le directory sono file (che contengono una lista +di nomi) che il sistema tratta in maniera del tutto analoga a tutti gli altri. \begin{table}[htb] \centering @@ -1861,21 +1899,6 @@ articoli sulla base di questo tempo). \label{tab:file_times_effects} \end{table} - -Il tempo di ultima modifica invece viene usato da \cmd{make} per decidere -quali file necessitano di essere ricompilati o (talvolta insieme anche al -tempo di cambiamento di stato) per decidere quali file devono essere -archiviati per il backup. Il comando \cmd{ls} (quando usato con le opzioni -\cmd{-l} o \cmd{-t}) mostra i tempi dei file secondo lo schema riportato -nell'ultima colonna di tab.~\ref{tab:file_file_times}. - -L'effetto delle varie funzioni di manipolazione dei file sui tempi è -illustrato in tab.~\ref{tab:file_times_effects}. Si sono riportati gli effetti -sia per il file a cui si fa riferimento, sia per la directory che lo contiene; -questi ultimi possono essere capiti se si tiene conto di quanto già detto, e -cioè che anche le directory sono file (che contengono una lista di nomi) che -il sistema tratta in maniera del tutto analoga a tutti gli altri. - Per questo motivo tutte le volte che compiremo un'operazione su un file che comporta una modifica del nome contenuto nella directory, andremo anche a scrivere sulla directory che lo contiene cambiandone il tempo di modifica. Un @@ -1889,8 +1912,8 @@ esiste. Per questo motivo quando si copia un file, a meno di preservare esplicitamente i tempi (ad esempio con l'opzione \cmd{-p} di \cmd{cp}) esso avrà sempre il tempo corrente come data di ultima modifica. -I tempi di ultimo accesso e modifica possono essere cambiati usando la -funzione \funcd{utime}, il cui prototipo è: +I tempi di ultimo accesso e modifica possono essere modificati esplicitamente +usando la funzione \funcd{utime}, il cui prototipo è: \begin{prototype}{utime.h} {int utime(const char *filename, struct utimbuf *times)} @@ -1934,20 +1957,42 @@ cambiamento di stato del file, che viene comunque cambiato dal kernel tutte le volte che si modifica \itindex{inode} l'\textit{inode} (quindi anche alla chiamata di \func{utime}). Questo serve anche come misura di sicurezza per evitare che si possa modificare un file nascondendo completamente le proprie -tracce. In realtà la cosa resta possibile, se si è in grado di accedere al +tracce. In realtà la cosa resta possibile, se si è in grado di accedere al file di dispositivo, scrivendo direttamente sul disco senza passare attraverso il filesystem, ma ovviamente in questo modo la cosa è molto più complicata da realizzare. -Infine a partire dal kernel 2.6 la risoluzione dei tempi dei file, che nei -campi di tab.~\ref{tab:file_file_times} è espressa in secondi, è stata -portata ai nanosecondi per la gran parte dei filesystem. La ulteriore -informazione può essere acceduta attraverso altri campi; se si sono definite -le macro \macro{\_BSD\_SOURCE} o \macro{\_SVID\_SOURCE} questi sono -\var{st\_atim.tv\_nsec}, \var{st\_mtim.tv\_nsec} e \var{st\_ctim.tv\_nsec} se -queste non sono definite, \var{st\_atimensec}, \var{st\_mtimensec} e -\var{st\_mtimensec}. Qualora il supporto per questa maggior precisione sia -assente questi campi aggiuntivi saranno nulli. +A partire dal kernel 2.6 la risoluzione dei tempi dei file, che nei campi di +tab.~\ref{tab:file_file_times} è espressa in secondi, è stata portata ai +nanosecondi per la gran parte dei filesystem. La ulteriore informazione può +essere acceduta attraverso altri campi appositamente aggiunti alla struttura +\struct{stat}. Se si sono definite le macro \macro{\_BSD\_SOURCE} o +\macro{\_SVID\_SOURCE} questi sono \var{st\_atim.tv\_nsec}, +\var{st\_mtim.tv\_nsec} e \var{st\_ctim.tv\_nsec} se queste non sono definite, +\var{st\_atimensec}, \var{st\_mtimensec} e \var{st\_mtimensec}. Qualora il +supporto per questa maggior precisione sia assente questi campi aggiuntivi +saranno nulli. + +Per la gestione di questi nuovi valori è stata definita una seconda funzione +di modifica, \funcd{utimes}, che consente di specificare tempi con maggior +precisione; il suo prototipo è: +\begin{prototype}{utime.h} +{int utimes(const char *filename, struct timeval times[2])} + +Cambia i tempi di ultimo accesso e modifica \itindex{inode} +dell'\textit{inode} specificato da \param{filename} secondo i valori +specificati da \param{times}. Se questo è \val{NULL} allora viene usato il +tempo corrente. + +\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di + errore, nel qual caso \var{errno} assumerà uno dei valori: + \begin{errlist} + \item[\errcode{EACCES}] non si ha il permesso di scrittura sul file. + \item[\errcode{ENOENT}] \param{filename} non esiste. + \end{errlist}} +\end{prototype} + +La funzione usa %TODO documentare utimes diff --git a/img/task_struct.dia b/img/task_struct.dia index 585939016fe6e04fc7d4fd41a53081e0820d87f4..8fcdf23d02ea54cbd5b7d811c69fe47f334e6451 100644 GIT binary patch literal 5152 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 boG!lnR6nu*PZr7Jm!JM0|1oVdZ} non necessario, ma aumenta la portabilità, e serve comunque quando, come nella maggior parte dei casi, si debba accedere ai campi di \struct{rusage} relativi ai tempi di utilizzo del processore, che sono definiti come strutture di tipo -\struct{timeval}. +\struct{timeval} (vedi fig.~\ref{fig:sys_timeval_struct}). Questa è la stessa struttura utilizzata da \func{wait4} (si ricordi quando visto in sez.~\ref{sec:proc_wait}) per ricavare la quantità di risorse -- 2.30.2