File System A. Ferrari File System Il file system è la parte del Sistema Operativo che permette la gestione delle informazioni memorizzate in modo permanente (i file sui vari sistemi di memorizzazione di massa). I file system possono essere rappresentati sia graficamente tramite file browser sia testualmente tramite shell testuale. Nella rappresentazione grafica (GUI) è generalmente utilizzata la metafora delle cartelle che contengono documenti (i file) ed altre sottocartelle. Hard disk Un disco rigido, anche chiamato disco fisso o hard disk drive (abbreviazioni comuni: "hard disk", "HDD"), è un dispositivo di memoria di massa che utilizza uno o più dischi magnetici per l'archiviazione dei dati. Il disco rigido è una delle tipologie di dispositivi di memoria di massa attualmente più utilizzate. È infatti presente nella maggior parte dei computer. L’Hard disk ha una velocità di un milione di volte inferiore a quella della memoria principale. Disco a stato solido Un'unità a stato solido o drive a stato solido, in sigla SSD (Solid-State Drive), talvolta impropriamente chiamata disco a stato solido, è una tipologia di dispositivo di memoria di massa che utilizza memoria a stato solido (in particolare memoria flash) per l'archiviazione dei dati. La totale assenza di parti meccaniche in movimento porta diversi vantaggi, di cui i principali sono: rumorosità assente; minore possibilità di rottura; minori consumi durante le operazioni di lettura e scrittura; tempo di accesso ridotto: si lavora nell'ordine dei decimi di millisecondo; il tempo di accesso dei dischi magnetici è circa 50 volte maggiore, attestandosi invece sui 5 millisecondi; maggiore resistenza agli urti; maggiore durata: i dischi a stato solido hanno mediamente un tasso di rottura inferiore a quelli degli hard disk. minore produzione di calore; Altre memorie di massa Dischi RAID RAID (Redundant Array of Independent Disks, in italiano insieme ridondante di dischi indipendenti), è un sistema informatico che usa un gruppo di dischi rigidi per condividere o replicare le informazioni. I benefici del RAID sono di aumentare l'integrità dei dati, la tolleranza ai guasti e le prestazioni, rispetto all'uso di un disco singolo. Nel suo livello più semplice, il sistema RAID permette di combinare un insieme di dischi in una sola unità logica. In questo modo il sistema operativo gestisce i differenti dischi come un unico volume. RAID è tipicamente usato nei server, e di solito è implementato con dischi di identica capacità. Con il calo del costo dei dischi rigidi e con il diffondersi della tecnologia RAID nei chipset delle schede madri, il RAID è spesso offerto come opzione sia sui computer di fascia alta sia su quelli usati da utenti domestici, specialmente se dedicati a compiti che richiedono un grande immagazzinamento di dati, come il montaggio audio e video. file e directory Organizzazione del file system come albero: la directory di livello più alto è la radice, i file sono le foglie. Ogni singolo file è univocamente individuato dal percorso (pathname) che lo connette alla radice. Operare coi file Operazioni: navigazione nell’albero delle directory ricerca elencazione eliminazione ridenominazione copia o spostamento Per il SO i file sono semplici sequenze di byte (byte stream) che vengono poi opportunamente interpretate dai programmi applicativi. Sicurezza Il Sistema Operativo deve garantire la il controllo dell’accesso ai file e alle directory. Gli utenti privi di specifici privilegi non hanno la possibilità di leggere, scrivere, creare, eliminare, rinominare i file. Tipi di file Estensione (caratteri che seguono l’ultimo . nel nome del file) Formato (codice identificativo – magic number – memorizzato nei primi byte del file) Magic number I magic number sono nati negli ambienti Unix per identificare il formato dei file. Oggi la maggior parte dei formati del file hanno un magic number, costituito da un numero di byte variabile (solitamente da 2 a 10). Esempi I file immagine GIF cominciano sempre con la stringa ASCII GIF87a o GIF89a Le classi Java compilate hanno il magic number CAFEBABE, espresso in notazione esadecimale. Probabilmente è un altro riferimento al caffè che di Java è simbolo e nome e all'ipotetica cameriera che lo serve. I file ZIP cominciano tutti per PK (in esadecimale 50 4B), dalle iniziali del nome dell'ideatore Phil Katz. Hard disk I dischi fissi magnetici hanno una superfice magnetizzata ed una testina magnetica collegata al sistema mediante un braccio mobile ad alta velocità che si posiziona sul disco nelle operazioni di scrittura, lettura e cancellazione. La superficie del disco viene sottoposta ad operazioni di smagnetizzazione e rimagnetizzazione, tramite impulsi elettrici, per creare blocchi negativi/positivi per la memorizzazione dei dati in codice binario. Storia L'hard disk è stato inventato nel 1956 dall'IBM. Il primo prototipo era costituito da 50 dischi del diametro di 24 pollici (circa 60 cm) e poteva immagazzinare circa 5 megabyte di dati. Era grande quanto un frigorifero, con un peso di oltre una tonnellata. Il primo modello per personal computer fu il Seagate ST506 prodotto da Seagate Technology nel 1980, aveva una capacità di 5 MB, diametro di 5,25 pollici File-system su disco I dischi attuali sono formati da più piatti impilato sullo stesso asse e sono presenti più testine di lettura/scrittura l disco è suddiviso in tracce che a loro volta sono divise in settori Il settore è la più piccola unità di memorizzazione fisica presente sul disco La dimensione dei dati di un settore è sempre una potenza di due, ed è quasi sempre 512 byte Cluster I settori vengono raggruppati logicamente in cluster (blocchi di dati) per favorire la memorizzazione dei file di grandi dimensioni Ogni operazione di lettura/scrittura interessa un intero cluster Memorizzazione dei file su disco Per evitare grossi problemi di frammentazione non è necessario che i file siano memorizzati in blocchi contigui L’elevato numero di blocchi per file di grande dimensione rende impossibile memorizzare tabelle di allocazione per ogni file Blocchi concatenati Una prima soluzione (ora non più implementata) consisteva nel collegare i blocchi in sequenza: alla fine di ogni blocco veniva memorizzato il riferimento al blocco successivo. Altamente inefficiente per file di grandi dimensioni Indicizzazione ad albero Compromesso tra l’impraticabilità di indicizzazione di tutti i blocchi e l’inefficienza della concatenazione dei blocchi Nella tabella che rappresenta la directory per ogni file sono memorizzati i riferimenti a un numero limitato di blocchi Per file di grandi dimensioni gli ultimi blocchi conterranno riferimenti a blocchi “indice” Indicizzazione file piccoli file grandi File molto grandi Blocchi liberi Per la gestione dei blocchi liberi è possibile utilizzare la concatenazione Non è necessario accedere ad uno specifico blocco, si deve gestire l’allocazione di un nuovo blocco o la deallocazione Movimento testina L’esecuzione contemporanea di più processi fa sì che gli indirizzi dei blocchi siano praticamente casuali Per ottimizzare i movimenti della testina si servono le richieste alternando lo spostamento della testina nei due sensi (algoritmo dell’ascensore) Dimensione cluster Cluster di grandi dimensioni diminuiscono il numero di accessi al disco Ma non ottimizzano l’utilizzo dello spazio (spreco per cluster solo parzialmente utilizzati) Bufferizzazione Per ridurre il numero di accessi al disco vengono letti più blocchi consecutivi e memorizzati in un buffer nella RAM Le operazioni di lettura scrittura possono operare direttamente sul buffer ed essere “salvate” su disco solo al termine dell’esecuzione Integrità dei dati Journaling In un file di log vengono memorizzate le operazioni da effettuare sul file e quelle effettivamente concluse In caso di malfunzionamento è possibile sapere quali operazioni non hanno avuto successo e ripristinare uno stato consistente File-system DOS e Windows File Allocation Table (FAT) è il file system primario per diversi sistemi operativi DOS e Windows fino alla versione Windows ME. FAT è relativamente semplice ed è supportata da moltissimi sistemi operativi. E’ utilizzata soprattutto su memory card e USB device per condividere dati tra sistemi operativi diversi. Il più grande problema del File System FAT è la frammentazione. FAT32 Dimensione massima file = 4Gb Dimensione max. volume = 2Tb File-system di Windows NTFS (New Technologies FileSystem) sistema proprietario Contiene una Master File Table (MFT) che contiene le informazioni di ogni file/directory presente nel filesystem Albero degli indici dei blocchi bilanciato E’ di tipo journaling Permette di cifrare e comprimere i file in modo trasparente agli applicativi File-system Linux Linux implementa un filesystem virtuale che consente l’integrazione di diverso tipo Il più utilizzato è ext4 E’ di tipo journaling Le unità di memorizzazione sono “montate” in un unico albero