X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=0bae59c04094304df39739d08d4c0fe8c9cecec7;hp=bfcd9cadb457e0446fb9f89f0a7bc4fd522ea120;hb=05658e26bf54190b200d77d7301ee34c4690f187;hpb=d8546ab4e0814e573709702217c6335f7513d8dc diff --git a/filedir.tex b/filedir.tex index bfcd9ca..0bae59c 100644 --- a/filedir.tex +++ b/filedir.tex @@ -260,13 +260,13 @@ tab.~\ref{tab:file_file_operations}.\footnote{essa può essere comunque detta funzione.} Questo avviene perché su Linux l'apertura di un file richiede comunque un'altra operazione che mette in gioco l'omonimo oggetto del VFS: l'allocazione di una struttura di tipo \kstruct{file} che viene associata -ad ogni file aperto nel sistema. - -I motivi per cui viene usata una struttura a parte sono diversi, anzitutto, -come illustrato in sez.~\ref{sec:file_fd}, questa è necessaria per le -operazioni eseguite dai processi con l'interfaccia dei file descriptor; ogni -processo infatti mantiene il riferimento ad una struttura \kstruct{file} per -ogni file che ha aperto, ed è tramite essa che esegue le operazioni di I/O. +ad ogni file aperto nel sistema. I motivi per cui viene usata una struttura a +parte sono diversi, anzitutto, come illustrato in sez.~\ref{sec:file_fd}, +questa è necessaria per le operazioni eseguite dai processi con l'interfaccia +dei file descriptor. Ogni processo infatti mantiene il riferimento ad una +struttura \kstruct{file} per ogni file che ha aperto, ed è tramite essa che +esegue le operazioni di I/O. Inoltre il kernel mantiene un elenco di tutti i +file aperti nella \itindex{file~table} \textit{file table}. Inoltre se le operazioni relative agli \textit{inode} fanno riferimento ad oggetti posti all'interno di un filesystem e vi si applicano quindi le @@ -1722,7 +1722,7 @@ sono stati cancellati: solo quando il numero di collegamenti mantenuto lo spazio occupato su disco viene liberato. Si tenga presente comunque che a questo si aggiunge sempre un'ulteriore condizione e cioè che non ci siano processi che abbiano il suddetto file aperto.\footnote{come vedremo in - cap.~\ref{cha:file_unix_interface} il kernel mantiene anche una tabella dei + sez.~\ref{sec:file_unix_interface} il kernel mantiene anche una tabella dei file aperti nei vari processi, che a sua volta contiene i riferimenti agli \itindex{inode} \textit{inode} ad essi relativi; prima di procedere alla cancellazione dello spazio occupato su disco dal contenuto di un file il @@ -2001,7 +2001,7 @@ Tutto questo si riflette nello standard POSIX\footnote{le funzioni erano che ha introdotto una apposita interfaccia per la lettura delle directory, basata sui cosiddetti \textit{directory stream}, chiamati così per l'analogia con i \textit{file stream} dell'interfaccia standard ANSI C che vedremo in -cap.~\ref{cha:files_std_interface}. La prima funzione di questa interfaccia è +sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è \funcd{opendir}, il cui prototipo è: \begin{funcproto}{ @@ -3057,11 +3057,11 @@ In OpenBSD è stata introdotta un'altra funzione simile alle precedenti, più gli altri eventuali codici di errore di \func{mkdir}.} \end{funcproto} -La funzione genera una directory il cui nome è ottenuto sostituendo le -\code{XXXXXX} finali di \param{template} con permessi \code{0700} (al solito -si veda cap.~\ref{cha:file_unix_interface} per i dettagli). Dato che la -creazione della directory è sempre esclusiva i precedenti problemi di -\itindex{race~condition} \textit{race condition} non si pongono. +La funzione crea una directory temporanea il cui nome è ottenuto sostituendo +le \code{XXXXXX} finali di \param{template} con permessi \code{0700} (si veda +sez.~\ref{sec:file_perm_overview} per i dettagli). Dato che la creazione della +directory è sempre esclusiva i precedenti problemi di \itindex{race~condition} +\textit{race condition} non si pongono. @@ -3984,8 +3984,8 @@ crearlo o rinominarlo o cancellarlo invece occorrerà avere anche il permesso di scrittura per la directory. Avere il permesso di lettura per un file consente di aprirlo con le opzioni -(si veda quanto riportato in tab.~\ref{tab:file_open_flags}) di sola lettura o -di lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura +(si veda quanto riportato in sez.~\ref{sec:file_open}) di sola lettura o di +lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura consente di aprire un file in sola scrittura o lettura/scrittura e modificarne il contenuto, lo stesso permesso è necessario per poter troncare il file o per aggiornare il suo tempo di ultima modifica al tempo corrente, ma non per @@ -4517,8 +4517,8 @@ utenti non hanno motivi per modificarlo. \subsection{La gestione della titolarità dei file} \label{sec:file_ownership_management} -Vedremo in sez.~\ref{sec:file_base_func} con quali funzioni si possono creare -nuovi file, in tale occasione vedremo che è possibile specificare in sede di +Vedremo in sez.~\ref{sec:file_open} con quali funzioni si possono creare nuovi +file, in tale occasione vedremo che è possibile specificare in sede di creazione quali permessi applicare ad un file, però non si può indicare a quale utente e gruppo esso deve appartenere. Lo stesso problema si presenta per la creazione di nuove directory (procedimento descritto in