Università di Roma Tor Vergata
Corso di Laurea triennale in Informatica
Sistemi operativi e reti
A.A. 2015-16
Pietro Frasca
Lezione 2
Giovedì 8-10-2015
Sistemi batch multiprogrammati
• La causa principale della bassa efficienza dei primi sistemi
batch era dovuta alla grandissima differenza che c’era tra la
velocità della CPU e la velocità delle periferiche. Le
operazioni di I/O richiedevano molto più tempo rispetto alle
operazioni computazionali.
• L’introduzione di alcuni dispositivi fisici, come i dischi e i
DMA (Direct Memory Access) e l’introduzione della tecnica
dell’interruzione (interrupt) portò a significativi
Appunti di Sistemi Operativi,
miglioramenti.
2015-2016 - Pietro Frasca
• Con la tecnica dello spooling (simultaneous peripheral
operation on line) si ebbe un apprezzabile primo
miglioramento.
• Con tale tecnica, tutti i job di un batch sono memorizzati
inizialmente su disco e successivamente caricati in memoria
per essere eseguiti.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
2
• I risultati sono salvati ancora su disco.
• I dati sono caricati su disco tramite DMA, quindi la CPU è
libera di eseguire altre operazioni. Inoltre i risultati sono
inviati da disco al dispositivo di output, tipicamente una
stampante.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
3
1) Caricamento dei
job su disco
2) Caricamento dei
job da disco in
memoria
Disco
3) Risultati su disco
2
4) Stampa dei
risultati
3
1
Dispositivo
di input
4
DMA
CPU
DMA
Output
(Stampante)
MEMORIA
Sistema di spooling
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
4
• La memorizzazione delle applicazioni su disco (pool of job)
che è un dispositivo ad accesso casuale, consente di
implementare varie politica di scheduling, scegliendo di
volta in volta, quale job eseguire per primo in base a un
determinato criterio come, ad esempio, eseguire prima i
programmi che hanno un tempo di esecuzione più breve
(SJF).
• La multiprogrammazione e la tecnica dell’interrupt
hanno portato a un netto miglioramento dell’efficienza
d’uso della CPU e delle risorse.
• La multiprogrammazione consiste nel caricare in memoria
più programmi in modo da allocare ciascuno di essi in una
diversa area di memoria. In tal modo, quando il
programma corrente esegue operazioni di I/O, è possibile
assegnare la CPU ad un altro programma.
• Con questa tecnica, tutti i programmi caricati in memoria è
come se eseguissero “in parallelo”, anche se in realtà solo
uno di essi si trova in esecuzione.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
5
Programma N
Programma
applicativo
Programma 2
Programma 1
Sistema operativo
Struttura della memoria in
un sistema batch
monotasking
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
Sistema operativo
Struttura della memoria in
un sistema batch
multitasking
6
• Con la multiprogrammazione è possibile aumentare
nettamente l’efficienza della CPU fino a raggiungere valori
superiori all’80%
• Per esempio, consideriamo tre processi P1, P2 e P3 e
consideriamo i casi in cui fossero eseguiti con a) un sistema
monotasking e b) con un sistema multitasking. Nel primo
caso i programmi vengono eseguiti sequenzialmente, come
mostrato in figura.
• Il tempo d’uso di CPU è pari a 10 unità di tempo, mentre il
tempo totale è pari a 27 unità. L’efficienza d’uso della
CPU è quindi data da 10/27=0,37 (37%).
• Con la multiprogrammazione il tempo totale di esecuzione
dei tre programmi scende a 12 unità di tempo e quindi
l’efficienza d’uso sarà data da 10/12=0,83 (83%).
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
7
Esecuzione sequenziale
1 2 3 4 5 6 7
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Esecuzione in multi-tasking
1 2 3 4 5 6 7
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
8
• A prima vista, l’efficienza d’uso della CPU può essere
migliorata, aumentando il numero di programmi (grado di
multiprogrammazione). Tuttavia bisogna considerare
anche il tempo di commutazione necessario per assegnare
la CPU da un programma ad un altro. Questo meccanismo è
chiamato cambio di contesto, il quale porta ad un
aumento dell’overhead di sistema. Quando la CPU viene
assegnata ad un altro programma, il SO deve eseguire
varie operazione tra cui il salvataggio dello stato della
CPU (il valore di tutti i suoi registri).
• Con più programmi in esecuzione il SO si deve occupare
della gestione delle risorse per evitare conflitti tra i
programmi.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
9
• Se le risorse non fossero gestite dal SO, un programma in
esecuzione potrebbe usarle quando queste sono già state
assegnate ad un altro programma. Consideriamo, ad
esempio, cosa succederebbe se un programma stesse
stampando e un altro interferisse nell’operazione. Si
avrebbero delle stampe con contenuto misto relativo ai due
programmi. E’ necessario quindi che il sistema operativo
implementi degli algoritmi di assegnazione delle varie
risorse ai programmi.
• Per la scelta dei programmi da caricare in memoria, una
strategia spesso usata è scegliere un insieme di programmi
con caratteristiche diverse, ad esempio alcuni programmi
che eseguono molte operazioni di computazione e poche
operazione di I/O (CPU-bound) e altri con poche istruzioni
di calcolo e molte operazioni di I/O (I/O-bound) in modo
bilanciato e quindi ottimizzare tutte le risorse di macchina.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
10
• Inoltre quando avviene un cambio di contesto, a causa di
operazioni di I/O, è necessario scegliere quale sarà il
prossimo programma a cui assegnare la CPU. Un criterio
spesso utilizzato nei sistemi batch è di assegnarla in base al
programma che da più tempo attende di essere eseguito
(criterio FIFO). Un altro criterio, è SJF (Short Job First) che
assegna la CPU al programma in coda che ha una durata
d’esecuzione più breve.
• I sistemi batch multiprogrammati sono stati i primi SO
complessi funzionanti sui grossi mainframe. Molto famosi
sono stati i sistemi dell’IBM della serie 360 e 370.
• I sistemi batch sono oggi ancora molto usati in ambiente
aziendale finanziario per l’elaborazione di buste paga,
gestione dei conto correnti, gestione assicurazioni e altre
attività che richiedono una grande potenza elaborativa su
grandissime quantità di dati.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
11
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
12
Moderno sistema batch
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
13
Sistemi a partizione di tempo (time-sharing)
• I sistemi batch multiprogrammati usano le risorse di
sistema come la CPU, la memoria, le periferiche, etc., in
modo efficiente, ma non consentono l’interazione con
l’utente.
• Un SO time-sharing permette a più utenti di condividere il
calcolatore nello stesso momento.
• Si sono diffusi nei primi anni ’70 con l’introduzione dei
minicalcolatori, molto più economici rispetto ai mainframe.
• SO moderni come ad esempio Unix e Linux sono a
partizione di tempo e multiprogrammati.
• La CPU viene commutata rapidamente da un programma
all’altro, dando ad ogni utente l’impressione di disporre, in
ogni istante, dell’intero calcolatore.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
14
• L’obiettivo principale per i sistemi time-sharing è
minimizzare il tempo di risposta dei programmi e quindi
minimizzare il tempo di attesa medio da parte degli utenti
per ottenere dal programma una risposta alle richieste
effettuate
• La reale condivisione può risultare evidente nel caso in cui il
sistema è “carico”, cioè molti utenti sono in quel momento
connessi e ci sono molti processi attivi o quando nel
sistema si eseguono lunghe operazione di I/O, come ad
esempio, stampe di grandi documenti.
• Ciascun utente può far eseguire più di un programma
contemporaneamente (processo).
• Oltre alla multiprogrammazione, i SO a partizione di tempo
introducono interessanti e complesse tecniche:
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
15
– sono dotati di memoria virtuale che consente l’esecuzione di
programmi, anche se parzialmente caricati in memoria, cioè i
programmi possono avere anche dimensioni superiori alla
memoria fisica disponibile;
– sono dotati di file system che rappresenta un’astrazione dei
dischi, facendo vedere all’utente un disco come composto da
file e directory (cartelle) nidificate;
– utilizzano sofisticate tecnologie, sia hardware che software per
consentire l’esecuzione concorrente dei processi gestiti da
funzioni di scheduling della CPU e funzioni per la
sincronizzazione e comunicazione dei processi.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
16
• Questi sistemi devono anche garantire che i processi non si
blocchino in stati di attesa indefinita reciproca (stallo).
• In pratica, un utente si collega ad un sistema time-sharing
utilizzando un terminale o un PC sul quale è installata
un’applicazione che utilizza un protocollo di comunicazione
per la connessione remota, come ad esempio telnet, rsh,
rlogin e ssh (security shell). Quest’ultimo è l’unico che
garantisce sicurezza nella connessione.
• Per connettersi un utente deve avere un account (utenza)
sul sistema. L’utente inizia una sessione di lavoro inserendo
uno username e una password (login). Una volta connesso
comunica con il SO mediante una shell o con una GUI
(Graphics User Inteface).
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
17
• La shell è un’interfaccia a riga di comando con la quale
l’utente può digitare i comandi per la gestione e il controllo
del SO o avviare applicazioni. Al termine del lavoro, l’utente
esegue l’operazione di logout per disconnettersi dal
sistema.
• L’utente vede il comportamento della macchina come se
questa fosse dedicata tutta a lui (macchina virtuale).
• La politica di scheduling della CPU usata nei sistemi a
partizione di tempo è di eseguire i vari programmi
assegnando loro un quanto di tempo di CPU (time slice)
dell’ordine di alcune decine di millisecondi.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
18
• Durante questo intervallo, il programma può terminare, o
bloccarsi nel caso esegua operazioni di I/O, consentendo
quindi la selezione di un nuovo programma da assegnare
alla CPU.
SISTEMA
TIME-SHARING
telnet, ssh
switch
PC
PC
PC
TS
TTY
TTY
Protocolli
seriali
TTY
Terminali
alfanumerici
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
19
Sistemi in tempo reale
• Il calcolatore è utilizzato per la gestione e il controllo di un
sistema fisico, detto ambiente operativo, come ad esempio
impianti industriali, centrali elettriche, robot, etc.
• Anche questi sistemi utilizzano la multiprogrammazione ,
dato che generalmente i task che il sistema deve svolgere
sono molti.
• Caratteristica fondamentale dei SO realtime è che ogni task
deve essere eseguito entro un intervallo di tempo
definito (deadline) imposto dall’applicazione (da
microsecondi a millisecondi).
• In altri termini, la validità dei risultati ottenuti da un
programma non dipende solo dalla correttezza del
programma, ma anche dall’intervallo di tempo entro il quale
i risultati sono prodotti.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
20
Esempio
Per il processo in figura si ha:
• Istante di richiesta R = 0;
• tempo di esecuzione E = E1 + E2 = 20 + 40 = 60
• deadline D = 100
• Tempo di risposta = 90
R
E2
E1
D
P
0 10
30
50
70
90 100
Tempo di risposta
Deadline
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
21
SISTEMA DA CONTROLLARE
SENSORI
ATTUATORI
SISTEMA OPERATIVO IN TEMPO REALE
(REAL TIME)
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
22
• Nei SO real-time generalmente i task hanno diverse criticità
e quindi hanno diverse priorità.
• Le priorità possono essere assegnate in modo statico
(priorità statiche) o calcolate dinamicamente in base alle
caratteristiche dei singoli task (priorità dinamiche).
• I SO real-time sono classificati in hard real-time e soft
real-time. In questi ultimi, una deadline non rispettata,
non danneggia il funzionamento dell’ambiente operativo,
ma ne abbassa le prestazioni e quindi la qualità del
servizio (QoS Quality of Service).
• Una categoria di SO in tempo reale molto importante, per
via della loro diffusione, è costituita dai sistemi dedicati
(embedded systems): schede di controllo di varie
apparecchiature, controllo motore di automobili,
elettrodomestici, etc.
• Alcuni SO in tempo reale sono ottenuti dai SO time-sharing
di uso generale, come ad esempio RT-Linux.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
23
Sistemi paralleli e distribuiti
• I sistemi paralleli sono dotati di più CPU. In questi sistemi
più processi potrebbero essere realmente eseguiti
contemporaneamente.
• Il SO deve risolvere vari problemi legati all’esecuzione in
parallelo dei programmi, nel caso che essi accedono
simultaneamente agli stessi dati.
• Prevenire possibili condizioni di inconsistenza sulle strutture
dati del sistema, che si potrebbero verificare se queste
fossero modificate contemporaneamente da funzioni di SO
eseguite su diverse CPU.
• Lo sviluppo delle reti ha portato alla realizzazione di moduli
di SO per la gestione delle schede di rete e di vari servizi
che hanno permesso ai sistemi collegati in rete di
condividere dati e informazioni in vario modo: ad esempio il
www, e alla possibilità di realizzare applicazioni distribuite.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
24
• I SO per calcolatori collegati in rete vengono generalmente
classificati in due categorie:
– Sistemi operativi di rete: ogni nodo della rete dispone
di un proprio sistema operativo (non necessariamente
uguale). I sistemi cooperano tra di loro, per esempio
applicazioni web a n-strati.
– Sistemi operativi distribuiti: su ogni nodo deve girare
lo stesso SO. L’utente vede l’intero sistema come un
unico calcolatore. Il SO deve provvedere a bilanciare il
carico di lavoro distribuendolo opportunamente sui vari
nodi del sistema. I nodi condividono le risorse. Un
esempio è dato dai sistemi cluster.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
25
Sistemi operativi per PC
• I primi SO per personal computer erano semplici
monoprogrammati e monoutente.
• Con l’aumento delle prestazione dei microprocessori e delle
dimensioni della memoria, la tecnica della
multiprogrammazione è stata implementata anche nei SO
per PC.
• Tutti i sistemi operativi moderni per PC sono multitasking:
windows XP/7/8/10 (Microsoft), MacOs del Macinthosh
(Apple) e Linux che è un anche un sistema time-sharing.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
26
Struttura ed organizzazione software dei
sistemi operativi
• Un sistema operativo deve svolgere molti compiti
complessi. Per tale motivo dovrebbe essere progettato in
modo tale che, oltre a funzionare correttamente, il suo
codice sia facilmente modificabile.
• La scelta dell’architettura software e della sua
organizzazione dipende dagli obiettivi per cui il sistema
operativo deve essere progettato.
• Nella fase di progettazione è molto importante suddividere
le operazione che il sistema operativo deve svolgere in
meccanismi (tecniche) e criteri (politiche o strategie). I
meccanismi stabiliscono in che modo deve essere eseguito
qualche compito; i criteri, invece, determinano in che modo
utilizzare i meccanismi.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
27
• Ad esempio, nei sistemi multiprogrammati il sistema
operativo, per commutare la CPU a più processi, esegue un
insieme di operazioni detto cambio di contesto, che
comprende il salvataggio dei registri della CPU del processo
che lascia la CPU ed il caricamento dei registri del nuovo
processo che andrà in esecuzione
• Le operazioni di schedulazione della CPU, stabiliscono i
criteri con cui assegnare la CPU ad un nuovo processo. Ad
esempio la schedulazione potrebbe basarsi su una politica
FIFO, su una politica basata sulle priorità che i processi
possiedono, o da altri criteri.
• I meccanismi dovrebbero essere progettati in modo tale
che siano separati dai criteri. Questo consente, nel caso si
cambino i criteri, di mantenere ancora validi i meccanismi.
• Se ad esempio si decidesse di modificare la politica di
schedulazione da FIFO ad una politica più complessa,
sarebbe ancora possibile utilizzare i meccanismi già
esistenti, senza modificarli.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
28
• Una volta progettato il sistema operativo si deve realizzare.
• La scrittura di un sistema operativo dipende fortemente
dall’architettura del hardware ed in particolare dal
processore o processori utilizzati nel calcolatore.
• Molti processori sono dotati di istruzioni che possono essere
eseguite in modalità privilegiata (supervisor) e in modalità
utente. Questa caratteristica consente di realizzare ed
organizzare il software in modo tale che solo il codice del
sistema operativo possa eseguire le istruzioni privilegiate,
proteggendo in tal modo le componenti del sistema
operativo stesso da un uso improprio o errato da parte dei
programmi applicativi.
• Ad esempio le istruzioni di I/O, sono istruzioni privilegiate.
• Generalmente, i sistemi operativi, si scrivono con linguaggi
di alto livello, come ad esempio il C ed il C++, con ristrette
parti in linguaggio assembly, per poter accedere
pienamente ai registri dei dispositivi hardware e realizzare
funzioni compatte e veloci.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
29
Struttura monolitica
• Una semplice organizzazione del software, detta struttura
monolitica, consiste nel realizzare un insieme di funzioni
ciascuna delle quali implementa un determinato servizio,
attivabile tramite una o più chiamate di sistema. Spesso
queste funzioni si scrivono in linguaggio assembly, per
poter avere la massima velocità di esecuzione e una minore
dimensione in termini di occupazione di memoria RAM.
Questa struttura, piuttosto semplice è stata usata nel
sistema operativo Microsoft MS-DOS, un sistema operativo
monoutente e monotasking, scritto per microprocessori
Intel 8088, 8086 e 80286, privi di modalità supervisor. In
assenza di modalità privilegiata, il programmatore può
accedere a qualsiasi istruzione del microprocessore e quindi
eseguire qualsiasi operazione come, ad esempio, scrivere
dati in qualsiasi locazione di memoria, anche se riservata al
sistema operativo. E’ evidente che, in questi sistemi, un
semplice errore di programmazione in un’applicazione può
portare al crash del sistema.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
30
Chiamate di sistema
kernel
HARDWARE
Sistemi stratificati
• Per la progettazione e sviluppo di sistemi più complessi si
può ricorrere ai modelli e alle tecniche della
programmazione strutturata o meglio ancora alla
programmazione ad oggetti. I progettisti organizzano il
sistema in un insieme di moduli, strutturandoli in vari livelli.
• Ciascun modulo di un livello utilizza le funzionalità offerte
dai moduli di livello sottostante e fornisce a sua volta
servizi ai moduli del livello superiore. Nei sistemi stratificati
con il termine nucleo o kernel si indica il livello che è a
stretto contatto con l’hardware.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
31
Sistem call
Moduli di livello N
Interfaccia MV N
API
Interfaccia MV 2
Moduli di livello 2
Interfaccia MV 1
Moduli di livello 1 (kernel)
HARDWARE
Interfaccia
Kernel - HW
Struttura a livelli gerarchici
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
32
• Il principale vantaggio che offre la tecnica della
stratificazione è dato dalla semplicità di progettazione e da
una più semplice facilità nell’eseguire modifiche e correzioni
al codice.
• Ogni strato può essere modificato, senza apportare
cambiamenti ai restanti strati.
• Tuttavia, è richiesta un attenta e complessa analisi per
stabilire quanti strati realizzare e scegliere quale
funzionalità implementare in ciascun livello.
• Inoltre, la stratificazione porta ad un funzionamento meno
efficiente in termini di velocità di esecuzione ed
occupazione di memoria. Ad esempio per eseguire un
operazione, un programma applicativo, potrebbe effettuare
una chiamata di sistema al livello sottostante, la quale, a
sua volta, ne richiama un'altra, e questa un'altra ancora, e
così. In altre parole, il programma applicativo per ottenere
un servizio potrebbe attendere l’esecuzione di N funzioni di
sistema.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
33
• Bisogna tenere anche presente che nel passaggio da uno
strato all’altro sono allocate strutture dati e parametri, con
conseguente maggiore impegno di memoria. Per tale
motivo, attualmente, si progettano sistemi stratificati con
un limitato numero di strati.
Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca
34