sistema operativo architettura degli elaboratori 1 - a. memo 373 6.3 la gestione dei processi stallo...
TRANSCRIPT
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
1
6.3 La gestione dei processi 6.3 La gestione dei processi stallo 9stallo 9
soluzione correttasi utilizzano un semaforo per ogni forchetta (f[1..5]) per evitare che venga utilizzata da più filosofi, ed un semaforo per la mutua esclusione (mutex) al momento del prelievo delle forchette
void filosofo_i_esimo(){ while (1) { // medita wait(mutex); wait(f[i]); wait(f[(i+1)%5]); signal(mutex); // mangia signal(f[i]); signal(f[(i+1)%5]); }}
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
2
6.4 La gestione della memoria 6.4 La gestione della memoria generalitàgeneralità
nei SO multitasking dobbiamo far coesistere più processi nella memoria principale
il SO deve gestire la memoria– virtualizzando la dimensione della memoria fisica
ed adeguandola allo spazio logico di più processi– caricando i programmi in memoria (loader)– assegnando e recuperando la memoria ai vari
processi (allocation e de-allocation)– rimpiazzando gli spazi opportuni in base alle
richieste (replacement)– realizzando opportuni schemi di protezione
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
3
6.4 La gestione della memoria 6.4 La gestione della memoria manipolazione degli indirizzimanipolazione degli indirizzi
... ;char x = 0;... ;
filesorgente
xxxx3A
COMPILER
12B5LINKER
identificatore
indirizzorilocabile
indirizzoassolutorilocabile
C3B5
LOADER
indirizzo logico
890Eindirizzofisico
CPU/MMU
file obj
file exe
variabile swap
C:8P:1S:2
S.O.
indirizzomemoria
secondaria
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
4
6.4 La gestione della memoria 6.4 La gestione della memoria loader 1loader 1
caricamento dinamico– al fine di minimizzare l’occupazione di
memoria, si carica solo la parte necessaria del programma, e poi si attivano swap opportuni
linking dinamico– caricamento dinamico delle librerie alla loro
occorrenza (Dynamic Link Libraries o Shared Object)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
5
6.4 La gestione della memoria 6.4 La gestione della memoria loader 2loader 2
overlay– divisione del programma tra moduli che devono
risiedere sempre in memoria e moduli autonomi che svolgono funzioni specifiche
– caricamento stabile dei moduli fissi e caricamento alternato dei moduli specifici
– adottato nei SO che non adottano il principio della memoria virtuale, la gestione è a carico dell’applicazione
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
6
6.4 La gestione della memoria 6.4 La gestione della memoria allocazione della memoria 1allocazione della memoria 1
a singola partizione– la memoria è condivisa tra l’unico programma
utente ed il SO– per evitare conflitti si utilizzano due registri:
base, utilizzato anche per la rilocazione, che punta all’inizio dell’area di memoria del proceso utente, e limite, che contiene la dimensione massima dello spazio utente
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
7
6.4 La gestione della memoria 6.4 La gestione della memoria allocazione della memoria 2allocazione della memoria 2
S.O.
utente
CPU
IL<limite?
base
limite
+
Indirizzo Logico
Indirizzo Fisico
NO
SI
indirizzoillegale
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
8
6.4 La gestione della memoria 6.4 La gestione della memoria allocazione della memoria 3allocazione della memoria 3
a partizioni multiple– la memoria è condivisa da più programmi utente
e dal SO– ad ogni processo viene assegnata una partizione
fissa, di dimensione prestabilita (molto poco efficiente) o in base alle esigenze del processo
– si inducono problemi analoghi a quelli della paginazione (tecniche di allocazione e fram-mentazione interna) (compattazione)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
9
6.4 La gestione della memoria 6.4 La gestione della memoria allocazione della memoria 4allocazione della memoria 4
paginazione– tecnica già affrontata nell’analisi delle CPU
perché la tendenza è di gestirne il meccanismo sempre più con modalità hardware (più veloci)
– si divide la memoria in blocchi di dimensioni uguali (frame in memoria fisica, page in memoria logica)
– ai processi vengono assegnate le pagine necessarie, anche non consecutive
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
10
6.4 La gestione della memoria 6.4 La gestione della memoria allocazione della memoria 5allocazione della memoria 5
paginazione (segue)– l’indirizzo si scompone in due campi, e la
traduzione da PageL a PageF avviene mediante una page table, normalmente implementata tramite TLB
– nella page table si possono aggiungere anche bit per la protezione
– la paginazione permette anche la condivisione in sola lettura (programmi condivisi e dati distinti)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
11
6.4 La gestione della memoria 6.4 La gestione della memoria allocazione della memoria 6allocazione della memoria 6
segmentazione– la memoria è vista come un insieme di segmenti di
diverse dimensioni– un indirizzo è composto dall’indirizzo di inizio del
segmento (o da un indice che lo identifica) e dall’offset del dato dentro al segmento
– la traduzione da indirizzo logico (segmento più offset) in indirizzo fisico avviene mediante tabelle, normalmente complete di bit di protezione
– si induce frammentazione esterna
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
12
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 1memoria virtuale 1
già trattata nell’analisi delle CPU– consente di eseguire programmi più grandi della
memoria fisica a disposizione– consente di caricare in memoria solo le parti più
utilizzate del programma– è più facile da programmare rispetto agli overlay o
tecniche analoghe perché indipendente dal sistema– aumenta il tasso di multitasking della CPU
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
13
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 2memoria virtuale 2
può essere implementata sia tramite demand paging che con demand segmentation
demand paging– un processo è costituito da un insieme di pagine
poste in memoria secondaria e solo quella necessaria è presente anche in memoria principale
– si può anche tentare di prevedere quali saranno le prossime pagine ed anticiparne il caricamento
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
14
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 3memoria virtuale 3
demand paging (sequenza operativa)– dato l’indirizzo logico, mediante funzione di
traduzione si perviene all’indirizzo fisico– si controlla il bit di validità nella tabella:
se bit=1 vuol dire che la pagina è in memoria principale, e quindi si procede al recupero del dato
se bit=0 la pagina è su disco, e si produce page fault
– si controlla se l’operazione richiesta è consentita in caso contrario viene ancora prodotto un page fault
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
15
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 4memoria virtuale 4
demand paging (page fault)– se è dovuto ad accesso illegale, il processo viene
fatto terminare e le sue pagine rilasciate– altrimenti si cerca un frame libero
se cè’ lo si alloca se non c’è, si rimpiazza uno già utilizzato (replacement)
eventualòmente salvando le pagine modificate (dirty bit)
– si aggiorna la page table in base al nuovo stato– si riparte dall’istruzione che ha causato il page fault
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
16
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 5memoria virtuale 5
demand paging (politiche di rimpiazzo 1)– FIFO, First In First Out, implementata con una
lista degli ingressi o con l’orario di arrivo (?), facile ma poco efficiente
– LRU, Least Recently Used, si sostituisce la pagina che è rimastata inutilizzata da più tempo, richiede l’orario dell’ultimo impiego (?); si adottano tecniche più semplici quali il contatore di accessi alla pagina (LFU) o tramite stack
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
17
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 6memoria virtuale 6
demand paging (politiche di rimpiazzo 2)– LRU a bit di accesso, ad ogni accesso si setta
il bit relativo alla pagina, e periodicamente si azzerano tutti i bit, semplice ma inefficace
– LRU a bit multipli di accesso, invece di azzerarli, i bit di accesso vengono memorizzati in un byte shiftando il contenuto preesistente (rappresenta una storia della pagina negli ultimi 8 cicli di clock)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
18
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 7memoria virtuale 7
demand paging (assegnazione dei frame)– all’avvio di un processo vanno attribuiti allo
stesso un certo numero di frame– il numero di frame posseduti influenza la
probabilità di page fault– vengono attribuiti in base alla priorità del
processo ed alla sua dimensione– il rimpiazzo di una pagina è bene venga
limitato ai frame posseduti da quel processo
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
19
6.4 La gestione della memoria 6.4 La gestione della memoria memoria virtuale 8memoria virtuale 8
demand paging (working-set model)– se le pagine richieste in una certa attività sono
note a priori (working-set). possono essere caricate preventivamente, al fine di eliminare o minimizzare i page fault
– è il SO che memorizza i working-set delle applicazioni in uso e li riutilizza alla prossima esecuzione
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
20
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O generalità 1generalità 1
la gestione dell’I/O è la parte più monotona, meno impegnativa e più consistente dei SO
i dispositivi di I/O sono molto diversi tra di loro come modalità d’uso e prestazioni:
dischi (a livello logico, come estensione della me- moria principale, sono anche una risorsa)terminali video (testuali o grafici)dispositivi d’ingresso (tastiera, mouse, bar reader)stampanti nastri magnetici schede di rete
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
21
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O generalità 2generalità 2
l’obiettivo dei moderni SO è di gestire con le medesime modalità, ove possibile, tutti i dispositivi di I/O
l’organizzazione generale prevede almeno tre componenti:– il gestore della risorsa– il controllore della risorsa– la risorsa
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
22
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O generalità 3generalità 3
risorsa
processiutente
richiestautilizzo verifica
accesso
Gestore della risorsa
azionielementari
devicedriver
controlloredella risorsa
risultatoutilizzo
accessonegato
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
23
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O gestore della risorsagestore della risorsa
i compiti del gestore della risorsa sono:– verificare se il processo richiedente ha i diritti
necessari per effettuare l’operazione richiesta– accodare la richiesta nella coda delle richieste e
predisporre gli eventuali ed opportuni buffer– scomporre le richieste pervenute nelle singole
attività necessarie, passando dalla visione astratta e generalizzata della risorsa a quella reale
– utilizzare il driver della risorsa per accedervi– intercettare e gestire le interruzioni della risorsa
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
24
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O controllore della risorsacontrollore della risorsa
il controllore della risorsa, il più delle volte implementato con dispositivi hardware programmabili, deve– pilotare direttamente l’interfaccia della risorsa,
accedendovi a livello fisico– è quasi sempre dipendente dal particolare tipo
di dispositivo di I/O gestito e qundi totalmente privo di standard
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
25
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O esempio: lo spoolingesempio: lo spooling
la stampante è una delle periferiche di uscita più lente e con tempi di risposta altamente variabili
fa normalmente uso di un buffer di stampa, ma inevitabilmente presenta un comporta-mento a burst
Simultaneous Peripherical Operation On Line (SPOOL) sostituisce il buffer con un file in memoria secondaria
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
26
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O esempio: il disco magneticoesempio: il disco magnetico
ammettendo una coda di richieste, è utile schedularle secondo politiche appropriate:
FCFS, First Come First Served, esegue le richieste così come sono arrivate
SSTF, Shortest Seek Time First, si esegue prima la richiesta più vicina
SCAN, si eseguono le richieste più vicine, mantenendo la direzione di scansione
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
27
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O disco: politica FCFSdisco: politica FCFS
0 5 10 15 20 25 30 35 40
TFCFS = 4 + 2 + 22 + 32 + 15 = 75
molto semplice ma poco efficiente
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
28
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O disco: politica SSTFdisco: politica SSTF
0 5 10 15 20 25 30 35 40
TSSTF = 2 + 2 + 7 + 15 + 32 = 58
efficiente, ma usura maggiormente i cilindri centrali
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
29
6.5 La gestione dell’I/O 6.5 La gestione dell’I/O disco: politica SCANdisco: politica SCAN
0 5 10 15 20 25 30 35 40
TSCAN = 3 + 17 + 22 + 2 + 8 = 52
efficiente e con trattamento paritetico
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
30
6.6 File system e protezione 6.6 File system e protezione generalitàgeneralità
Il File System (FS) garantisce l’accesso e l’organizzazione della memoria secondaria
il FS permette di vedere più dischi fisici come lo stesso volume logico oppure più volumi logici sullo tsesso disco fisico
la sua gestione si integra facilmente con quella della protezione e della sicurezza
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
31
6.6 File system e protezione 6.6 File system e protezione filefile
un file è un’insieme di informazioni caratterizzate da un nome comune e memo-rizzate in memoria secondaria
è una struttura logica mappata in un dispositivo fisico
il formato viene scelto alla sua creazione le caratteristiche dei file sono:
attributi strutturaoperazioni ammesse
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
32
6.6 File system e protezione 6.6 File system e protezione attributi 1attributi 1
gli attributi che caratterizzano un file sono– nome (da 8 a 256 caratteri, case sensitive o no)– estensione o tipo (eseguibile, oggetto, sorgente)– dimensione– istanti di creazione e modifica– parentela (processo padre ed eventuali figli)– schemi di protezione (lettura, scrittura, modifica)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
33
6.6 File system e protezione 6.6 File system e protezione attributi 2attributi 2
Protezione Chi e come può accedere ad un file
Password Codice necessario per accedere al file
Creator ID dell’utente che ha creato il file
Owner utilizzatore corrente del file
Read-only flag 0 - lettura/scrittura 1 - sola lettura
Hidden flag 0 - normale 1 - non visibile
System flag 0 - normal e 1 - file di sistema
Archive flag 0 - salvato (back up) 1 - non salvato
ASCII/binary flag 0 - ASCII 1 - binario
Random access flag 0 - sequenziale 1 - casuale
Temporary flag 0 - normale 1 - eliminare al termine
Lock flags 0 -libero n - bloccato
Record length Numero di byte in un record
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
34
6.6 File system e protezione 6.6 File system e protezione struttura 1struttura 1
Un file ha una struttura fisica composta da blocchi di dati (cluster), mentre a livello logico è visto come un’insieme di byte o di record. Il SO le mette in relazione.
le possibili strutture logiche di un FS sono:– a flusso di byte– a record di lunghezza fissa– a record di lunghezza variabile
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
35
6.6 File system e protezione 6.6 File system e protezione struttura 2struttura 2
a flusso di byte (byte stream)– il SO non sa come interpretare il contenuto del
file, lo sa solo l’utente– il SO utilizza un puntatore relativo all’inizio del
file per accedere ai dati cercati– massima flessibilità per il SO
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
36
6.6 File system e protezione 6.6 File system e protezione struttura 3struttura 3
a record di lunghezza variabile– delimitati da indicatori di fine record– ogni record è contraddistinto univocamente da
una chiave– tutte le chiavi sono raccolte in una tabella a
parte, ordinata secondo la chiave, contenente anche i puntatori all’inizio del record nel file
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
37
6.6 File system e protezione 6.6 File system e protezione struttura 4struttura 4
a record di lunghezza fissa– gli spazi vuoti sono riempiti da caratteri NULL
o SPACE– il SO conosce la struttura del file– puntatore al record corrente– meno utilizzati dei precedenti
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
38
6.6 File system e protezione 6.6 File system e protezione operazioni ammesse 1operazioni ammesse 1
altre operazioni più complesse si ottengono con opportune combinazioni delle precedenti
creare un file scrivere un file leggere un file rinominare un file
posizionamento interno eliminare un file troncare un file spostare un file
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
39
6.6 File system e protezione 6.6 File system e protezione operazioni ammesse 2operazioni ammesse 2
apertura file– per accedere ad un file, bisogna prima aprirlo,
cioè far si che il SO predisponga un’opportuno strumento di accesso a quel file (handle)
– al termine dell’uso di un file, questo dovrà essere chiuso
– il SO multiutente UNIX ha una tabella dei file aperti a due livelli, nel primo ci sono le informazioni del file comuni a tutti i processi, nel secondo i dati specifici del particolare processo
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
40
6.6 File system e protezione 6.6 File system e protezione metodi di accesso ai file 1metodi di accesso ai file 1
accesso sequenziale– viene gestito un record (o un byte) alla volta– il SO utilizza un puntatore al record/byte
corrente, e ad ogni lettura lo fa avanzare– il file può essere letto solo in ordine crescente,
una rilettura richiede la ripartenza dall’inizio– ad ogni scrittura il record/byte viene aggiunto
in coda e si aggiorna il puntatore
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
41
6.6 File system e protezione 6.6 File system e protezione metodi di accesso ai file 2metodi di accesso ai file 2
accesso diretto– si può leggere un record/byte posto in posizione
qualsiasi– la posizione del record nel file è calcolata rispetto
al suo inizio (offset = 0) accesso indicizzato (ISAM)
– un file di chiavi ordinate contenente gli offset dei rispettivi record nel file, posto in RAM
– ricerca binaria sul file chiavi e poi accesso diretto
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
42
6.6 File system e protezione 6.6 File system e protezione esempio d’uso di un file in Cesempio d’uso di un file in C
#include <stdio.h>#include <stdlib.h>
#define BUF_SIZE 4096#define MODE 0666
void main(int argc, char *argv[]){ FILE *fp; char dato;
if (argc != 2) {
printf(
“Manca il nome del file.”);
exit (1);
}
if ((fp=fopen(argv[1],”w”))==NULL){
printf(“Impossibile aprire file”);
exit(1);
} do { dato = getchar(); if (EOF == putc (dato, fp)) { printf(“Errore nel file.\n”); break; }
} while (dato!=ESCAPE);
fclose(fp);
}
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
43
6.6 File system e protezione 6.6 File system e protezione file mappati in memoriafile mappati in memoria
il SO può mappare in memoria virtuale un file, cioè attribuire a quel file una data area di memoria (meglio un segmento perché preserva l’offset) e poi gestirne gli accessi come se fossero indirizzi di memoria
quando il file viene chiuso tutte le modifiche apportate nell’area di memoria vengono riportate sul file
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
44
6.6 File system e protezione 6.6 File system e protezione struttura della directory 1struttura della directory 1
Ogni volume logico contiene uno o più file ed una o più directory di file
le directory possono essere classificate in– directory a livello singolo– directory a due livelli– directory ad albero– directory a grafo aperto– directory a grafo generalizzato
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
45
6.6 File system e protezione 6.6 File system e protezione struttura della directory 2struttura della directory 2
directory a livello singolo– tutti i file sono organizzati in un’unica grande
lista, ognuno con un nome diverso– semplice da capire ed implementare, ma
difficile da gestire per il gran numero di file
NomeFile attributi puntatore dati
FILE 1 FILE 2 FILE 3 FILE 4 FILE 5 FILE 6
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
46
6.6 File system e protezione 6.6 File system e protezione struttura della directory 3struttura della directory 3
directory a due livelli– una Master File Directory contenente tante User File
Directory quanti sono gli utenti– quando un utente entra (log-in) vede solo la sua UFD– utile nei SO multiuser perché isola gli utenti– il SO per accedere ai file usa il path name– i programmi di sistema possono o essere copiati su
tutte le UFD (pessimo), o si introduce il concetto di search path e directory di sistema
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
47
6.6 File system e protezione 6.6 File system e protezione struttura della directory 4struttura della directory 4
directory ad albero– numero arbitrario di livelli– il livello superiore viene detto root level– ogni directory può contenere file o sottodirectory– ogni utente ha la sua directory corrente, che può
essere cambiata con comandi di sistema– se non si specifica il path name, è quello corrente– il path name può essere assoluto o relativo
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
48
6.6 File system e protezione 6.6 File system e protezione struttura della directory 5struttura della directory 5
/ radice
studenti docenti
Rossi Bianchi
doc prg
A2A1
misc odb
D1 D2
Esempi:directory corrente: Rossidirectory padre: ‘.’directory figlio: ‘..’il file A1 può essere chiamatodoc/A1 (relativo)/studenti/Rossi/doc/A1 il file D1 di un altro ramo (purchè abilitato):../studenti/Bianchi/odb/D1 (relativo)/studenti/Bianchi/odb/D1 (assoluto)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
49
6.6 File system e protezione 6.6 File system e protezione struttura della directory 6struttura della directory 6
directory a grafo aperto– rappresenta la generalizzazione dell’albero, in cui un
file può essere condiviso da più directory– in UNIX si utilizzano dei collegamenti simbolici tra
nome locale e quello reale; il SO potrà avere collegamenti ciclici (riferimenti circolari)
studenti
Rossi Bianchi
prgprg prg
– in altri SO si duplicano gli identificatori (handle) dei file: coerenza difficile da assicurare
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
50
6.6 File system e protezione 6.6 File system e protezione operazioni con le directoryoperazioni con le directory
create dir crea una nuova sottodirectory delete dir elimina una sottodirectory change dir cambia la directory corrente rename dir cambia nome alla sottodirectory link /unlink crea/annulla collegamenti
simbolici
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
51
6.6 File system e protezione 6.6 File system e protezione implementazione del file system 1implementazione del file system 1
i dischi vengono letti e scritti a blocchi (cluster)
ogni blocco è composto da uno o più settori caricamento del File System (mounting)
– il SO inserisce il dispositivo specificato nel punto indicato della directory corrente
– in UNIX può avvenire in run time
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
52
6.6 File system e protezione 6.6 File system e protezione implementazione del file system 2implementazione del file system 2
File System logico
organizzazione dei file
File System fisico
Device driver
Disk driver e controller
tabella deifile aperti
dai comandi di altolivello (API del SO) a quellidi basso livello (hardware)
dalle informazionisimboliche
all’allocazione logicadai blocchi logici diun file a quelli fisici
lettura/scritturadei blocchi fisici
hardware controllabilee programmabile
mappaallocazione
bufferd’accesso
parametriconfig.
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
53
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 1implementazione dei file 1
allocazione contigua– memorizzazione dei file in blocchi fisici consecutivi
– un file è identificato dall’indirizzo del primo blocco e dal numero di blocchi utilizzati
– supporta l’accesso sequenziale e diretto, ha ottime prestazioni (una sola operazione di I/O)
– induce frammentazione interna ed esterna (eliminabile con la compattazione), richiede la conoscenza anticipata della dimensione massima
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
54
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 2implementazione dei file 2
allocazione a lista concatenata– un file è rappresentato da una lista concatenata di
blocchi fisici– nella directory il file è caratterizzato dal puntatore al
primo blocco ed in alcuni SO anche all’ultimo – i blocchi dei file contengono il puntatore al blocco
successivo (o NULL) e poi i dati– la lettura sequenziale è semplice, quella diretta più
complessa– si induce frammentazione interna e l’affidabilità della
lista rappresenta un problema
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
55
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 3implementazione dei file 3
File Allocation Table (MS DOS e successivi)
tabella ordinata di puntatori, uno per ogni blocco del disco0 blocco libero N blocco successivo
del fileEOF ultimo blocco del
file tutta o parte della FAT deve
essere copiata in RAM permete l’accesso diretto
00
01
42
03
54
65EOF6
07
FILE_1
2
vuoti
456
FAT
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
56
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 4implementazione dei file 4
allocazione a lista indicizzata– una lista di puntatori ai blocchi affianca la
directory– quando si crea un file si aggiunge il descrittore
relativo nella directory e si crea un blocco indice, con tutti i puntatori a NULL
– tutti gli accessi contemplano un’operazione di ricerca su blocco indice e poi un accesso diretto al blocco contenente i dati cercati
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
57
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 5implementazione dei file 5
allocazione a lista indicizzata (segue)
– non c’è frammentazione esterna, non è richiesta la dimensione massima, implementa accessi sequenziali e diretti
– per file molto piccoli un blocco indice è sprecato– per file molto grandi si possono concatenare più
blocchi indice, o organizzarli a più livelli gerarchici
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
58
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 6implementazione dei file 6
allocazione a nodi indice (i-node)– ad ogni file viene associata una tabellina contenuta in un
blocco, detta i-node, che contiene gli attributi del file ed i puntatori ai blocchi del file relativo
– file piccoli: gli indirizzi dei blocchi contenenti i dati sono memorizzati direttamente in un numero contenuto di campi dell’i-node
– file medi: oltre agli indirizzi precedenti, c’è un campo che punta ad un single indirect node posto in un blocco
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
59
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 7implementazione dei file 7
% segue
– file grandi: oltre a quanto visto, un campo punta a un livello di blocchi intermedio che a loro volta puntano ai blocchi diretti dei dati
– file molto grandi; si può arrivare a tre livello di reindirizzamento
– la struttura di i-node deve essere salvata inizialmente in memoria, per una più rapida consultazione
– viene utilizzata in UNIX
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
60
6.6 File system e protezione 6.6 File system e protezione implementazione dei file 8implementazione dei file 8
gestione dei blocchi vuoti– vettore di bit, ogni bit indica lo stato del blocco
relativo, 0 = libero, 1 = occupato– lista concatenata, sfruttando i campi puntatore
al successivo
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
61
6.6 File system e protezione 6.6 File system e protezione implementazione delle directory 1implementazione delle directory 1
la funzione delle directory è quella di suddividere lo spazio fisico della memoria secondaria in più aree logiche distinte, e l’obiettivo della loro implementazione è quello di correlare la stringa ASCII del nome del file alle informazioni necessarie al recupero di quel file
le directory possono essere implementate con– liste lineari ad uno o più livelli– ricorrendo a tabelle di hash
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
62
6.6 File system e protezione 6.6 File system e protezione implementazione delle directory 2implementazione delle directory 2
lista lineare– ogni elemento della directory rappresenta un file
(o una sottodirectory) caratterizzato dal suo nome e dai relativi attributi
– non c’è un ordine specifico, ed i tempi di ricerca sono elevati
tabella di hash– c’è ancora una lista lineare, ma mediante una
tabella dei nomi e dei puntatori ai relativi elementi della lista, l’accesso è velocizzato
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
63
6.6 File system e protezione 6.6 File system e protezione implementazione delle directory 3implementazione delle directory 3
• Directory gerarchica a più livelli.• campi della directory a 32 bit:
1 Nome file: 8 bytes 5 Orario: 2 bytes2 Estensione file 3 bytes 6 Data: 2 bytes3 Attributi: 1 byte 7 Primo blocco: 2 bytes4 riservati: 10 bytes 8 Dimensione: 4 bytes
Orario (unsigned a 16 bit): Data (unsigned a 16 bit):2048*Ore [2048*24=41.184] 512*(anno-1980) = 1980-210832*minuti [32*60=1920]32*mese [32*12=384]0,5*secondi [60/2=30] 1*giorno [31]
1 2 3 4 5 6 7 8
Riservato per sviluppi futuri
MS-DOS
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
64
6.6 File system e protezione 6.6 File system e protezione UNIX - file system 1UNIX - file system 1
Il file system di UNIX è composto da 4 elementi: boot block (blocco 0)
– non sempre usato, contiene il programma di boot superblock (blocco 1)
– informazioni sulla struttura del file system (numero di i-node, numero di blocchi sul disco, inizio della free list, flag di modifica e di bloccaggio ...)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
65
6.6 File system e protezione 6.6 File system e protezione UNIX - file system 2UNIX - file system 2
lista degli i-node (a partire dal blocco 2)– contiene un i-node per ogni file
– ogni i-node occupa 64 Byte e la lista ne può contenere 65.535
– un i-node contiene informazioni sul file relativo (processo utilizzatore, protezioni, orario dell’ultimo accesso e modifica, dimensione, indirizzi per localizzare i blocchi contenenti i dati del file, ...)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
66
6.6 File system e protezione 6.6 File system e protezione UNIX - file system 3UNIX - file system 3
blocchi di dati, contenenti– la directory radice– tutte le sottodirectory e la loro organizzazione– la lista dei blocchi liberi su disco– i blocchi di primo, secondo e terzo livello di
reindirizzamento dei vari file presenti– un file può occupare anche blocchi non contigui
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
67
6.6 File system e protezione 6.6 File system e protezione UNIX - elemento di directoryUNIX - elemento di directory
un elemento di directory è composto da:
– numero dell’i-node relativo al file (2 byte)– nome del file (stringa ASCII da 14 byte max)
una directory viene memorizzata in un blocco del disco, e contiene i nomi dei suoi file ed i puntatori ai relativi i-node
in un blocco da 1Kbyte si possono inserire 64 elementi di directory (da 16 byte ciascuno)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
68
6.6 File system e protezione 6.6 File system e protezione affidabilità del file system 1affidabilità del file system 1
gestione dei blocchi danneggiati– hardware, creando in un settore del disco un
elenco di blocchi danneggiati ed i loro sostituti– software, ricorrendo ad un falso file che
utilizza tutti i blocchi danneggiati salvataggio del file system
– su nastro, tempi lunghi, possibilità incrementale– su disco, con partizione di backup o RAID,
Redundant Array of Inexpensive Disks
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
69
6.6 File system e protezione 6.6 File system e protezione affidabilità del file system 2affidabilità del file system 2
consistenza del file system– un file viene aperto, modificato e poi salvato; se il sistema
cade tra la modifica ed il salvataggio, il file risulta essere inconsistente
– consistenza dei blocchi: si producono due liste, un contatore per ogni blocco; la lista dei blocchi in uso dei file e la lista dei blocchi liberi. consistenza: ciascun blocco appartiene ad una sola lista perdita: il blocco non appartiene ad alcuna lista duplicazione: il contatore del blocco è maggiore di 1 in
una delle due liste– consistenza dei file: analogo per i file
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
70
6.6 File system e protezione 6.6 File system e protezione prestazioni del file system 1prestazioni del file system 1
data la lentezza dell’accesso ai dischi, si interpone tra memoria principale e secondaria un buffer (organizzato come una cache) della dimensione di alcuni blocchi
quando il buffer è pieno si possono adottare politiche di rimpiazzo analoghe alla paginazione (LRU)
c’è il problema della scrittura e della consistenza dei dati: per i blocchi i-nodes o di indirizzamento indiretto si aggiorna il disco molto frequentemente
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
71
6.6 File system e protezione 6.6 File system e protezione prestazioni del file system 2prestazioni del file system 2
UNIX adotta la chiamata automatica di SYNC ogni 30 secondi circa
MS-DOS adotta la politica write-through (più lenta, meno efficace, si può togliere un FD in qualsiasi momento)
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
72
6.6 File system e protezione 6.6 File system e protezione sicurezza: generalitàsicurezza: generalità
la multiutenza e la multiprogrammazione condividono le risorse: occorre evitare utilizzi non autorizzati
protezione– meccanismi di salvaguardia delle risorse dai
malfunzionamenti sicurezza
– impedire l’uso non autorizzato (volontario o meno) di risorse
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
73
6.6 File system e protezione 6.6 File system e protezione sicurezza: intrusionisicurezza: intrusioni
intrusi passivi, leggono file a loro negati intrusi attivi, apportano modifiche non
consentite a file classificabili in
– intrusi di passaggio, casuali– intrusi a scopo di curiosità (interni al sistema)– intrusi a scopo di lucro– intrusi a scopo di spionaggio
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
74
6.6 File system e protezione 6.6 File system e protezione sicurezza: esempio di difettosicurezza: esempio di difetto
lpr (UNIX)– il comando lpr stampa un file e, se attivata
l’opzione -r, il file viene successivamente rimosso: si poteva lanciare la stampa del file delle password e poi farlo eliminare, rendendo accessibile l’intero sistema
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
75
6.6 File system e protezione 6.6 File system e protezione sicurezza: esempi di attacchisicurezza: esempi di attacchi
richiedere pagine di memoria, aree di dati o blocchi di disco: molti SO non le cancellano prima di riutilizzarle
effettuare chiamate di sistema con parametri errati o incoerenti: molti SO non prevedono tutti i casi possibili
digitare DEL, BREAK o simili all’interno della password: il SO potrebbe chiudere il programma di test e considerare valido il login
Sistema Operativo Architettura degli elaboratori 1 - A. Memo
76
6.6 File system e protezione 6.6 File system e protezione sicurezza: virussicurezza: virus
segmento di codice aggiunto ad un programma con l’obiettivo di replicarsi su altri programmi
virus di boot, attivati durante la fase di avvio si collegano alle chiamate di sistema ed infettano tutto il sistema
virus di file, presenti in fle eseguibili virus di macro virus polimorfi