Post on 08-Jun-2015
transcript
Sistemi OperativiA.A. 2008/2009
Home page del corso:<http://informatica.scienze.unimo.it/sistemi-operativi.shtml>
Mauro Andreolinimauro.andreolini@unimore.it
2
Prerequisiti del corso• Conoscenza di base della struttura di un
calcolatore elettronico• Conoscenza del linguaggio C• Utilizzo “di base” di un calcolatore
elettronico
3
Prerequisiti del corso• Testi consigliati:
– A. Silberschatz, J. Peterson, P.Galvin,“Operating System Concepts” (Settima Edizione),Pearson, 2004ISBN: 0471694665
– R. Love,“Linux Kernel Development”,Novell Press, 2005ISBN: 0672327201
– R. Love,“Linux System Programming”,O'Reilly, 2007ISBN: 0596009585
– Dispense fornite dal docente
4
Definizione di SO• Sistema Operativo(SO): programma che
agisce come intermediario fra utente di un computer e l'hardware del computer stesso
• Scopi di un SO:– fornire un ambiente in cui un utente sia in
grado di eseguire dei programmi– rendere semplice e conveniente l'utilizzo di
un computer– utilizzare l'hardware del computer in maniera
efficiente
5
SO in un sistema di calcolo
utente1
utente2
utente3
utenten
Programmi applicativi
compilatore assemblatore editor di testo database
Sistema Operativo
Hardware
6
Ruoli di un SO• Allocatore di risorse
– il SO alloca le risorse a sua disposizione (CPU time, DISK space, I/O devices) a programmi ed utenti in base alle necessità
– il SO risolve i conflitti di assegnazione delle risorse in modo tale da operare efficientemente e correttamente
• Programma di controllo– il SO è un grande programma di controllo– controllo esecuzione programmi– impedisce che vengano commessi errori– impedisce utilizzi non corretti
7
L'evoluzione dei SO• I primi sistemi• Automatizzazione tramite monitor• Funzionamento off-line• Buffering e Spooling• I sistemi multiprogrammati• Time sharing• Sistemi distribuiti• Sistemi real-time
8
I primi sistemi (1940-1950)• Macchine molto grandi pilotate in
maniera elettromeccanica– input: schede perforate immesse dall'
operatore, console con switch elettrici– output: indicatori elettrici di stato, stampa su
schede perforate
• Natura interattiva del sistema– programmatore = operatore– tempo di esecuzione della macchina gestito
manualmente tramite foglio prenotazioni
9
I primi sistemi (1940-1950)Atanassov-Berry
(1937)
10
I primi sistemi (1940-1950)Colossus
(1944)
11
I primi sistemi (1940-1950)Harvard Mark I
(1944)
12
I primi sistemi (1940-1950)• Svantaggi
– schema di prenotazione scomodo ed inefficiente
– assenza di librerie generiche per la gestione delle risorse (device driver)
– immissione del programma scomoda
13
I primi sistemi (1940-1950)• Migliorie successive
– introduzione dei device driver– facilitazione del processo di generazione del
programma tramite:♦assemblatori♦compilatori♦linker♦librerie di funzioni comuni
– utilizzo di periferiche più avanzate♦lettori di schede♦stampanti♦nastri magnetici
14
I primi sistemi (1940-1950)Schede perforate IBM
(Fortran, 1964)
Codifica +
Codifica -
Codifica
digit 0-9
Codifica di 80 cifre “0-9”
15
I primi sistemi (1940-1950)Unità nastro Digital
(1964)
16
I primi sistemi (1940-1950)Unità stampante
IBM 1403 (1959)
17
I primi sistemi (1940-1950)• Job: è la sequenza di operazioni
– caricamento nastro compilatore– esecuzione nastro compilatore– rimozione nastro compilatore– caricamento nastro assemblatore– esecuzione nastro assemblatore– rimozione nastro assemblatore– caricamento programma oggetto– esecuzione programma oggetto
18
I monitor residenti (1950-1960)• Problemi
– Tempo necessario per la preparazione di un job troppo elevato
– Esecuzione alternata di programmi scritti in linguaggi diversi estremamente scomoda
– Interruzione di un job problematica
• Soluzioni– operatore professionista (diverso dal
programmatore)– sequenzializzatore automatico dei job
(monitor residente)
19
I monitor residenti (1950-1960)
caricatore
sequenzializzatoredi job
interprete delleschede di controllo
area programmiutente
20
I monitor residenti (1950-1960)• Monitor residente: programma residente in
memoria che automatizza il caricamento di un job
• Caricatore: si occupa del caricamento del programma in memoria
• Sequenzializzatore di job: si occupa della esecuzione sequenziale dei job
• Interprete delle schede di controllo: gestisce le cosiddette “schede di controllo” che indicano al monitor quale programma eseguire
21
I monitor residenti (1950-1960)• Ciascun programma è descritto da una scheda
di controllo che lo attiva• Un job è delimitato da due schede di controllo
speciali: $JOB, $END
$JOB
$END
$FTN
programma da compilare
$LOAD
$RUN
dati del programma
22
I monitor residenti (1950-1960)Cassetto di schede
23
Funzionamento offline (1950-1960)• Problemi
– velocità I/O << velocità CPU– di conseguenza, la CPU è spesso inattiva,
aspettando il completamento I/O
• Soluzioni– utilizzo di periferiche più veloci– modalità di funzionamento off-line
24
Funzionamento offline (1950-1960)• Modalità off-line:
– i nastri di input vengono riversati su un nastro veloce
– la CPU legge i dati dal nastro– il calcolatore riversa i dati su nastro– i dati su nastro vengono stampati– funzionamento delle periferiche lente (lettori
di schede, stampanti) avviene off-line– primo esempio di gerarchia di memoria– device-independence dei programmi
25
Funzionamento offline (1950-1960)• Approcci off-line:
– periferiche (lettori di nastro, stampanti) direttamente collegate alle unità nastro
– piccolo elaboratore delegato alla copia da/su nastro
• Es.: sistema IBM 1401 (1959)
26
Funzionamento offline (1950-1960)IBM 1401 (1959)
IBM 1402
Card reader
IBM 1401
Processor
IBM 1403
Printer
27
Buffering e Spooling (1960)• Problemi:
– la modalità di funzionamento off-line richiede l'utilizzo di più macchine separate
• Soluzioni:– utilizzo delle tecniche di:
♦buffering♦spooling
28
Buffering• Buffering: area di memoria intermedia
dedicata al salvataggio temporaneo di informazioni– sovrapposizione tempo I/O – tempo CPU– appena letto il blocco di dati corrente:
♦ la CPU elabora il blocco dati corrente♦ la periferica legge il blocco dati successivo
– la CPU produce dati fino al riempimento del buffer
– buffering implementato nel (device driver del) dispositivo
– se velocità CPU >> velocità I/O, il buffering non sempre è efficiente
29
BufferingC
Input OutputBUFFER
B
Elaboratore
Unità di I/O
T
30
Buffering e Spooling (1960) (3)• Spooling:
– Simultaneous Peripheral Operations On Line– Se velocità CPU >> velocità I/O, occorrono
buffer enormi per gestire un numero elevato di utenze
– Implementazione dei buffer tramite file temporanei memorizzati su dischi
– utilizzo dei primi sistemi a disco– Utilizzato ancora oggi nei sistemi in cui
l'output predomina sul calcolo:♦Posta elettronica♦Stampa
31
SpoolingC
Input Output
Elaboratore Unità di I/OUnità di I/O(disco)
Area spool
OOO
Unità di I/O(stampa)
OutputPronto
P
32
Multiprogrammazione (1960)• Problemi:
– singoli job eseguiti sequenzialmente– problema dei tempi morti dovuti ad I/O
• Soluzioni:– job eseguiti fino a quando non si verifica
attesa su I/O (non più eseguiti integralmente)– quando un job è in attesa di I/O, il sistema
ripristina l'esecuzione di un altro job– finchè c'è un job da eseguire, la CPU rimane
attiva– requisiti: gestione memoria, job scheduling
33
Sistema monoprogrammato
Job 1
Job 2
Job 3
0 5 10 15 20 25 30 35 40 45
Job scheduling
Sistema monoprogrammato
I/OCPUIdle
Tempo
Job
Finisce a 39!13+25=38istanti di idle
34
Sistema multiprogrammato
Job 1
Job 2
Job 3
0 5 10 15 20 25 30 35
Job scheduling
Sistema multiprogrammato
I/OIdleCPUIdle
Tempo
Job
Finisce a 33!3+5+8+16=32istanti di idle
35
Time Sharing (1960)• Problemi
– mancanza di interattività fra macchina ed utente durante l'esecuzione del job
– il programmatore può ricevere l'output del job svariati giorni dopo la sua esecuzione
• Soluzioni– Aumentare l'interattività del sistema con
l'utente– Tecnica del Time Sharing
36
Time Sharing (1960)• estensione logica della multiprogrammazione• la CPU esegue più job (concorrentemente) in
modalità multiprogrammata• ciascun job possiede, a turno, la CPU per un
intervallo di tempo (quanto)• Frequenza commutazione elevata:
job scheduling->CPU scheduling• gli utenti possono interagire con i programmi• evoluzione rispetto ai sistemi batch non interattivi• interazione on-line tramite schermi e tastiera
(concetto di shell)• utilizzo dei primi file system• multiutenza
37
Time Sharing (1960)
Job 1
Job 2
Job 3
0 5 10 15 20 25 30 35 40
Job scheduling
Sistema time sharing
I/OIdleCPUIdleCPUIdle
Tempo
Job
Uso CPUfinisce a 6!
38
Sistemi distribuiti (1980)• Problemi
– singolo elaboratore peggiora le prestazioni al crescere della richiesta di calcolo
– dati utente non replicati
• Soluzioni– distribuzione del calcolo su diversi
processori fisici♦sistemi multiprocessori (strettamente
accoppiati)♦nodi distribuiti in rete locale (debolmente
accoppiati)
39
Sistemi distribuiti (1980)• Pregi dei sistemi distribuiti
– condivisione di risorse– accelerazione del calcolo– affidabilità– comunicazione fra utenti
40
Sistemi real time (1980)Problemi• spesso le prestazioni di un SO sono altamente
fluttuanti• alcuni problemi dedicati richiedono
elaborazione entro un prefissato intervallo di tempo
• Soluzioni– estendere il SO con supporto real-time
♦soft real-time♦hard real-time