Nuovo quarto capitolo

La revisione del nuovo quarto capitolo dedicato alla gestione di file e directory (il cui contenuto deriva principalmente dal precedente quinto capitolo), è stata completata. Come già detto in precedenza il nuovo capitolo assorbe nella sua prima sezione parte dei contenuti della versione precedente e molto materiale aggiunto per l’occasione.

Oltre a questo però è stata ristrutturata la suddivisione della seconda sezione sulla gestione dei “nomi” dei file (nel senso gestione delle voci di una directory) accorpando gli argomenti attinenti e cambiandone il nome, e sono state revisionate dettagliatamente tutte le sezioni successive.

Si è infine scritto un nuovo programma di esempio per l’uso delle funzioni delle ACL (mygetfacl.c) e revisionato quello per la lettura delle capabilities.

Revisione dell’introduzione a file e directory

Nella revisione del testo iniziata con le vacanze natalizie, e che procederà lentamente nei prossimi mesi, il precedente quarto capitolo, L’architettura dei file, è stato completamente eliminato.

Trattandosi di una introduzione all’architettura dei file una prima metà dei contenuti (quella di carattere più generale, con i tipi di file, l’albero unico e il significato dei pathname) stati riportati più correttamente all’inizio nel primo capitolo, in una nuova sezione aggiunta fra le due precedenti, volta ad illustrare a grandi linee l’architettura della gestione dei file in un sistema unix-like.

La parte finale del capitolo, dedicata al funzionamento del Virtual File System di Linux (dentry, inode, ecc.) e alla descrizione della strutturazione generica di un filesystem per Linux è invece stata inserita in una nuova sezione iniziale di quello che era il precedente capitolo 5, cui si è aggiunta, essendo strettamente correlata, la parte relativa alla system call mount che in precedenza era trattata molto più avanti, nella sezione sulla gestione del sistema.

Tutte queste parti, essendo alquanto datate, sono state riviste profondamente, se non addirittura, come fatto per la sezione dedicata al funzionamento del Virtual File System, riscritte da zero. Inoltre nella aggiunta della parte relativa alla system call mount si sono trattate in dettaglio alcune delle opzioni avanzate introdotte nei kernel più recenti, come il bind mount e gli shared subtree. In particolare si sono cercate di trattare queste ultime, che al momento non sono documentate neanche nelle pagine di manuale della system call.

PS
Per eseguire un test diretto dei vari flag si è scritto un semplice programma per l’invocazione diretta della della system call mount, che consente di indicare, senza nessun controllo sulla correttezza della stessa, una qualunque combinazione di flag di montaggio. Il programma passa direttamente anche gli altri argomenti della funzione (opzioni del filesystem, tipo del filesystem, sorgente e target)

Il codice del comando è disponibile nel file mymount.c, lanciato con l’opzione -h stampa una breve spiegazione, i vari mount flags si specificano con una lista di nomi seprati da virgole per l’opzione -f. I nomi sono quelli dei corrispondenti flag MS_* togliendo il suffisso MS_ e mettendoli in minuscolo. Il programma è stato anche un buon esercizio sulle funzioni di ricerca sulle stringhe della glibc.

Revisione terzo capitolo

La revisione del terzo capitolo sulle funzioni di gestione dei processi è stata completata.

Si è aggiornata la parte sull’ordine di esecuzione dei processi dopo una fork, si sono aggiunti brevi cenni e i relativi rimandi al numero di argomenti che si possono passare con una exec, si è aggiornata la trattazione di nice con le differenza introdotte nelle ultime versioni dello scheduler, in particolare riguardo le time slice,e si sono trattate tutte le macro per la gestione dei CPU set.

La trattazione della system call clone e la parte finale del capitolo con le funzioni avanzate è ancora incompleta.

Rivisti i capitoli 1 e 2

La revisione dei primi due capitoli della guida è stata completata. In particolare il secondo capitolo ha visto una serie di risistemazioni con l’accorpamento e la ristrutturazione di alcune sezioni. Si è spiegata con maggior dettaglio la differenza fra system call e chiamate a funzioni ed il ruolo del link-loader ed il significato di variabili automatiche, globali, statiche ecc.

Si è migliorata la sezione sulla allocazione della memoria con delle correzioni ad alcune imprecisioni ed una più chiara esposizione del layout della memoria di un processo, si sono aggiornate le sezioni sulle funzioni variadic e le variabili di ambiente. La sezione sulla localizzazione resta incompleta.

Inizio revisione

Approfittando delle ferie natalizie ho iniziato la revisione della Guida per renderla stampabile in formato Crown Quarti (quello dei testi della OReilly, tanto per fare un esempio) e cercare di migliorare anche alcune formattazioni (in particolare quelle dei riquadri delle funzioni) e sistemare una serie di macro Latex.

Per questo motivo fin tanto che la revisione sarà in corso si potranno avere errori di compilazione e una formattazione incoerente dei contenuti utilizzando la versione scaricabile da SVN.

This work by Simone Piccardi is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported.