TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
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.
Nome e Cognome
E-mail
Commento
Digita i caratteri che vedi nell'immagine qui sopra


Tag: file system, linux, kernel, udev, sistema di notifica, inotify, applicazione logsend, utility incron
Condividi