Il Sistema Operativo
Dott. Ing. Leonardo Rigutini
Dipartimento Ingegneria dell’Informazione
Università di Siena
Via Roma 56 – 53100 – SIENA
Uff. 0577233606
[email protected]
http://www.dii.unisi.it/~rigutini/
Introduzione
Introduzione
¾
Il software può essere diviso in due grandi classi:
¾ i programmi di sistema, che gestiscono le funzionalità del sistema di
calcolo
¾
¾
¾
i programmi applicativi, che risolvono i problemi degli utenti
L’insieme dei programmi di sistema viene
identificato con il nome di Sistema Operativo (SO)
comunemente
Definizione:
“Un sistema operativo è un programma che controlla l’esecuzione
dei programmi applicativi ed agisce come interfaccia fra le
applicazioni e l’hardware del calcolatore”
Scopo del sistema operativo
¾
¾
Gestione EFFICIENTE delle risorse del sistema di elaborazione
Creazione di un’interfaccia FRIENDLY tra l’uomo e la macchina
Esempio:
Il SO come gestore risorse – 1
¾
Si consideri un ristorante con un capo–cuoco (che dirige la
cucina) ed i suoi aiutanti, camerieri e clienti:
¾
¾
¾
¾
¾
I clienti scelgono un piatto dal menù
Un cameriere prende l’ordine e lo consegna al capo–cuoco
Il capo–cuoco riceve l’ordine e assegna uno o più aiutanti alla
preparazione del piatto
Ogni aiutante si dedicherà alla preparazione di un piatto, il che potrà
richiedere più attività diverse
Il capo–cuoco supervisiona la preparazione dei piatti e gestisce le
risorse (limitate) disponibili
Esempio:
Il SO come gestore risorse – 2
¾
Il capo–cuoco è il sistema operativo!
¾
¾
¾
¾
¾
I clienti sono gli utenti
Le ricette associate ai piatti sono i programmi
Il menù ed il cameriere costituiscono l’interfaccia verso il sistema
operativo (grafica e non)
Gli aiutanti sono i processi
La cucina è il computer; pentole, fornelli, etc. sono le componenti
hardware
Esempio:
Il SO come gestore risorse – 3
¾
Problemi del capo–cuoco:
Esecuzione fedele delle ricette
¾ Allocazione efficiente delle risorse esistenti (aiutanti, fornelli,
ingredienti, etc.)
¾ Coordinamento efficiente degli aiutanti
¾ Licenziamento degli aiutanti che non si comportano secondo le regole
¾
¾
Problemi del sistema operativo:
¾ Efficienza nell’uso delle risorse (processori, memoria, dischi,
etc.)
¾ Protezione nell’uso delle risorse
¾ Coordinamento dei processi
Il SO come macchina estesa – 1
Visione a strati delle componenti hardware/software che
compongo un elaboratore
Il SO come macchina estesa – 2
Il SO può essere inteso come uno strumento che virtualizza le
caratteristiche dell’hardware, offrendo all’utente la visione di una
macchina astratta più potente e più semplice da utilizzare di
quella fisicamente disponibile
In questa visione, un SO…
…nasconde a programmatori/utenti i dettagli dell’hardware e
fornisce un’interfaccia conveniente e facile da usare
…agisce come intermediario tra programmatore/utente e hardware
Parole chiave
Indipendenza dall’hardware
Comodità d’uso
Programmabilità
Funzioni del
Sistema Operativo
Il sistema operativo ̶ 1
¾
Il sistema operativo è uno strato software che opera direttamente
sull’hardware...
...isola gli utenti dall’architettura sottostante e fornisce un insieme di
funzionalità di alto livello
¾ ...permette lo svolgimento di operazioni quali la copia di un file o
l’esecuzione di un programma; opera le azioni necessarie a caricare i
programmi in memoria centrale, eseguirli, leggere e/o scrivere dati
da/su memoria di massa e periferiche
¾
¾
Il SO rende totalmente disponibile
all’utente l’hardware del calcolatore
Il sistema operativo ̶ 2
¾
Il SO può essere...
...mono−utente (tipicamente nei PC), se l’intero sistema hw/sw è
dedicato ad un singolo utente
¾ ...multi−utente,
utente quando diversi utenti condividono lo stesso
sistema hw/sw; il SO nasconde a ciascun utente la presenza degli
altri, dando l’impressione che il sistema (unità di elaborazione,
memoria, periferiche, etc.) gli sia interamente dedicato
¾
¾
¾
Il SO è un insieme di programmi molto complesso ed
articolato, soprattutto in contesto multi−utente
Per facilitarne il progetto, ed isolarne le varie componenti, il
SO è organizzato per strati funzionali, con una struttura
cosiddetta “a cipolla”
Il sistema operativo ̶ 3
¾
¾
Ciascuno strato funzionale realizza una macchina virtuale,
virtuale che
maschera le caratteristiche della macchina hardware e offre
all’utente un insieme di funzionalità
Struttura modulare: ciascun modulo esporta funzionalità verso
l’esterno e mantiene al suo interno i propri meccanismi
implementativi
at ions soft wa
plic
re
p
A
ms softwa
st e
re
Ogni macchina virtuale “sembra” più
potente della corrispondente macchina
fisica, perché offre ai suoi utenti
l’ illusione di una macchina dedicata
¾ ...tuttavia, la macchina fisica è
effettivamente condivisa fra gli
utenti
Sy
¾
Hardware
Funzioni del sistema operativo
Programmi utente
Architettura a “cipolla”
del sistema operativo;
ciascuno strato
corrisponde ad una
macchina virtuale
Interprete dei comandi
Attivazione programmi utente o di sistema
File system
Controllo e gestione degli accessi a file
Gestione delle periferiche
Gestione di ingresso/uscita da periferica
Gestione della memoria
Allocazione e gestione della memoria
Gestione dei processi
Gestione dei processi e degli interrupt
Macchina fisica
Gestore dei processi
¾
¾
¾
¾
È responsabile dell’esecuzione dei programmi da parte
dell’unità di elaborazione
In caso di SO multi−utente, deve garantire l’esecuzione
concorrente di processi multipli, decidendo a quale di essi
assegnare l’accesso e l’uso dell’unità di elaborazione
Gestisce gli interrupt provenienti dalle periferiche
Lo strato del gestore dei processi offre agli strati superiori una
macchina virtuale in cui ciascun programma opera come se
avesse a disposizione un’unità di elaborazione dedicata
Gestore della memoria
¾
¾
¾
Alloca la memoria e la ripartisce fra i vari programmi che la
richiedono
Nei SO multi−utente, è opportuno che molti programmi siano
contemporaneamente presenti in memoria centrale, per
ottenere un’esecuzione “simultanea”
Lo strato del gestore di memoria offre agli strati superiori una
macchina virtuale in cui ciascun programma opera come se
avesse a disposizione una memoria dedicata
Driver di dispositivo
¾
¾
¾
Sono responsabili delle
coinvolgono le periferiche
operazioni
di
ingresso/uscita
che
Ciascun driver è un modulo software dedicato a “guidare” una
periferica specifica: ne conosce (e ne occulta) le caratteristiche
hardware
Lo strato del gestore delle periferiche offre all’utente una versione
astratta delle periferiche hardware; l’utente ha a disposizione un
insieme di procedure standard di alto livello per leggere/scrivere
da/su periferiche, che “percepisce” come dedicate
File System
¾
¾
¾
¾
È responsabile della gestione dei file in memoria di massa;
struttura i dati in file e li organizza in directory (cartelle nel
linguaggio di MS Windows)
Windows
Fornisce all’utente un insieme di funzioni di alto livello per
operare su file e directory, mascherando le operazioni
realmente effettuate per allocare la memoria e per accedervi
in lettura/scrittura
Tramite il file system, ciascun utente può organizzarsi la
propria area di memoria e garantirne la protezione da accessi
esterni
Consente la condivisione dei file
Interprete dei comandi
¾
Consente all’utente di attivare i programmi
¾ Accede al programma, residente su memoria di massa,
tramite il file system
¾ Alloca memoria e vi carica il programma (tramite il gestore
della memoria)
¾ Attiva il processo (sfruttando le funzionalità del nucleo)
¾
Sfrutta l’organizzazione a strati del SO e può richiedere
l’esecuzione di qualsiasi funzione implementata negli strati
sottostanti
Ancora sul sistema operativo...
¾
¾
¾
I primi tre strati del SO, dedicati alla gestione dei processi, della
memoria e delle periferiche, ne costituiscono il nucleo,
nucleo o kernel
L’obiettivo del SO consiste nell’ottimizzare le prestazioni del
sistema informatico, determinando le politiche migliori di
gestione delle risorse sotto il suo controllo
Nei sistemi multi−utente, ciascun utente risente della presenza
degli altri in misura crescente con il carico complessivo del
sistema, ovvero, al crescere del numero delle richieste di
elaborazione, il sistema può diventare sovraccarico e fornire
prestazioni percepibilmente scadenti
La gestione dei
processi
La gestione dei processi − 1
¾
¾
¾
¾
Processo — un programma in esecuzione
Il processo è un oggetto dinamico, che evolve nel tempo, in
contrapposizione al programma, un oggetto statico ed invariante
nel tempo
L’unità di elaborazione che esegue i processi prende il nome di
processore
La corrispondenza tra programma e processo non è
necessariamente biunivoca: uno stesso programma eseguibile
può essere associato a più processi, ciascuno dei quali svolge
uno dei compiti richiesti dal programma
La gestione dei processi – 2
¾
¾
¾
¾
Il gestore dei processi è il modulo che si occupa del controllo,
della sincronizzazione, dell’interruzione e della riattivazione dei
programmi in esecuzione
La gestione dei processi viene compiuta secondo modalità
diverse, in funzione del tipo di utilizzo cui il sistema è rivolto
Il programma che si occupa della distribuzione del tempo di CPU
tra i vari processi attivi, decidendone l’avvicendamento, è
chiamato scheduler
Nel caso di sistemi multiprocessore, lo scheduler si occupa anche
di gestire la cooperazione tra le diverse CPU presenti nel sistema
Stato dei processi − 1
¾
Mentre viene eseguito, un processo cambia stato:
stato
¾
¾
¾
¾
¾
New:
New Il processo viene creato
Running:
Running Il processo viene eseguito
Waiting:
Waiting Il processo è in attesa di un evento
Ready:
Ready Il processo è in attesa di essere assegnato al processore
Terminated:
Terminated Il processo ha terminato la propria esecuzione
Stato dei processi − 2
¾
¾
Nell’ipotesi di un unico processore, uno solo dei processi può
essere in esecuzione ad un certo istante, cioè in stato di running
Gli altri processi sono pronti (ready) o in attesa (waiting)
I processi pronti possono venir eseguiti immediatamente: sarà lo
scheduler della CPU, in base alla sua politica di gestione dei processi,
a decidere quale dei processi pronti sarà il prossimo ad accedere alla
CPU
¾ I processi in attesa attendono, invece, il verificarsi di un evento
esterno (per esempio l’immissione di dati tramite un dispositivo di
I/O) per passare in stato di pronto
¾
Interruzioni interne − 1
¾
¾
¾
Nel corso della sua evoluzione, il processo in esecuzione può
richiedere lo svolgimento di un’operazione di ingresso/uscita che
coinvolge una periferica
¾ L’esecuzione del processo si interrompe ed il kernel del SO
diviene attivo (si esegue un processo di sistema)
La sospensione del processo in esecuzione si dice interruzione
interna:
interna il processo passa dallo stato ready allo stato waiting
L’esigenza di sospendere il processo all’atto di una richiesta di un
servizio di I/O risponde ad una logica di buona amministrazione
delle risorse
Interruzioni interne − 2
¾
¾
Infatti, vi è una notevole differenza fra i tempi di esecuzione
delle istruzioni in memoria centrale (dell’ordine delle decine di
nanosecondi) ed i tempi di esecuzione delle istruzioni di I/O
(qualche millisecondo per accesso alla memoria di massa,
qualche secondo per comandi da terminale)
La sospensione deve avvenire in modo tale che il processo possa
riprendere la propria attività, dopo l’interruzione, esattamente
dallo stesso punto e con gli stessi dati
Occorre salvare il contesto,
contesto cioè copiare il contenuto dei registri del
processore in una zona particolare di memoria, il descrittore del
processo
Prima di riprendere l’esecuzione del processo interrotto, occorre
eseguire l’operazione inversa, cioè ricopiare il contenuto del
descrittore nei registri del processore, per ripristinare il contesto
Interruzioni interne − 3
¾
Dopo il salvataggio del contesto del processo interrotto, lo
scheduler della CPU seleziona uno dei processi pronti e gli alloca
il processore
Molti processi possono essere nello stato di pronto allo stesso tempo
Il contesto del processo selezionato, in base alla politica di
scheduling, viene ripristinato, e la sua esecuzione può proseguire
dall’istruzione successiva a quella che ne aveva provocato
l’interruzione (quella puntata dal registro program counter )
¾
L’operazione complessiva di interruzione di un processo,
salvataggio del contesto, scelta di un nuovo processo dalla ready
queue (coda dei processi pronti), e ripristino del suo contesto,
prende il nome di cambiamento di contesto o context switch
Interruzioni esterne − 1
¾
¾
Le interruzioni esterne sono eventi asincroni, cioè non regolati
dal clock del processore: le operazioni dell’elaboratore si
coordinano con il mondo esterno attraverso le periferiche
Quando si verifica un’interruzione esterna, il kernel...
¾
...salva il contesto del processo attivo, che passa dallo stato di
esecuzione allo stato di pronto
¾
...richiama un proprio modulo, il gestore delle interruzioni,
interruzioni che
esegue le operazioni necessarie per far fronte alla particolare
interruzione
Interruzioni esterne − 2
¾
Esempio: Se l’interruzione segnala la presenza di dati in ingresso
da tastiera, a fronte di un’operazione di lettura richiesta dal
processo P1, il gestore delle interruzioni...
¾
...trasferisce i dati dal registro della periferica in memoria centrale
¾
...provvede a modificare lo stato del processo P1, da waiting a ready
¾
Inoltre, al termine della gestione dell’interruzione, lo scheduler
seleziona uno dei processi pronti (non necessariamente quello
sospeso dall’interruzione appena servita) e lo manda in esecuzione
Il ciclo di vita dei processi − 1
¾
¾
¾
Ogni nuovo processo entra nel sistema accedendo alla ready queue
(new → ready), e va in esecuzione (ready → running) quando viene
selezionato dallo scheduler
Un processo attivo può essere arrestato per un interrupt esterno
(running → ready)
Un processo può anche essere sospeso ⎯ preempted ⎯ dal nucleo
(running → ready), dopo un dato intervallo temporale, per garantire a
tutti i processi un uso paritario della CPU: lo scheduler sceglie quale fra
i processi pronti mandare in esecuzione
Il ciclo di vita dei processi − 2
¾
¾
Anche un’interruzione interna può causare l’arresto di un processo
(running → waiting)
Viceversa, il verificarsi dell’evento atteso da un processo fa sì che esso
passi dallo stato di attesa allo stato di pronto (waiting → ready)
Il ciclo di vita dei processi − 3
¾
Infine, un processo in esecuzione può terminare regolarmente, o essere
interrotto e terminato forzatamente dal nucleo (aborted ) per il verificarsi
di un errore
¾ Ugualmente, lo scheduler seleziona un nuovo processo dalla ready
queue
Scheduling della CPU − 1
¾
¾
Oltre ad arrestarsi a causa delle interruzioni, il processo attivo
può venire arrestato d’autorità dallo scheduler, che ha come
obiettivo quello di far eseguire ciascun processo utente entro un
tempo approssimativamente proporzionale alla sua complessità,
effettuando una ripartizione equa della risorsa CPU
Criteri di scheduling:
{
¾ Utilizzo di CPU — la CPU deve essere più attiva possibile
max
¾
{
¾
min ¾
¾
Throughput — numero di processi completati nell’unità di tempo
Tempo di turnaround — tempo di esecuzione di un processo
Tempo di attesa — tempo di attesa del processo nella ready queue
Tempo di risposta — tempo che intercorre tra la sottomissione di
una richiesta e la prima risposta prodotta
Scheduling della CPU − 2
¾
Le politiche di scheduling sono raggruppabili in due grandi
categorie:
¾
Preemptive:
Preemptive l’uso della CPU da parte di un processo può essere
interrotto in un qualsiasi momento, e la risorsa concessa ad altro
processo
¾
Non preemptive:
preemptive una volta che un processo ha ottenuto l’uso della
CPU, è unico proprietario della risorsa finché non ne decide il rilascio
Scheduling della CPU − 3
¾
Round−robin : la politica di scheduling più semplice, che consiste
nel garantire la rotazione nell’esecuzione dei processi
Lo scheduler assegna la CPU ad un processo per un quanto di tempo
¾ Quando il quanto di tempo termina, il processo in esecuzione viene
interrotto e ritorna nella ready queue
¾
¾
¾
Per realizzare l’alternanza fra processi, lo scheduler gestisce la
ready queue in modo tale da assegnare il processore al primo
processo in coda che, quando esaurisce il suo quanto, viene
posto alla fine della coda
Alla fine della coda si inseriscono anche i processi che passano
dallo stato di attesa allo stato di pronto
Scheduling della CPU − 3
¾
Esempio: Scheduling Round−robin, con quanto di tempo 20
P1
0
P2
20
Processo
Tempo di CPU
P1
53
P2
17
P3
68
P4
24
P3
37
P2
P4
57
P1
77
P3
P4
P1
P3
P3
97 117 121 134 154 162
P4
P1
P3
heduling della CPU − 4
¾
Il quanto di tempo assegnato a ciascun processo...
...deve essere molto maggiore del tempo di context switch
¾ ...deve essere significativamente inferiore al tempo medio di
esecuzione dei programmi, altrimenti l’effetto della politica di
rotazione si annulla
¾
heduling della CPU − 5
¾
¾
Utilizzando la politica Round−robin, il tempo di esecuzione di
ciascun programma diviene approssimativamente proporzionale
alla “complessità in tempo” del programma stesso ed al numero
di operazioni di ingresso/uscita
Inoltre, frazionare l’esecuzione dei processi ha l’effetto di
favorire il completamento rapido dei più brevi, con conseguente
massimizzazione del numero di processi terminati nell’unità di
tempo: aumento del throughput del sistema
heduling della CPU − 6
¾
Possono essere utilizzate politiche di scheduling più complesse:
per esempio, se i processi hanno differenti priorità, è possibile
associare a ciascun livello di priorità una diversa coda di processi
pronti, per prelevare il primo processo dalla coda (non vuota) a
priorità più alta
heduling della CPU − 7
¾
¾
¾
¾
Esempio: In un sistema che comporta problemi di sicurezza, alcuni
eventi (come la segnalazione di guasti ai motori di un aereo) sono
molto più importanti di altri (come la segnalazione di difetti al
sistema di intrattenimento)
Nella maggior parte delle applicazioni di elaborazione dati viene
attribuita una priorità bassa ai cosiddetti processi batch, che non
necessitano interazione con l’utente
Problema: Starvation (blocco indefinito), i processi a bassa priorità
potrebbero non venir mai eseguiti
Soluzione: Aging (invecchiamento), aumento graduale della
priorità dei processi che si trovano in attesa nel sistema da lungo
tempo
ncronizzazione dei processi − 1
¾
¾
C
B
I processi devono sincronizzarsi, devono cioè coordinare le loro
attività
La modalità più semplice di coordinamento consiste
nell’esecuzione sequenziale : un processo termina invocando
l’attivazione di un nuovo processo
Tempo di utilizzo della CPU
Tempo di attesa di eventi
esterni
ncronizzazione dei processi − 2
C
B
Tecniche di sincronizzazione più complesse nascono
dall’esigenza dei processi di competere per alcune risorse, o di
cooperare fra loro
Esempio: Un processo che richiede un servizio di I/O può essere
interrotto e la CPU passata a un altro programma
Tempo di utilizzo della CPU
Tempo di attesa di eventi
esterni
ncronizzazione dei processi − 3
¾
¾
Un esempio di competizione si verifica quando due processi
vogliono accedere simultaneamente ad una risorsa, detta risorsa
critica,
critica sulla quale può operare un solo processo alla volta; nel
caso di richieste contemporanee, uno solo dei processi
richiedenti accede alla risorsa critica, mentre l’altro deve
attendere il rilascio della risorsa per potervi accedere a sua volta
Un esempio di coordinazione si ha quando due processi sono tali
per cui ciascuno di essi ha bisogno dell’altro per poter evolvere;
nel classico problema del produttore/consumatore,
produttore/consumatore il primo
processo produce dati (per esempio, acquisendoli da una
periferica) mentre il secondo li utilizza (per esempio, svolgendo
su di essi delle elaborazioni)
ncronizzazione dei processi − 4
¾
¾
La sincronizzazione dei processi, necessaria sia nel caso di
competizione sia nel caso di cooperazione, avviene tramite due
meccanismi fondamentali...
...l’uso di variabili condivise (dette semafori),
semafori per l’accesso a parti
critiche di codice
¾ ...e la comunicazione esplicita fra processi (mediante scambio di
messaggi)
messaggi
¾
Esempio:
L’accesso concorrente a dati condivisi può causare incoerenza nei
dati
¾ Per garantire la coerenza dei dati occorrono meccanismi che
assicurano l’esecuzione ordinata dei processi cooperanti
¾
ncronizzazione dei processi − 5
¾
Problema della sezione critica:
n processi competono per utilizzare dati condivisi; ciascun processo
è costituito da un segmento di codice, detto sezione critica, in cui
accede ai dati e li modifica
¾ Ipotesi:
¾ Assicurarsi che, quando un processo esegue la sua sezione
critica, a nessun altro processo sia concesso eseguire la propria
¾ L’esecuzione di sezioni critiche da parte di processi cooperanti è
mutuamente esclusiva nel tempo
¾ Soluzione: progettare un protocollo di cooperazione fra processi
¾ Ogni processo deve chiedere il permesso di accesso alla sezione
critica, tramite una entry section (il semaforo diviene “rosso” ad
opera del processo che trova il “verde” e si accinge ad accedere
¾
La gestione della memoria
estione della memoria centrale – 1
¾
¾
La memoria centrale…
…è un “array” di byte indirizzabili singolarmente
¾ …è un deposito di dati facilmente accessibile e condiviso tra la CPU
ed i dispositivi di I/O
¾
Il SO è responsabile delle seguenti attività riguardanti la gestione
della memoria principale:
Tenere traccia di quali parti della memoria sono usate e da chi
¾ Decidere quali processi caricare quando diventa disponibile spazio in
memoria
¾ Allocare e deallocare lo spazio di memoria quando necessario
¾
Gestione della memoria centrale − 2
¾
Premessa indispensabile per la gestione concorrente di molti processi è
infatti la presenza di molti programmi in memoria centrale
¾
¾
La memoria centrale assume un ruolo simile all’unità di elaborazione: è una
risorsa unica, talvolta scarsa, da suddividere fra i vari processi
Per allocare i programmi in memoria centrale è necessario rilocarli:
Rilocare significa trasformare gli indirizzi logici, presenti nei programmi, in
indirizzi fisici, corrispondenti alle locazioni di memoria dove il codice eseguibile
viene effettivamente caricato
¾ D’altra parte, l’uso di indirizzi logici nei programmi è essenziale per
consentirne il caricamento in differenti porzioni di memoria
¾
¾
Problema: come allocare lo spazio in maniera ottimale
1° soluzione: Allocazione lineare
Memoria
0000x
Programma A
Programma B
Programma C
1° soluzione: Allocazione lineare
Memoria
0000x
Programma A
Programma D
Programma E
Programma C
1° soluzione: Allocazione lineare
Memoria
0000x
Programma A
Programma D
Programma E
Programma C
Programma F
Gestione della memoria centrale − 3
¾
Un importante meccanismo di “suddivisione” della memoria
centrale, e delle entità in essa memorizzate, è quello della
paginazione:
paginazione
¾
La memoria centrale è considerata
dal gestore della memoria come
partizionata in pagine, ciascuna delle
quali è un’aria di memoria contigua,
di dimensione fissata
¾
Anche i programmi vengono
partizionati in pagine ed allocati in un
numero intero di pagine, non
necessariamente contigue
Soluzione: Paginazione
Memoria
0000x
Programma A
Programma A
Programma A
Programma B
Programma B
Programma D
Soluzione: Paginazione
Memoria
0000x
Programma A
Programma A
Programma A
Programma E
Programma F
Programma D
Programma F
Gestione della memoria centrale − 4
¾
Un altro meccanismo ampiamente utilizzato per il
partizionamento della memoria è detto segmentazione:
segmentazione
¾
¾
Un programma può essere
logicamente frazionato in parti
che svolgono funzioni distinte
Il gestore della memoria può
utilizzare il partizionamento logico
del programma per caricare
segmenti diversi in maniera
indipendente
1
4
1
2
3
4
3
Spazio utente
¾
2
Spazio fisico di memoria
Nota: Mentre le pagine hanno lunghezza fissa, i segmenti,
essendo semanticamente significativi, hanno lunghezza variabile
Gestione della memoria centrale − 5
¾
Segmentazione e paginazione non sono mutuamente esclusive:
¾
¾
in molti SO vengono applicate contemporaneamente
In entrambi i casi, il gestore della memoria offre al programma
applicativo la visione di una memoria virtuale,
virtuale che può essere
maggiore di quella fisica
¾
Si possono gestire programmi caricandone effettivamente in
memoria solo le pagine (o i segmenti) relative al codice
attualmente in esecuzione
¾
Le pagine (o i segmenti) che non sono al momento caricate in
memoria rimangono disponibili sulla memoria di massa, all’interno
di opportuni file
La memoria virtuale
Memoria
0000x
Programma A-1
Programma B-1
Programma D
Swap
Programma A-2
Programma A-3
Programma B-2
La memoria virtuale
Memoria
0000x
Programma A-2
Programma B-1
Programma D
Swap
Programma A-1
Programma A-3
Programma B-2
Gestione della memoria centrale − 6
¾
¾
¾
Un sistema informatico può avere una memoria virtuale di v
gigabyte ed una memoria fisica di p gigabyte, con v > p
La memoria virtuale garantisce la condivisione efficiente della
memoria centrale fra più processi, e consente l’esecuzione di
quei programmi la cui dimensione s è maggiore della dimensione
p della memoria fisica
Naturalmente, la dimensione s del programma non può essere
superiore a quella della memoria virtuale realizzata dal gestore
Gestione della memoria centrale − 7
¾
La gestione di memoria e processi deve essere coordinata: quando un
processo viene eseguito, il codice relativo al corrispondente programma
deve essere almeno parzialmente residente in memoria
¾
¾
¾
Più precisamente: le pagine (o i segmenti) attualmente in esecuzione o che
contengono i dati attualmente indirizzati/elaborati devono risiedere in
memoria centrale
Se una pagina o un segmento necessario al processo non è presente in
memoria centrale, il processo deve essere sospeso per consentire il
caricamento, da parte del gestore della memoria, della pagina o del
segmento di codice
Il processo corrispondente passa da running a waiting; entrerà
nuovamente nella ready queue quando saranno completate le
operazioni necessarie a portare la pagina o il segmento in memoria
Memoria di modo S ed U − 1
¾
¾
Ai programmi che realizzano le funzioni proprie del SO, ed alle
strutture dati da esso usate, devono essere assegnate opportune
zone di memoria
Inoltre, i processi di sistema possono usare l’intero set di
istruzioni del calcolatore (talune non disponibili per i programmi
utente), possono venire allocati in memoria in maniera ottimale,
e devono essere protetti da errori causati da altri programmi
¾
La memoria viene suddivisa in memoria di modo S (supervisore) e
memoria di modo U (utente)
¾ Nella porzione di modo S vengono caricati i processi del SO e
vengono create le strutture dati da esso utilizzate
¾ Nella porzione di modo U vengono caricati i processi utente
Memoria di modo S ed U − 2
¾
Se il processore sta eseguendo un processo utente, lo si dice attivo in
modo utente (modo U),
U se esegue un processo di sistema, cioè se è
attivo il nucleo, lo si dice attivo in modo supervisore (modo S)
S
Quando il processore è attivo in modo S può accedere a tutta la memoria (di
modo U e di modo S) ed ha a disposizione un insieme più ricco di istruzioni
¾ Il processore attivo in modo U può accedere solo alle zone di memoria di
modo U, ed in particolare a quelle riservate al solo processo in esecuzione
¾
¾
La suddivione della memoria protegge il codice e le strutture dati che il
SO usa per garantire una gestione delle risorse corretta ed efficiente
¾
Le istruzioni di codice utente non possono accedere a zone di memoria di
modo S se non richiedendo l’intervento del SO
La gestione delle periferiche
La gestione dei dispositivi di I/O
¾
La gestione dell’I/O richiede:
Un’ interfaccia comune per la gestione dei device driver
¾ Un insieme di driver per dispositivi hardware specifici
¾ Un sistema di gestione di buffer per il caching delle informazioni
¾
¾
¾
Il gestore dei dispositivi di I/O è il modulo del SO incaricato di
assegnare i dispositivi ai task che ne fanno richiesta e di
controllare i dispositivi stessi
Da esso dipende la qualità e il tipo di periferiche riconosciute dal
sistema
Driver di dispositivo
¾
¾
¾
I driver sono moduli software cui è affidato il compito di
comunicare dati da e verso le periferiche
Permettono l’accesso alle periferiche tramite “primitive di alto
livello”
I device driver implementano le seguenti funzioni:
Rendono trasparenti le caratteristiche fisiche tipiche di ogni
dispositivo
¾ Gestiscono la comunicazione dei segnali verso i dispositivi
¾ Gestiscono i conflitti, nel caso in cui due o più task vogliano accedere
contemporaneamente allo stesso dispositivo
¾
¾
I driver vengono scritti specificamente per ciascun dispositivo e
sono normalmente forniti dal costruttore
Il file system
Il file system − 1
¾
¾
File:
File Spazio di indirizzi logici contigui; è un insieme di
informazioni correlate e registrate nella memoria secondaria, a
cui è stato assegnato un nome
Dal punto di vista dell’utente...
...è la più piccola porzione di memoria secondaria indirizzabile
logicamente e...
¾ ...i dati possono essere scritti nella memoria secondaria soltanto
all’interno di un file
¾
¾
Dal punto di vista del SO...
¾
...i file vengono mappati su dispositivi fisici di memorizzazione non
volatili
Il file system − 2
¾
Attributi del file:
file
¾
¾
¾
¾
¾
Nome:
Nome identificativo del file
Locazione:
Locazione puntatore al dispositivo ed alla posizione del file sul
dispositivo
Dimensione:
Dimensione dimensione attuale del file
Protezione:
Protezione parametri di controllo per l’accesso in lettura, scrittura
ed esecuzione del file
Ora,
Ora data,
data identificativo dell’utente:
utente dati necessari a protezione e
sicurezza del sistema, e per il controllo d’uso
Il file system − 3
¾
Il file system è responsabile della gestione dei file in memoria di
massa
struttura i dati in file...
¾ ...li organizza in directory (o cartelle)
¾ realizza inoltre un insieme di funzioni di alto livello per operare su file
e directory
¾
¾
Il file system garantisce una gestione dei file indipendente dalle
caratteristiche fisiche dei dispositivi che costituiscono la memoria
di massa: astrazione utile sia per l’utente sia per i programmi
La gestione dei file − 1
¾
¾
Le infomazioni sui file sono conservate nella struttura di
directory,
directory che risiede sulla memoria secondaria
Le directory hanno (nel caso più semplice) organizzazione ad
albero; ciascuna directory può contenere file e sottodirectory
Directory
File
Albero delle directory
La gestione dei file − 2
¾
¾
Ciascun file viene identificato da un pathname che include
l’intero cammino, dalla radice dell’albero al file stesso
Tutti i file e sottodirectory presenti nella stessa directory devono
avere nomi distinti Ö ciascun pathname è unico
Il file system di WINDOWS
La gestione dei file − 3
¾
Un utente che interagisce con il file system ha un proprio
contesto, cioè una specifica posizione nel file system,
corrispondente ad un nodo nell’albero
¾
Per default, all’atto del collegamento al sistema, il contesto
dell’utente è costituito dalla sua home directory
¾
Il contesto può essere variato, muovendosi ovunque nell’albero
delle directory (almeno in quelle accessibili all’utente)
La gestione dei file − 4
¾
Funzioni disponibili agli utenti del file system:
¾
¾
¾
¾
¾
¾
Creazione di file (operazione normalmente eseguita da software
applicativo, come editor e word processor) e directory
Comandi per stabilire i parametri di protezione
Lista del contenuto di una directory
Comandi per cambiare il contesto
Copia, ridenominazione e visualizzazione di file
Cancellazione di file e rimozione di directory