Sistemi Operativi: Introduzione - Lezione 01

Preview:

Citation preview

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

Recommended