
La "vita'' dei file in un sistema GNU/Linux
Il file system è soggetto a mutamenti continui e in costante evoluzione ma il kernel sa sempre cosa accade e agisce di conseguenza. Scopri come
(pagina 1 di 13)
Il concetto di file è fondamentale in tutti
i sistemi operativi. In particolare lo è
in quelli Unix, o derivati come GNU/
Linux. In pratica, rappresenta l’entità
fondamentale attraverso la quale il sistema
riesce ad eseguire le operazioni fondamentali.
È ovvia, quindi, la necessità di dover
monitorare in tempo reale i file, tracciandone
i cambiamenti per poi poter agire di conseguenza.
Ad esempio, per un software di ricerca come Beagle
questo aspetto è fondamentale. Immaginate cosa succederebbe
se ogni volta che un file presente all’interno del file system subisce
una modifica il programma dovesse indicizzare nuovamente
tutto il contenuto del disco. Sarebbe uno spreco inutile di tempo
e risorse. Ma per fortuna, il sistema operativo dispone di uno
strumento in grado di “intercettare” i cambiamenti e comunicarli
tempestivamente ai programmi. In particolare, nel caso del kernel
Linux esiste da tempo una prima soluzione chiamata dnotify
per la gestione di questo aspetto; dnotify ha però delle grosse
limitazioni, infatti, è ancora presente nel kernel solo per garantire
il buon funzionamento di vecchi
programmi e di parti del kernel stesso
che ne fanno ancora uso. Oggi la scelta
d’elezione per questo tipo di problematica
è inotify ovvero il nuovo
sistema di notifica automatica degli
eventi che subiscono i file. Inotify
è incluso nel kernel dalla versione
2.6.13 in poi; senza entrare troppo nel
dettaglio elenchiamo alcune importanti differenze tra dnotify e
inotify e i principali vantaggi dell’utilizzo di quest’ultimo:
- inotify non richiede che il file da controllare sia aperto e ciò, oltre a
ridurre il numero dei cosiddetti file descriptor utilizzati e mantenerlo
al di sotto dei limiti di sistema, permette di monitorare anche i file su
supporti removibili senza impedirne l’eventuale rimozione;
- con inotify il kernel non si serve dei segnali per comunicare i
cambiamenti sui file ma li notifica utilizzando un particolare file
descriptor. Questo facilita la gestione in tempo reale degli eventi, in
generale difficoltosa tramite i segnali ma agevole se si possono usare
le system call (chiamate di sistema) di tipo select e poll;
- inotify permette di monitorare il singolo file (la “ i” sta per inode)
mentre la granularità di dnotify non va oltre la directory (la “d” indica
directory) costringendo il programmatore a costruirsi un meccanismo
di cache per individuare il file coinvolto nel cambiamento.
L’argomento come potete vedere è abbastanza complesso, ma è
fondamentale capirne la dinamica per comprendere il funzionamento
del sistema operativo e come questo risponde agli eventi.
Commenta
Prima di pubblicare un tuo commento assicurati che:- sia in tema e contribuisca alla discussione in corso
- non abbia contenuto razzista o sessista
- non sia offensivo, calunnioso o diffamante
La redazione con i controlli a campione si riserva di cancellare qualsiasi contenuto ingiurioso, volgare, illegale o contrario alla policy.