40
Sistemi Operativi A.A. 2008/2009 Home page del corso: <http://informatica.scienze.unimo.it/sistemi-operativi.shtml> Mauro Andreolini [email protected]

Sistemi Operativi: Introduzione - Lezione 01

Embed Size (px)

Citation preview

Page 1: Sistemi Operativi: Introduzione - Lezione 01

Sistemi OperativiA.A. 2008/2009

Home page del corso:<http://informatica.scienze.unimo.it/sistemi-operativi.shtml>

Mauro [email protected]

Page 2: Sistemi Operativi: Introduzione - Lezione 01

2

Prerequisiti del corso• Conoscenza di base della struttura di un

calcolatore elettronico• Conoscenza del linguaggio C• Utilizzo “di base” di un calcolatore

elettronico

Page 3: Sistemi Operativi: Introduzione - Lezione 01

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

Page 4: Sistemi Operativi: Introduzione - Lezione 01

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

Page 5: Sistemi Operativi: Introduzione - Lezione 01

5

SO in un sistema di calcolo

utente1

utente2

utente3

utenten

Programmi applicativi

compilatore assemblatore editor di testo database

Sistema Operativo

Hardware

Page 6: Sistemi Operativi: Introduzione - Lezione 01

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

Page 7: Sistemi Operativi: Introduzione - Lezione 01

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

Page 8: Sistemi Operativi: Introduzione - Lezione 01

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

Page 9: Sistemi Operativi: Introduzione - Lezione 01

9

I primi sistemi (1940-1950)Atanassov-Berry

(1937)

Page 10: Sistemi Operativi: Introduzione - Lezione 01

10

I primi sistemi (1940-1950)Colossus

(1944)

Page 11: Sistemi Operativi: Introduzione - Lezione 01

11

I primi sistemi (1940-1950)Harvard Mark I

(1944)

Page 12: Sistemi Operativi: Introduzione - Lezione 01

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

Page 13: Sistemi Operativi: Introduzione - Lezione 01

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

Page 14: Sistemi Operativi: Introduzione - Lezione 01

14

I primi sistemi (1940-1950)Schede perforate IBM

(Fortran, 1964)

Codifica +

Codifica -

Codifica

digit 0-9

Codifica di 80 cifre “0-9”

Page 15: Sistemi Operativi: Introduzione - Lezione 01

15

I primi sistemi (1940-1950)Unità nastro Digital

(1964)

Page 16: Sistemi Operativi: Introduzione - Lezione 01

16

I primi sistemi (1940-1950)Unità stampante

IBM 1403 (1959)

Page 17: Sistemi Operativi: Introduzione - Lezione 01

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

Page 18: Sistemi Operativi: Introduzione - Lezione 01

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)

Page 19: Sistemi Operativi: Introduzione - Lezione 01

19

I monitor residenti (1950-1960)

caricatore

sequenzializzatoredi job

interprete delleschede di controllo

area programmiutente

Page 20: Sistemi Operativi: Introduzione - Lezione 01

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

Page 21: Sistemi Operativi: Introduzione - Lezione 01

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

Page 22: Sistemi Operativi: Introduzione - Lezione 01

22

I monitor residenti (1950-1960)Cassetto di schede

Page 23: Sistemi Operativi: Introduzione - Lezione 01

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

Page 24: Sistemi Operativi: Introduzione - Lezione 01

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

Page 25: Sistemi Operativi: Introduzione - Lezione 01

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)

Page 26: Sistemi Operativi: Introduzione - Lezione 01

26

Funzionamento offline (1950-1960)IBM 1401 (1959)

IBM 1402

Card reader

IBM 1401

Processor

IBM 1403

Printer

Page 27: Sistemi Operativi: Introduzione - Lezione 01

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

Page 28: Sistemi Operativi: Introduzione - Lezione 01

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

Page 29: Sistemi Operativi: Introduzione - Lezione 01

29

BufferingC

Input OutputBUFFER

B

Elaboratore

Unità di I/O

T

Page 30: Sistemi Operativi: Introduzione - Lezione 01

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

Page 31: Sistemi Operativi: Introduzione - Lezione 01

31

SpoolingC

Input Output

Elaboratore Unità di I/OUnità di I/O(disco)

Area spool

OOO

Unità di I/O(stampa)

OutputPronto

P

Page 32: Sistemi Operativi: Introduzione - Lezione 01

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

Page 33: Sistemi Operativi: Introduzione - Lezione 01

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

Page 34: Sistemi Operativi: Introduzione - Lezione 01

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

Page 35: Sistemi Operativi: Introduzione - Lezione 01

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

Page 36: Sistemi Operativi: Introduzione - Lezione 01

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

Page 37: Sistemi Operativi: Introduzione - Lezione 01

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!

Page 38: Sistemi Operativi: Introduzione - Lezione 01

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)

Page 39: Sistemi Operativi: Introduzione - Lezione 01

39

Sistemi distribuiti (1980)• Pregi dei sistemi distribuiti

– condivisione di risorse– accelerazione del calcolo– affidabilità– comunicazione fra utenti

Page 40: Sistemi Operativi: Introduzione - Lezione 01

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