Università di Roma Tor Vergata
Corso di Laurea triennale in Informatica
Sistemi operativi e reti
A.A. 2014-15
Pietro Frasca
Presentazione del corso
Lezione 1
Martedì 7-10-2014
1
Appunti di Sistemi Operativi, 2014-2015 - Pietro Frasca
Obbiettivo del corso
•
L'obiettivo dell'insegnamento e' fornire allo studente le
conoscenze di base sui Sistemi operativi moderni e sulle
Reti di calcolatori.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
2
Libri di riferimento
•
Sistemi operativi, II ed. - P. Ancilotti, M. Boari, A.
Ciampolini, G. Lipari - McGraw-Hill
•
Reti di Calcolatori e Internet, IV (VI) ed. - Un approccio
top-down - J.F. Kurose, K.W. Ross - Pearson - Addison
Wesley.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
3
Libri consigliati per approfondimenti
• Sistemi Operativi, VIII ed., A. Silberschatz, P. Galvin, G.
Gagne. Pearson.
• I moderni Sistemi Operativi, III ed., A. S. Tanenbaum.
Pearson - Prentice Hall.
• Sistemi operativi, D. M. Dhamdhere, McGraw-Hill.
• Reti di Calcolatori e Internet, B. A. Forouzan, F. Mosharraf.
McGraw-Hill.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
4
Propedeuticità
• Non si può sostenere l’esame di Sistemi operativi e reti
senza aver prima sostenuto gli esami di:
– Architettura dei sistemi di elaborazione (ASE) o Reti
logiche ed architettura dei calcolatori (RLAC).
– Programmazione dei calcolatori con laboratorio (PR)
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
5
Modalità di esame
• L'esame consiste in una prova scritta e in una prova
orale.
Il testo della prova scritta è suddiviso in due parti. La prima
parte è composta da un gruppo di 4-5 domande che
riguardano argomenti di "Sistemi operativi". La seconda
parte, è composta da un gruppo di 4-5 domande, relative
ad argomenti di "Reti di calcolatori".
• Le domande sono del tipo a risposta aperta o sottoforma di
problemi. Per la parte Sistemi operativi una delle domande
consiste nello sviluppo di un breve programma in linguaggio
C basato sulle system call POSIX studiate durante il corso.
• La durata dell’esame di 12 crediti è di 3 ore, mentre la
durata dell'esame di 6 crediti è di 1 ora e 30 minuti.
• Durante lo svolgimento della prova scritta è vietato l'uso di
libri e/o appunti di qualsiasi genere.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
6
• Per sostenere la prova orale è necessario aver superato la
prova scritta con una votazione di almeno 18/30.
• Inoltre, lo studente può svolgere una tesina facoltativa
consistente nella realizzazione di un'applicazione in java
basata sulla programmazione dei socket o di
un'applicazione multi-thread scritta in c . La tesina deve
essere consegnata (personalmente o via e-mail) almeno
una settimana prima della data della prova orale.
La realizzazione della tesina consente di migliorare la
votazione di 1,2 o 3 punti.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
7
Esame parziale (esonero)
• Gli studenti del nuovo ordinamento possono sostenere, nel solo
appello invernale, l'esame parziale (esonero) di "Sistemi operativi e
reti" che consiste in una prova scritta e in una prova orale basate
sugli argomenti della prima parte del corso (Sistemi operativi).
• Lo studente che intende sostenere l'esame parziale deve prenotarsi
inviando una e-mail all'indirizzo del docente:
[email protected], indicando come oggetto la frase "esame
parziale SOR A.A. 2013/2014" e indicando nel messaggio il proprio
cognome, nome e numero di matricola. La prenotazione deve
essere inviata almeno una settimana prima dell’appello relativo alla
sessione invernale.
• Lo studente che supera l'esame parziale deve sostenere la restante
parte di SOR entro l'anno accademico 2013/2014.
• Il testo della prova scritta è composto da un gruppo di 4-5 domande.
• La durata della prova scritta dell'esame parziale è di 1 ora e 30
minuti.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
8
• Per sostenere la prova orale è necessario aver superato la prova
scritta con una votazione di almeno 18/30.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
9
Informazioni sul corso di SOR
•
•
Saranno pubblicate sul sito di Informatica:
www.cs.uniroma2.it
nella pagina relativa al corso.
Dall’anno accademico 2009-10 i corsi di sistemi operativi
(SO) e reti di calcolatori (RC), ciascuno di 6 crediti, sono
stati uniti nell’unico corso Sistemi operativi e reti (SOR) di
12 crediti.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
10
Applicazioni
•
•
•
Durante la prima parte del corso, relativa a sistemi
operativi, saranno mostrate varie chiamate di sistema
POSIX.
Per realizzare applicazioni basate su POSIX, lo studente
che utilizza Windows può installare sul proprio computer
Cygwin, un ambiente Linux-like per Windows,
liberamente scaricabile dal sito http://www.cygwin.com.
In alternativa a Cygwin è possibile installare su Windows
l’applicazione VMWare Player (o atre simili) scaricabile
all’indirizzo http://www.vmware.com e un’immagine di un
sistema operativo Linux.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
11
Università di Roma Tor Vergata
Corso di Laurea triennale in Informatica
Sistemi operativi e reti
A.A. 2014-15
Pietro Frasca
Lezione 1
Martedì 7-10-2013
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
12
Introduzione
• Un computer è costituito da vari componenti elettronici
molto complessi: da uno o più processori, dalla memoria
RAM, dischi, SSD (Solid State Disk), monitor, scheda
grafica, scheda di rete, tastiera, mouse e altri dispositivi.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
13
CPU
Cache
L2
Scheda
Grafica
Northbridge
Memoria
RAM
BIOS
IDE
ATA/Atapi
PCI
Southbridge
USB
ALTRI
standard
Architettura di un moderno computer
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
14
• Si tratta quindi di un sistema molto complesso.
• Sarebbe impossibile per un programmatore sviluppare
un’applicazione dovendo scrivere codice per il
funzionamento di ciascuno dei dispositivi sopradetti.
• Per tale motivo i computer dispongono di un software detto
sistema operativo, il cui compito è fornire ai programmi
applicativi, e quindi all’utente, funzioni e servizi per
ottenere un uso agevole della macchina fisica.
• I moderni sistemi operativi sono sviluppati a strati.
• A grandi linee, si può pensare che il computer e il sistema
operativo siano progettati in tre livelli:
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
15
Struttura a livelli di un sistema operativo
Utenti
Livello applicazioni
editor
di testi
browser
Livello di SO
Scheduler
CPU
shell
GUI
Program. di
applicazioni
compilat.
Chiamate di sistema
Gestore
memoria
driver
driver
scheda
grafica
tastiera
Program. di
sistema
Livello fisico
CPU
Video
scheda
di rete
RAM
mouse
stampante
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
16
• Livello fisico: costituito dai componenti fisici del
calcolatore quali la cpu, la memoria RAM, le periferiche,
come la scheda grafica, la tastiera, il mouse, il modem etc.
• Livello di sistema operativo: costituito da un insieme di
librerie software che hanno il compito di gestire le risorse
fisiche fornendo ai programmi applicativi un’interfaccia
standard più semplice da usare, in modo da fornire un
astrazione delle risorse stesse.
• Livello dei programmi applicativi: costituito da un
insieme di applicazioni che vengono usate dagli utenti del
sistema. I programmi applicativi non comunicano
direttamente con le risorse fisiche, ma lo fanno attraverso
l’interfaccia del SO. Questo tipo di interazione con le risorse
fisiche è necessario per controllare l’accesso alle risorse
fisiche della macchina da parte di più programmi.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
17
• In breve, il SO è un insieme di programmi che realizzano
una macchina virtuale più semplice da usare per le
applicazioni e quindi per gli utenti, in quanto nascondono
ad essi la macchina fisica.
• Tale astrazione consente agli sviluppatori di software di non
preoccuparsi della programmazione dei dispositivi hardware
del calcolatore e rende più facile quindi la realizzazione e la
portabilità delle applicazioni.
• Un SO può essere pensato anche come un gestore di
risorse, le quali possono essere sia di tipo software, come
ad esempio una variabile o un file, che di tipo hardware, ad
esempio un disco.
• Inoltre, un SO si deve occupare della gestione degli errori e
dei malfunzionamenti che si possono verificare durante
l’esecuzione dei programmi che potrebbero causare un
crash del sistema se non sono adeguatamente gestiti.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
18
• L’interfaccia che il SO fornisce ai programmi è costituita da
un insieme di funzioni che prendono il nome di chiamate
di sistema (system calls).
• Generalmente il programmatore non utilizza direttamente
le system calls ma librerie a livello più alto dette API
(Application Programming Interface) le quali
richiamano le system calls. Un esempio è dato dalle librerie
standard del C o dai package java.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
19
Classificazione dei sistemi operativi
• I sistemi operativi hanno subito una grande evoluzione nel
corso degli anni.
• Attualmente esistono varie tipologie di sistemi operativi, che
comprendono i sistemi batch, time-sharing, real-time,
distribuiti, per uso generale (pc), per smartphone etc.
• Alcune tipologie sono nate prima di altre.
Primi sistemi di elaborazione
• I computer costruiti prima della metà degli anni ’50 erano di
enormi dimensioni e di elevatissimo costo e pertanto il loro
uso era ristretto prevalentemente in ambiente militare e
scientifico.
• La tecnologia elettronica per la realizzazione del calcolatore
era basata sui tubi a vuoto (valvole).
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
20
• I calcolatori non avevano un SO e il programmatore, tramite
una consolle, scriveva le istruzioni direttamente, in codice
binario, nei registri del processore e nella memoria.
• Non era presente neanche il linguaggio assembly.
• EDVAC (Electronic Discrete Variable Automatic Computer)
fu uno dei primi computer elettronici. A differenza del
predecessore ENIAC utilizzava il codice binario invece del
sistema decimale utilizzato dall'ENIAC. Il computer era
basato sull’architettura di Von Neumann.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
21
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
22
Sistemi batch
• Tra la fine degli anni ’50 e i primi anni ’60, nacquero i primi
sistemi operativi.
• Nacquero le figure professionali del sistemista e
dell’operatore i cui compiti erano di gestire il calcolatore.
• I programmi per lo sviluppo del software furono
memorizzati su nastri magnetici.
• Il sistema era dotato di un linguaggio di controllo (job
control language, JCL ) che consentiva all’utente
programmatore di specificare le risorse di programmazione
(compilatori, librerie..) di cui aveva bisogno.
• Un programma in codice sorgente scritto in un linguaggio di
programmazione, ad esempio in FORTRAN o assembly,
veniva scritto su schede perforate di cartoncino.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
23
• Ogni scheda conteneva un istruzione.
• I dispositivi di input erano i lettori di schede perforate e i
dispositivi di output erano le stampanti e i perforatori di
schede.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
24
• Il programma sorgente insieme alle istruzioni JCL, venivano
perforati su schede che venivano date all’operatore.
• Per ottenere un programma compilato, le schede del
programma sorgente venivano inserite nel lettore di
schede.
• Questi sistemi erano dotati di un software di sistema detto
monitor, che può essere considerato è il primo prototipo di
SO.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
25
• Il monitor veniva caricato in un’area di memoria riservata.
• Il monitor eseguiva un ciclo durante il quale leggeva le
schede, e quando incontrava le schede del JCL, caricava in
memoria i programmi di sistema richiesti leggendoli da
nastro magnetico.
• il codice eseguibile ottenuto come risultato veniva inviato al
perforatore di schede che lo memorizzava in questo modo
ancora su schede perforate.
• Successivamente si inserivano le schede relative al
programma compilato sul lettore di schede e si caricava in
memoria il codice eseguibile. Infine si avviava l’esecuzione
del programma.
• L’efficienza d’uso della cpu era molto basso < 1%. Il
tempo medio per eseguire un lavoro (job) era di qualche
decina di minuti, mentre l’uso di cpu era di pochi secondi.
tempo uso cpu
efficienza uso cpu 
tempo esecuzione job
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
26
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
27
• Gli unici programmi di sistema presenti in questi calcolatori
erano i compilatori, caricatori, debugger e alcune librerie di
I/O, che costituivano l’ambiente di programmazione.
• Successivamente la CPU eseguiva il programma, il quale
una volta terminato restituiva il controllo della CPU al
monitor.
• Successivamente vennero introdotti i lettori di schede a
lotti, in grado di leggere programmi di più utenti,
organizzati a lotti. Ora, il monitor poteva passare
dall’esecuzione di un job al successivo job senza
l’intervento dell’operatore.
• L’efficienza aumentò, ma di poco.
• Le caratteristiche fondamentali dei sistemi batch sono:
– Efficienza di uso delle risorse di macchina (CPU,
memoria, periferiche …);
– I programmi venivano eseguiti in modo sequenziale,
nell’ordine in cui erano stati posizionati i pacchi nel lettore di
schede (non c’erano altre politiche di scheduling).
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
28
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
miglioramenti.
• Con la tecnica dello spooling (simultaneous peripheral
operation on line) si ebbe un apprezzabile primo
miglioramento.
• Tutti i job di un batch venivano caricati inizialmente su
disco e successivamente caricati in memoria per essere
eseguiti.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
29
• I risultati venivano salvati ancora su disco.
• I dati venivano caricati su disco tramite DMA, quindi la CPU
era libera di eseguire altre operazioni. Inoltre i risultati
venivano stampati trasferendo i dati da disco a stampante.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
30
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
Lettore schede
4
DMA
CPU
DMA
Stampante
MEMORIA
Sistema di spooling
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
31
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
32
• La memorizzazione delle applicazioni su disco (pool of job)
che è un dispositivo ad accesso casuale, consentì 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).
• Un netto miglioramento dell’efficienza d’uso della CPU e
delle risorse si ebbe grazie alla tecnica della
multiprogrammazione e della tecnica dell’interrupt.
• 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,
2014-2015 - Pietro Frasca
33
Programma N
Programma
applicativo
Programma 2
Programma 1
Sistema operativo
Struttura della memoria in
un sistema batch
monotasking
Sistema operativo
Struttura della memoria in
un sistema batch
multitasking
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
34
• 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,
2014-2015 - Pietro Frasca
35
• 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,
2014-2015 - Pietro Frasca
36
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,
2014-2015 - Pietro Frasca
37
• 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,
2014-2015 - Pietro Frasca
38
• 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, adottato presso i centri di
calcolo, era anche basato di eseguire prima i programmi in
base a diversi livelli di tariffe.
• 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 conto correnti, gestione assicurazioni e altre
attività che richiedono una grande potenza elaborativa su
grandissime quantità di dati.
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
39
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
40
Appunti di Sistemi Operativi,
2014-2015 - Pietro Frasca
41