Gestione mem. secondaria (File System)
File System Il File System è quella parte del S.O. che si occupa di gestire e strutturare le informazioni memorizzate su supporti permanenti. I dati sono logicamente organizzati in file ciascun file viene memorizzato su una opportuna porzione del supporto fisico utilizzato (ad esempio, blocchi del disco fisso) il F.S utilizza un insieme di meccanismi per gestire in modo efficiente lo spazio disponibile sui vari supporti per l archiviazione dei file.
File System - Due i compiti fondamentali - Gestione dei record fisici memorizzati nella memoria secondari - Fornisce all utente la visione logica dei file come entità indipendenti
File System Il File System deve permettere all utente di: identificare ogni file con un nome (filename) astraendo completamente dalla sua memorizzazione fisica avere un insieme di comandi per lavorare sui file: creare o rimuovere un file, copiarlo, cambiargli nome, inserire informazioni in un file avere la possibilità di organizzare un insieme di file in sottoinsiemi secondo le loro caratteristiche, per avere una visione ordinata e strutturata delle informazioni sul disco proteggere i propri file, ossia per impedire ad altri di leggerli, scriverli o cancellarli
File System Esistono molti File System diversi propri di systemi operativi differenti Windows 98 se usa FAT, FAT32 Windows NT usa NTFS Windows 2000 usa FAT32, NTFS Windows XP usa FAT32, NTFS Linux usa RaiserFS, Ext2, Ext3 e un FS proprietario per l area swap e compatibile con FAT32 Longhorn usa WinFS basato su XML (XAML) Avalle 2004
Partizionamento Suddivisione logica a basso livello dell HD Win 98/2K/Xp richiedono una sola partizione + l MBR automatico per il boot Linux richiede ROOT HOME (opz.) SWAP BOOT o MBR Altre a scelta per ogni user Avalle 2004
File System I file in un computer sono memorizzati in modo permanente sull hard disk o in altre periferiche genericamente denominate memorie secondarie Fisicamente, i file sono memorizzati in blocchi (o record fisici) di dimensione fissa variabile tra 512 a 4kB Logicamente, i file sono organizzati in una struttura ad albero che ne consente l organizzazione e suddivisione logica.
Organizzazione dei file L astrazione che permette di raggruppare logicamente un insieme di file e detta directory la directory e costituita da un insieme di file Tutti i File System forniscono funzioni per creare delle directory I nomi dei file sono locali alle directory (si possono avere più file con lo stesso nome purché siano in directory diverse)
Nomi di file e directory (cartella) Costituiti da (almeno) due parti: nome: scelto dall utente, il S.O. in genere impone dei vincoli sulla lunghezza massima (8 caratteri in DOS, 255 in Unix e Windows) e sull insieme di caratteri usabili (no punteggiatura) estensione: separata dal nome dal carattere., identifica il formato del file o l applicazione che lo ha creato Pippo.bmp indica un file immagine in formato bitmap Pippo1.doc indica un documento Word Pippo1.xls indica un documento Excel
Pathname Descrive il percorso che si deve compiere per raggiungere quel file nei diversi rami dell albero. Ossia: la successione di cartelle che si deve attraversare per raggiungere il file, a partire dalla radice del file system Nella stessa cartella non ci possono essere due file con lo stesso nome, quindi il pathname di un determinato file e sempre unico.
Pathname HARD_DISK: applicazioni elab_testi elab_immagini usr1 libro1 capitolo1 capitolo2 libro2 introduzione bibliografia biblioteca narrativa italiana libro1 libro2... straniera inglese libro1 libro2 francese tedesca saggistica...
Ricerca mediante pathname Ad esempio il file libro1.txt di narrativa italiana è univocamente identificato dalla sequenza: C:\Biblioteca\Narrativa\Italiana\libro1.txt Il file Libro1.txt nella directory Inglese è identificata dalla sequenza C:\Biblioteca\Narrativa\Straniera\Inglese \libro1.txt Il carattere \ (backslash) viene usato come separatore.
Ricerca mediante pathname Sintassi differente in Unix /Users/cgena/Document /Users/cgena/Documents/Desktop/vernice.pdf
Protezione dei file (1) Ogni utente ha un nome (login o username) che lo identifica all'interno del sistema; a tale nome è associato un codice segreto, password, che l'utente deve digitare per poter accedere al calcolatore. All'interno dell'albero dei file, ogni utente ha una directory di cui è proprietario. Egli può gestire il sotto-albero della sua directory creando e rimuovendo i file e le directory solo in questo sotto-albero. Di solito questa directory ha lo stesso nome dell'utente.
Protezione dei file (2) Per ogni file (directory) che crea, l'utente può specificare le operazioni consentite su quel file (directory); può permettere solo la lettura, solo la scrittura, sia la lettura che la scrittura. In alcuni casi gli utenti vengono suddivisi in gruppi e l utente proprietario del file può specificare quali sono le operazioni consentite ai membri del suo gruppo e quali a tutti gli altri utenti. (Gestione permessi)
File Il File System riserva una parte dell hard disk per memorizzare la device directory, una tabella che contiene un elemento per ogni file e ogni directory del file system Ogni elemento e detto file descriptor Il file descriptor di un qualsiasi file e aggiornato ogni volta che viene compiuta una operazione sul file corrispondente
File Per un file normale, il file descriptor indica: il nome del file, le date di creazione e ultima modifica, la dimensione in byte, dove si trova fisicamente sull hard disk, eventuali protezioni. Per una directory, il file descriptor indica: il nome della directory, le date di creazione e ultima modifica, l elenco dei file e delle sottodirectory contenuti nella directory (eventuali protezioni)
Allocazione Allocazione contigua allocazione sparsa linkata allocazione sparsa indexata l hard disk e suddiviso in blocchi (es., 512/4KB) Ogni blocco puo essere libero o occupato da una porzione di file. Ogni blocco e identificato da un numero: il suo indirizzo.
Allocazione contigua Il file e memorizzato in una serie di blocchi contigui l uno all altro. E facile recuperare l intero file l accesso ad ogni blocco e veloce perche si sa immediatamente dov e. Si ha uno spreco di memoria quando una sequenza di blocchi contigui non e sufficiente ad ospitare un file Se il file aumenta di dimensioni si deve riallocare il file.
Allocazione linkata (2) Nel file descriptor viene memorizzato solo l indirizzo del primo blocco del file sull hard disk L ultima parte del primo blocco contiene l indirizzo del secondo blocco del file, e cosi via per i successivi blocchi Si ha un piccolo spreco in ogni blocco per via del puntatore al blocco successivo e l accesso agli ultimi blocchi del file e lento. Se il file aumenta di dimensioni basta cercare un blocco libero sull hard disk
Allocazione linkata (1) device directory spazio di memor izzazione dei file descrittori dei file......... pippo............
Allocazione indexata (1) device directory spazio di memor izzazione dei file descrittori dei file......... pippo............
Allocazione indexata (2) Nel file descriptor viene riportato l elenco di tutti i blocchi in cui e memorizzato il file Anche l accesso all ultimo blocco del file e veloce, perche non si devono attraversare gli altri per trovarlo.
Defrag Si tratta di una utility di sistema (del file system) creata per riorganizzare l allocazione dei cluster dei file al fine di ottimizzarne la disposizione e recuperare eventuali spazi persi o non presenti in alcun file descriptor
Dispositivi di I/O - Il S.O. deve fornire la visione astratta del dispositivo e i comandi per gestirlo - Inoltre deve ottimizzare l uso dei dispositivi facendolo lavorare in parallelo al processore (Controller e Interrupt)
Dispositivi di I/O Ogni dispositivo ha una memoria privata, di solito di piccole dimensioni, nella quale il processore centrale (il sistema operativo) copia il comando di input/ output che deve essere eseguito. In alcuni dispositivi questa memoria viene anche usata come area temporanea in cui vengono inseriti i dati in ingresso/uscita.
Dispositivi di I/O due diversi tipi di dispositivi: Dispositivi a controllo di programma in cui i dati in ingresso (uscita) vengono copiati nella (prelevati dalla) memoria temporanea privata del dispositivo Dispositivi in DMA (Direct Memory Access) sono in grado di leggere e scrivere i dati direttamente nella memoria centrale.
Dispositivi di I/O All arrivo dell interrupt il processo Q in esecuzione viene fermato e messo in testa alla coda dei processi pronti; viene mandato in esecuzione il processo driver del dispositivo che ha inviato il segnale di interrupt; il driver richiede un tempo di esecuzione brevissimo (poche istruzioni macchina); il processo Q viene rimesso in esecuzione.
Dispositivi di I/O Driver - Contiene le routine e i protocolli per gestire l I/O dal dispositivo - Contiene il sw necessario per normalizzare i dati e i comandi da e verso il S.O.
Dispositivi di I/O recupera il dato letto e lo passa al processo che l'aveva richiesto; rimette nella coda dei processi pronti il processo che ha ottenuto il dato in ingresso; manda al dispositivo un nuovo comando di lettura di un dato (se qualcuno l'aveva richiesto). In questo modo sarà possibile soddisfare una nuova richiesta da parte di un qualche processo che, trovando il dispositivo occupato, era andato in attesa.
Dispositivi di I/O Il sistema operativo deve fornire un insieme di operazioni logiche per usare i dispostivi, in modo che l'utente possa completamente astrarre dalle loro caratteristiche fisiche. Queste operazioni vengono trasformate dal sistema in una sequenza di opportune operazioni a basso livello, senza che l'utente ne sia a conoscenza. Al variare del dispositivo è sufficiente cambiare la traduzione dell'operazione logica e, dal punto di vista dell'utente, non cambierà nulla.
Dispositivi di I/O Ad esempio, per stampare il contenuto di un file si può usare il comando: > print nome_file (o selezionare il comando print o stampa dall apposito menu). A questa operazione logica il sistema associa la sequenza di istruzioni corrispondenti, mandando in esecuzione il programma che realizza il comando print. Se cambia la stampante cambia anche il programma ma l'utente continuerà ad usare il comando print nello stesso modo.
Dispositivi di I/O Funzionano con politiche di scheduling non preeptive Politiche FCFS Politiche con priorità (ad es. La stampante)
Dispositivi di I/O Il disco fisso un disco è suddiviso in tracce e settori, e ogni blocco è l'intersezione tra una traccia ed un settore. Per leggere un blocco la testina deve posizionarsi, e questo comporta due tempi di attesa: il tempo di seek, cioè il tempo per raggiungere la traccia desiderata; il tempo di latency (latenza), cioè il tempo impiegato affinché nella rotazione il settore opportuno si trovi al di sotto della testina.
Dispositivi di I/O Nel disco fissosi usano delle politiche di scheduling speciali, come ad esempio la politica sector queueing. Con questa politica le richieste di operazioni di lettura e scrittura non vengono inserite in un'unica coda ma in si ha una coda per ogni settore; nella coda associata ad un settore vengono memorizzate le richieste che riguardano blocchi in quel settore. Mentre il disco gira, si seleziona come prossima operazione quella che riguarda il prossimo settore da cui si passa. Inoltre si cerca di servire la richiesta che si trova sulla traccia più vicina a quella in cui è posizionata la testina, in modo da spostarsi il meno possibile (politiche SCAN).
Interfaccia comandi <ripeti finché la macchina non viene spenta> - dai il messaggio di prompt all'ut ente - quando arriva il comando, riconoscilo e interpretalo - se è corretto esegui l 'azione corrispondente, ossia: recupera il programma corrispondente al comando e mandalo in esecuzione - se è errato dai un messaggio di errore - quando l'esecuzione è terminata ritorna all'inizio della sequenza
Interfaccia comandi - interazione testuale - interazione grafica. -il comando, -il programma che viene mandato in esecuzione per soddisfare il comando, -il file in memoria secondaria in cui tale programma è memorizzato. Si noti che, in molti casi, queste tre entità vengono identificate (solitamente, esse hanno lo stesso nome).
Interfaccia utente - Il processo (che accetta comandi utente e manda in esecuzione i programmi) viene mandato in esecuzione all'avvio della macchina e rimane sempre in attesa di comandi. Quindi per la maggior parte del tempo sarà bloccato in attesa di input dall'utente. - All'arrivo di un comando il processo va brevemente in esecuzione per effettuare il riconoscimento del comando e, in caso esso sia corretto, reperire il programma corrispondente in memoria principale oppure su un supporto di memoria secondaria. - Una volta trovato il programma da eseguire, si crea un nuovo processo cui viene demandato il compito di eseguirlo; il nuovo processo viene inserito nella coda dei processi pronti. - Viene attivato il processo che esegue il comando dell'utente; questo processo gestirà l'interazione con l'utente. - Al termine dell'esecuzione del comando il processo di sistema ritorna attivo, comunica all'utente che è pronto ad accettare un nuovo comando e si rimette in attesa.