Parte VI
SISTEMI OPERATIVI
Sistema Operativo
Ogni computer ha un sistema operativo necessario per
eseguire gli altri programmi
Il sistema operativo, fra l’altro, è responsabile di
• riconoscere i comandi di input (da tastiera) e di inviarne una
copia sullo schermo
• gestire l’uscita dei dati (modem, rete, stampante ecc.)
• gestire l’archivio dei file (dischi)
• gestire le unità di memoria aggiuntiva (dischi, dvd, cd, ecc.)
• gestire la sicurezza (autorizzazione all’utilizzo del sistema).
Nei sistemi di grandi dimensioni il sistema operativo è
anche responsabile della gestione e del coordinamento
fra i diversi utenti che utilizzano il sistema
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
2
Sistema Operativo
• Non facile da definire esattamente
• definizione informale
– Quello che nel sistema non è applicazione o
hardware
– Software che permette alle applicazioni di utilizzare in
modo conveniente l’hardware
Utenti
Applicazioni
Word processing,
compilatori, basi dati....
Sistema Operativo
Hardware
21/01/2008
dispositivi I/O,dischi,
CPU, memoria....
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
3
Sistema Operativo
• Definizione Formale : Il sistema operativo è un insieme
di programmi, invisibili all’utente, che si interpongono tra
l’hardware e i programmi applicativi/utility visibili
all’utente (interfaccia utente) per governare l’hardware
nascondendo le diversità di hardware al software
applicativo.
• Il sistema operativo quindi forma uno strato di software
che opera direttamente sull’hardware, isolando i dettagli
dell’architettura hardware (attraverso i driver che sono
parti di sistema operativo adattate alle specifiche
caratteristiche dell’hardware) e fornendo un insieme di
funzionalità e di astrazioni ad alto livello.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
4
Obiettivi del sistema operativo
• semplificare e ottimizzare l’accesso alle
risorse dell sistema
• garantire la correttezza dell’esecuzione
concorrente
• assicurare la portabilità delle applicazioni
• indipendenza dalla piattaforma:
– stesso hardware sono possibili diversi SO
– stesso SO può “girare” su piattaforme HW
diverse
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
5
Sistema operativo e CPU
Struttura a livelli
•
•
Il livello 2 è il più basso al quale un utente può programmare la
macchina
Normalmente la programma a livello 5
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
6
Sistema operativo e CPU
•
•
•
•
Le unità funzionali principali sono:
– Gestione dei processi ( ogni programma in corso nel computer )
– Gestione della memoria centrale
– Gestione delle periferiche
– File system
L’insieme di questi moduli costituisce il nucleo del sistema
operativo, denominato anche kernel. Il sistema operativo possiede
inoltre una interfaccia per l`interazione con l`utente che è formata
dall’insieme dei programmi di utilità o utilities.
Esempio: in DOS i comandi copy e rename permettono di copiare e
ridenominare i file; comandi analoghi in altri sistemi;
In Windows interfacce grafiche permettono di dare comandi con
interazione diversa (ad esempio click con il mouse).
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
7
Virtualizzazione delle risorse
•
•
le applicazioni e i programmi (che poggiano sul SO) vedono risorse
virtuali
– ignorano i dettagli
– eventuali altri programmi in concorrenza
risorse virtualizzate
– CPU: Multiprogrammazione (più programmi sono eseguiti
concorrentemente)
– memoria: ciascun programma vede uno spazio di memoria
autonomo
– I/O: la memoria di massa (dischi) e periferiche di I/O sono viste
dai programmi tramite il SO
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
8
Sistema operativo e CPU
Funzioni Sistema operativo
• Gestione dei processi
• Memoria virtuale
• I/O dei file
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
9
gestione dei processi
•
•
processi concorrenti
– elaborati in parallelo su architetture multiprocessore
– elaborati a rotazione (time sharing) su architetture uniprocessore
problemi:
– sincronizzare l’utilizzo delle risorse comuni (memoria centrale e
di massa, I/O)
– garantire accesso in mutua esclusione
– garantire la correttezza della elaborazione
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
10
gestione dei processi
stati di un processo
• running: in esecuzione sulla CPU
• blocked: bloccato in attesa di un evento (fine I/O, ...)
• ready: pronto a riprendere la sua elaborazione
scheduler: processo del SO che decide quale fra i
processi ready mandare in esecuzione
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
11
gestione dei processi
scheduler: processo del SO che decide quale fra i processi ready
mandare in esecuzione
In un computer ci possono essere molti programmi in corso di
esecuzione (caricati in memoria centrale) dello stesso utente o di
utenti diversi. E’ compito di un programma del sistema operativo
(schedulatore) commutare l’attività della CPU tra i vari programmi
in corso di esecuzione dedicando a ciascuno una piccola
porzione del tempo di elaborazione in modo che si abbia la
percezione che tutti i programmi avanzino contemporaneamente.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
12
gestione dei processi
i Sistemi operativi possono essere classificati nel
seguente modo:
multi-user : multiutente (due o più utenti utilizzano il
programma (anche migliaia nei casi più grandi)
multiprocessing : permette la possibilità che un programma
sia eseguito da più processori (CPU)
multitasking : permette che uno o più programmi siano
eseguiti concorrentemente (anche dello stesso utente)
multithreading : permette che diversi parti di un unico
programma siano eseguite concorrentemente.
Usano il time sharing, condivisione del tempo fra più utenti o più programmi•
Il processore centrale è commutato velocemente da un programma ad un altro
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
13
gestione dei processi
I Sistemi operativi possono essere classificati nel seguente modo:
real time: (tempo reale)(Windows e UNIX non sono real time).
Un sistema operativo real-time o in tempo reale (abbreviato in RTOS)
è un sistema operativo specializzato per il supporto di applicazioni
software real-time. Questi sistemi vengono utilizzati tipicamente in ambito
industriale (controllo di processo, pilotaggio di robot, trasferimento di dati
nelle telecomunicazioni) o comunque dove sia necessario ottenere una
risposta dal sistema in un tempo massimo prefissato.
Da un punto di vista puramente teorico l'intervallo di tempo in cui il
sistema operativo/applicativo deve reagire non ha importanza, infatti un
sistema operativo in RT non deve essere necessariamente veloce, la
cosa importante è che risponda entro un tempo massimo ben conosciuto.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
14
gestione dei processi
I Sistemi operativi possono essere classificati nel seguente modo:
real time Un sistema in RT deve garantire una elaborazione rapida dal
punto di vista temporale, anche se è possibile che la risposta non sia
precisissima. Ad esempio una funzione di calcolo può calcolare il peso di
un oggetto senza giungere alla determinazione del milligrammo perché
deve comunque fornire una risposta in un preciso tempo da quando si è
posto il peso nella bilancia. Tale ragionamento non significa che si
possono anche dare risposte errate ma che bisogna spostare l'attenzione
sul tempo della risposta. Questi tipi di sistemi devono dare l'opportunità
allo sviluppatore di conoscere a priori le pessime probabilità in cui si
ottiene la risposta.
Viceversa un sistema operativo "tradizionale" deve garantire
un'elaborazione corretta dal punto di vista logico, anche se è possibile
tollerare che qualche risposta arrivi in anticipo o in posticipo di tempo.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
15
gestione dei processi
real time Alcuni sistemi operativi in grado di lavorare in real-time su
adeguate architetture hardware sono:
Open source:
HaikuOS http://haiku-os.org/
eCos http://sources.redhat.com/ecos
FreeRTOS http://www.freertos.org
Nut/OS http://www.ethernut.de
Prex http://freshmeat.net/projects/prex
RTAI http://www.rtai.org
RTEMS http://www.rtems.com
RTLinux Open Å
ITRON TRON project
Fiasco (L4 clone) http://os.inf.tu-dresden.de/fiasco
ChorusOS http://www.experimentalstuff.com/Technologies/ChorusOS
TinyOS http://www.tinyos.net
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
16
gestione dei processi
•Windows: è un prodotto di Microsoft con licenza
commerciale adatto a qualsiasi hardware di tipo PC
compatibile. In realtà è formato da varie famiglie di sistemi
operativi diversi destinati a categorie diverse di computer. Gli
esempi che seguono sono tutti caratterizzati dall’appartenere
ad una unica famiglia di Windows chiamata genericamente
“Win32” per indicare che sfruttano la capacità di
indirizzamento a 32 bit offerta dalle CPU Intel o compatibili a
partire dall’80386
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
17
gestione dei processi
•Windows:
•Windows 95/98/ME/XP-HOME: sono sistemi operativi multiprocesso ( NON
vuol dire multiprocessor !! ) e monoutente destinati all’utilizzo come
workstation in un ambiente preferibilmente non di rete.
•Windows
NT-WKS/2000-WKS/XP-PRO:
sono
sistemi
operativi
multiprocesso e monoutente destinati all’utilizzo come workstation
particolarmente adatti all’ambiente di rete.
•Windows
NT-SRV/2000-SRV/2003-SRV:
sono
sistemi
operativi
multiprocesso e multiutente destinati all’utilizzo come minicomputer (detti
anche server) in ambiente di rete.
•Windows CE: è una versione particolarmente alleggerita adatta ai computer
palmari ma che può essere utilizzata anche negli embedded computer.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
18
gestione dei processi
•Unix: è una ampia famiglia di sistemi operativi prodotti da varie aziende
con licenza commerciale nel rispetto di standard comuni (Open Systems)
e adatti a vari tipi di hardware compreso il tipo PC compatibile. Viene
utilizzato sia per la realizzazione di server che di workstation. Gli standard
Open Systems sono insiemi di norme pubbliche che specificano le regole
che il software deve rispettare e differenziano questi sistemi operativi dai
sistemi proprietari le cui regole di funzionamento invece non sono rese
note dal produttore.
•Sono sistemi operativi multiprocesso e multiutente
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
19
gestione dei processi
Linux: è un sistema operativo che deriva da Unix ma è prodotto con
licenza “Open Source” da vari produttori che in questo caso vengono
chiamati “distribuzioni”. E’ adatto all’ hardware PC compatibile, sfrutta la
capacità di indirizzamento a 32 bit ed è multiprocesso e multiutente. Può
essere usato sia come minicomputer (server), e in questo ruolo è stato un
potente motore di sviluppo della rete Internet, sia come workstation non
utilizzando in questo caso la sua funzione di multiutenza.
Le più famose distribuzioni sono Red Hat, Fedora, Mandrake, Suse,
Debian, Slackware, Knoppix …
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
20
gestione dei processi
Mac OS: è un prodotto di Apple con licenza commerciale adatto agli
hardware di tipo MacIntosh. E’ stato il primo sistema operativo con
interfaccia utente grafica (1984). Sebbene sia molto meno diffuso dei
precedenti riveste una grande importanza nel campo delle workstation per
usi specialistici (grafica, architettura …).
L’ultima versione ha una base UNIX di OpenStep completata con
l'interfaccia grafica e le molte tecnologie ad alto livello del Mac OS
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
21
memoria virtuale
– Ogni programma in corso di esecuzione (processo), compreso il
sistema operativo, occupa una parte della memoria centrale in
cui risiedono le sue istruzioni codificate ed i suoi dati.
– Al crescere dei processi la memoria RAM diviene rapidamente
insufficiente, per cui il sistema operativo fornisce ai processi
un’area di memoria centrale “virtuale” ottenuta da un opportuno
spazio riservato nella memoria di massa.
– Il sistema operativo fa in modo che questa memoria di massa
sembri (per questo si chiama virtuale = finta) allocata al
processo come se fosse memoria centrale ma questa apparenza
è dovuta a continui “caricamenti” e “scaricamenti” fatti dal
sistema operativo tra memoria centrale fisica e blocco di
memoria virtuale della memoria di massa (hard disk).
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
22
memoria virtuale
– L’operazione quindi è trasparente per il programma in corso di
esecuzione che non si accorge di non possedere tutta la
memoria centrale che gli serve perché ogni volta che la utilizza il
sistema operativo gliela copia dalla memoria di massa
scaricandola quando non serve più ma le prestazioni
complessive del sistema ne sono influenzate se si pensa ai
tempi medi di accesso di un disco di media qualità (decine di
mS).
– Questo meccanismo spiega perché uno dei fattori principali nelle
prestazioni di un computer è la quantità della memoria centrale.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
23
memoria virtuale
• memoria virtuale:
– lo stesso spazio di memoria è diviso fra più
programmi
– ogni programma vede uno spazio di
indirizzamento più ampio di quello effettivamente
disponibile
• spazio indirizzi:
– virtuali: dipende dalle modalità di indirizzamento
– fisico: dipende dalle dimensioni della memoria
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
24
memoria virtuale
• programmi usano lo spazio virtuale
• lo spazio virtuale è allocato in memoria secondaria
(dischi)
• si mantiene in memoria solo un sottoinsieme dello
spazio virtuale (spazio logico)
• si trasferiscono quando servono le parti dello spazio
virtuale alle quali il programma fa riferimento
• la gestione è fatta dal SO (trasparente
all’utente/programmatore)
• PROBLEMA: traduzione indirizzi; efficienza
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
25
memoria virtuale: paginazione
•
•
•
modo semplice di organizzare la corrispondenza fra indirizzi virtuali
e fisici
lo spazio di memoria (fisico e virtuale) è organizzato in pagine (0.254 KB), della stessa dimensione
quando serve un dato in memoria si trasferisce tutta la pagina che lo
contiene
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
26
memoria virtuale: paginazione
Spazio fisico in Memoria RAM, Memoria
fisica del computer suddivisa in 8 pagine
PF1
Spazio logico
su disco
PL0
PL1
Organizzazione logica
del processo 1
2 pagine logiche
PF2
PF3
PF4
PF5
PF6
PF7
PF8
21/01/2008
Spazio logico
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
Organizzazione logica
Del processo 2
4 pagine logiche.
Non trova 4 pagine
fisiche contigue
27
memoria virtuale: paginazione
• la struttura dello spazio virtuale si riflette
nella struttura degli indirizzi
– offset: lunghezza della pagina
– k bit più significativi: numero della pagina
• indirizzi fisici hanno la stessa struttura
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
28
memoria virtuale: paginazione
• Il programma viene suddiviso in un certo
numero di sezioni, di dimensioni fisse e
uguali fra loro, dette pagine logiche, e in
corrispondenza organizzando allo stesso
modo anche la memoria fisica in pagine
fisiche, della stessa dimensione delle
pagine logiche.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
29
memoria virtuale: paginazione
Spiazzamento relativo all’inizio
della pagina specificata dai k bit
iniziali, in pratica dice quanto è
lunga la pagina
•
•
•
i programmi specificano indirizzi virtuali
l’indirizzo fisico è diverso
prima di accedere in memoria bisogna tradurre l’indirizzo virtuale in
indirizzo fisico
Nota Bene: l’indirizzo virtuale è fisso, quello fisico può cambiare nel
corso dell’esecuzione
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
30
memoria virtuale: paginazione
•
•
con la memoria a pagine
– posso avere uno spazio fisico piccolo ma uno spazio virtuale
grande
– posso utilizzare la memoria (piccola) per più programmi
contemporaneamente
due pagine vicine (nello spazio logico) possono essere in posti
diversi dello spazio fisico
– una su disco e l’altra in memoria centrale
– tutte e due su disco (o memoria centrale) ma con indirizzi fisici
diversi
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
31
memoria virtuale: traduzione indirizzi
•
•
La traduzione degli indirizzi avviene a cura della CPU (prima di
accedere in memoria fisica)
La corrispondenza tra pagine virtuali e pagine fisiche (page
frames) viene mantenuta nella Tavola delle Pagine (nella CPU)
e viene gestita dall’hardware aggiuntivo Memory Management
Unit presente nella CPU
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
32
memoria virtuale: traduzione indirizzi
Numero pagina fisica ( Sei )
tavola delle
pagine
Lo spiazzamento
rispetto all’inizio
della pagina
è uguale sia
per la pagina
logica che
la pagina fisica
contiene la
corrispondenza
fra indirizzo
virtuale (o
logico) e
indirizzo fisico
Pagina già
in memoria
si/no
Numero pagina logica
(Due )
21/01/2008
4 bit
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
3 bit
33
memoria virtuale: come funziona
•
•
se la pagina richiesta è in memoria: ok
altrimenti page fault.
– il SO interrompe l’esecuzione del programma
– la pagina richiesta viene trasferita da disco a memoria centrale
(attesa)
– una volta trasferita la pagina richiesta l’esecuzione del
programma può riprendere
– a seguito di un page fault posso dover togliere una pagina dalla
memoria per fare spazio a quella nuova, questo implica che le
pagine virtuali non hanno necessariamente lo stesso indirizzo
fisico
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
34
località dei programmi
• gli accessi in memoria rispettano un principio di
località
– quando mi serve un dato che non è in
memoria trasferisco tutta la pagina che
contiene quel dato
– quando devo togliere una pagina dalla
memoria per fare spazio alla nuova pagina
trasferisco pagine richieste indietro nel tempo
(meno probabili che siano richieste nel futuro)
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
35
Gestione dei file: importanza I/O
•
Applicazioni hanno due componenti fondamentali:
– Elaborazione informazione
– Input/Output (I/O) (esistono applicazioni senza I/O?)
•
Dati sono nei dispositivi di memoria
– diversi fra loro (velocità, modi di accesso, ...)
•
Utente vede dati come una libreria standard
– operazioni utente sono astratte: inserisci, cancella, duplica,...
– non dipende dal tipo di dato o da dove è il dato
•
Funzioni SO: fornire operazioni standard per accedere e modificare i
dati
– fornire protezioni ai dati (limitare le operazioni permesse)
– semplificare accesso a utente
– fornire interfaccia omogenea
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
36
Astrazione: File
• Punto di vista utente
– Insieme di dati con un nome
• tipo di dato (si usa spesso estenzione: txt - testo, exe - eseguibile,
gif - immagine, ....)
• utilizzabile sempre in modo conveniente (utente non vuole sapere
dove si trova fisicamente il file)
• Punto di vista del sistema operativo
– crea corrispondenza fra i byte che costituiscono il file su blocchi
di memoria non volatile
• Dischi, nastri, CD, ....
• Dati persistenti (assenza di corrente, riavvi del sistema,...)
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
37
Astrazione: Direttorio
•
•
•
Organizzare i file: una tabella contiene le informazioni su dove
ciascun file si trovi sul disco
Approccio semplice: ogni file ha un solo nome
In pratica:
– un direttorio per ogni utente, per specificare un file:
• <nome utente, nome file>
– per ogni utente organizzazione ad albero del direttorio (es. cartelle di
windows)
Esempio: Mario/a/b.gif
utente mario ha un direttorio a che contiene un fileim magine b
(Mario può avere tanti direttori; a può contenere tantifile o direttori)
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
38
Meta-Dati di un file
•
Meta-dati: Informazioni addizionali associate ad ogni file
–
–
–
–
–
–
–
•
Nome del file
Tipo del file
Puntatori (indirizzi) ai blocchi del disco che contengono i dati
Dimensione del file
Informazioni temporali: creazione, aggiornamento
Proprietario (utente, gruppo)
Bit di protezione (autorizzazione in lettura, scrittura)
I Meta-dati sono memorizzati nel disco
– parte del disco contiene le informazioni necessarie
• <nome file, indice sui metadati>
(l’indice indica dove sono presenti i metadati nella memoria del disco)
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
39
Gestione del direttorio
•
Direttorio contiene per ogni file una coppia
<nome, indice>, (in cui il nome può essere un altro direttorio)
– Direttorio è memorizzato e organizzato come un file
– Indice indica dove sono le informazioni sui metadati associati al nome
– Per indicare un file si specifica il nome del file indicando tutti i direttori a
partire dalla radice
Esempio: m kdir mario/a/b/c
crea direttorio c contenuto in b che a sua volta è contenutoin a
– Leggi i metadati associati a utente mario e cerchi “a”; ad esempio trovi <“a”, 5>
– leggi le informazioni indicate da 5, e cerca “b”; ad esempio trovi <“b”, 9>
– leggi le informazioni indicate da 9, verifichi che non esiste “c”; allochi c e aggiungi
“c” dove necessario
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
40
Esercizio
• Illustrare i compiti del sistema operativo
nella gestione dei file e dell’Input/Output.
21/01/2008
Sistemi e Tecnologie Informatiche
Prof. Gregorio Cosentino
41