Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto...

50
Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo linguaggio macchina; ogni programma dovrebbe essere scritto utilizzando sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso.

Transcript of Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto...

Page 1: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Il Software

Una programmazione diretta della macchina hardware

da parte degli utenti è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica

del computer e il suo linguaggio macchina; ogni programma dovrebbe essere scritto

utilizzando sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso.

Page 2: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Questo non è accettabile ed è necessario fornire all’utente un meccanismo per:

astrarre dall’organizzazione fisica della macchina; usare nello stesso modo, o in modo molto simile,

macchine leggermente diverse dal punto di vista hardware o, al limite, macchine con hardware profondamente differente;

avere un linguaggio di interazione semplice con la macchina;

linguaggi semplici e ad alto livello per programmare la macchina;

avere un insieme di programmi applicativi per svolgere diversi compiti (videoscrittuta, fogli di calcolo, database, etc…)

Page 3: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale

HW

macchina virtuale

Utente

Page 4: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Macchine Virtuali Ogni macchina reale ha un suo linguaggio macchina

L0 le cui istruzioni sono direttamente eseguibili dai circuiti elettronici (HW)

Al di sopra di questo linguaggio è possibile definire una gerarchia di linguaggi Li e fornire delle regole per tradurne le istruzioni in opportune sequenze di istruzioni in linguaggio macchina

L’insieme di queste nuove istruzioni definisce una macchina virtuale in quanto non esiste fisicamente ma viene realizzata mediante il software

La macchina virtuale si occupa della traduzione delle istruzioni al livello Li nell'opportuna sequenza di istruzioni di livello Li-1 che realizza la stessa funzione

Page 5: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Machine virtuali

Hardware - Linguaggio macchina L0

Macchina virtuale N - sistema di comandi LN

Utente

Interprete dei comandi

Interfaccia

Macchina virtuale 1 - sistema di comandi L1

Page 6: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

supponiamo che l'utente voglia stampare un documento doc1 (un file). A livello fisico questa operazione è complessae richiede operazioni di trasferimento dati dal discoalla stampante (via memoria principale)

La macchina virtuale può fornire all'utente un semplice comando di stampa del tipo:

> print doc1mediante il quale può richiedere la stampa delle informazioni contenute nel file di nome doc1

Esempio esecuzione di un comando virtuale

Page 7: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

La macchina virtuale deve innanzitutto verificare se si tratta di un comando valido

Poi tradurlo nell’opportuna sequenza di istruzioni a basso livello per la macchina fisica

Una volta eseguito il comando, la macchina virtuale si pone in attesa di un nuovo comando da parte dell'utente

Grazie a questo livello software si può astrarre dalle caratteristiche fisiche della macchina e della periferica (la stampante)

Page 8: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Si può anche fare in modo che macchine differenti

siano usabili in modo simile: si tratta, infatti, di

costruire al di sopra delle diverse macchine fisiche

la stessa macchina virtuale

Per ogni comando della macchina virtuale si

dovranno però avere diversi programmi di

traduzione, uno per ogni tipo di hardware

Page 9: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Software di base Strumenti per l’uso di linguaggi ad alto livello:

– Interpreti e compilatori– Strumenti per l’esecuzione di programmi

Sistema Operativo: insieme di programmi che interagiscono e cooperano tra di loro per realizzare due obiettivi fondamentali:

– gestire efficientemente il computer e le sue periferiche, cercando di sfruttare al massimo tutte le componenti hardware

– creare un ambiente virtuale per facilitare l'interazione uomo-macchina

Page 10: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Compiti del Sistema operativo

Configurazione e accensione macchina Gestione del processore Gestione della memoria principale Gestione di informazione su memoria

secondaria

=> FILE SYSTEM

Page 11: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Gestione delle risorse – uso semplificato e astratto risorse per utente, es.

stampanti, dischi, nastri ...– uso ottimale a seconda del sistema

Interazione utente macchina: interfaccia e interprete comandi Protezione dei dati (sicurezza) supporto per l’esecuzione dei programmi applicativi

Il Sistema Operativo fornisce i servizi che sono necessari a tutti gli altri programmi in esecuzione

Page 12: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Struttura del sistema operativo

nucleo

gestione memoria processore, risorse

interfaccia comandi

Page 13: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Tipi di sistemi operativi

Esistono diversi tipi di sistemi operativi per diverse

classi di computer

Primi sistemi operativi (anni 60) avevano lo scopo di

semplificare interazione con il computer

Distinzioni tradizionali

– sistemi mono-utente - sistemi multi-utente

– sistemi interattivi - sistemi batch

Page 14: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Il Sistema Operativo

Sistemi mono-utente interattivi pensati per Personal Computer– IBM PC - Compatibili (DOS - Windows)– Macintosh

Due diversi tipi di interazione utente/computer:– interazione testuale (es. MS-DOS per PC-IBM)– interazione grafica (es. Macintosh, Windows 95-98-

2000)

Page 15: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Sistemi operativi multi-utente: UNIX (Workstation, PC: LINUX)

– Utilizzato per computer collegati in rete– supporta varie interfacce grafiche (a

finestre) Windows NT

– Utilizzato per computer collegati in rete

Page 16: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Il Sistema Operativo: Esempio

Eseguiamo il programma che permette di ottenere una finestra MS-DOS

Page 17: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Immettiamo il comando date

Page 18: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Premendo il tasto “Enter” si ottiene

Page 19: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

L’esecuzione di un comando semplice come date

provoca l’esecuzione di una decina (o anche più) di

funzionalità del S.O.

Le operazioni effettuate provocano una serie di

eventi in cui vengono coinvolte sia risorse hardware

che risorse software

Il coordinamento e la gestione delle varie risorse

viene effettuato dal Sistema Operativo

Page 20: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Per ogni carattere immesso tramite la tastiera viene inviato un codice corrispondente al computer

Il codice viene ricevuto dal controller della tastiera Il codice viene memorizzato in un’area di memoria

riservata (buffer) e viene inviato un segnale alla CPU (interrupt)

Quando la CPU riceve un interrupt dalla tastiera attiva un modulo (un piccolo programma) chiamato terminal driver

Il terminal driver invia al monitor una copia del codice del carattere immesso per visualizzare il carattere

Page 21: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Il codice corrispondente al carattere “Enter” indica che il comando immesso (date) è completo

Il terminal driver attiva un altro modulo chiamato listener (perchè attende i comandi provenienti dagli utenti)

Il listener legge i caratteri dal buffer della tastiera e ricerca un programma chiamato date, lo carica in memoria centrale e lo esegue

Il programma date “va a leggere” un “orologio” (un contatore che tiene conto dello scorrere del tempo) e passa l’informazione letta al terminal driver

Il terminal driver trasmette la data al monitor che la visualizza

Page 22: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Ognuno di questi eventi può essere descritto in dettaglio, per esempio:

– prima che il programma listener carichi il programma date in memoria deve localizzare la “directory” dove tale comando si trova, ecc.

– La fase di caricamento del programma comprende una fase di lettura dal disco rigido

Page 23: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio

Ogni carattere dato in input dalla tastiera viene ricevuto dal terminal driver che lo invia al monitor per la visualizzazione

listenerdirectory manager

terminal driverdisk driver

file manager

Disco rigido

BUFFERTastiera

BUFFER

Monitor

148.608.043.200.010

timerdat

datMEMORIACENTRALE

Page 24: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio

Quando viene immesso il carattere Enter <cr> il terminal driver passa la stringa date al programma listener che interpreta il comando

listenerdirectory manager

terminal driverdisk driver

file manager

Disco rigido

BUFFERTastiera

BUFFER

Monitor

date<cr>

date<cr>

148.608.043.200.020

MEMORIACENTRALE

timer

Page 25: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio

Il listener richiede al directory manager di cercare (nella directory dei comandi) date. Il programa directory manager richiede al programma file manager, che a sua volta si avvale del programma disk driver, di localizzare sul disco rigido il programma date

Tastiera

listenerdirectory manager

terminal driverdisk driver

file manager

Disco rigido

BUFFER

BUFFER

Monitor

148.608.043.200.032

MEMORIACENTRALE

timer

Page 26: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio

Quando il comado date è stato localizzato (è un file eseguibile) il listener (mediante il file manager) lo carica in memoria. Per fare questa operazione il file manager utilizza il disk driver

Tastiera

datelistener

directory manager

terminal driverdisk driver

file manager

Disco rigido

BUFFER

BUFFER

Monitor

148.608.043.200.045

MEMORIACENTRALE

timer

Page 27: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio

Il listener manda in esecuzione il programma date che legge il timer ed effettua delle operazioni di conversione per trasformare il valore letto nella data del giorno

Tastiera

datelistener

directory manager

terminal driverdisk driver

file manager

Disco rigido

BUFFER

BUFFER

Monitor

148.608.043.200.101

MEMORIACENTRALE

timer

Page 28: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio

Il programma date tramite il terminal driver visualizza sul monitor la data

Tastiera

datelistener

directory manager

terminal driverdisk driver

file manager

Disco rigido

BUFFER

BUFFER

Monitor

148.608.043.200.104

MEMORIACENTRALE27/03/02

timer

Page 29: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

La gestione dei vari eventi è compito del sistema operativo

E’ necessario avere una gerarchia di livelli di astrazione. Le funzionalità presenti ad ogni livello possono ignorare i dettagli sulle funzionalità offerte da altri livelli

Al livello più alto della gerarchia di funzionalità si trova l’utente del sistema

Page 30: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

l’utente è ignaro di tutti i dettagli delle operazioni svolte dai livelli inferiori della gerarchia

L’utente ha conoscenza solo delle operazioni che è interessato ad effettuare (Nell’esempio di precedente l’utente è interessato alla data e conosce solo il comando che serve per ottenere tale informazione)

Page 31: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Compiti del Sistema operativo Configurazione e accensione macchina Gestione del processore Gestione della memoria principale Gestione di informazione in memoria

secondaria (File System) Gestione delle periferiche Interazione utente macchina: interfaccia e

interprete comandi Protezione dei dati (sicurezza)

Page 32: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Avviamento del computer

Fase di bootstrap: Verifica delle risorse hardware e

inizializzazione dei programmi relativi di gestione

diagnostica (antivirus) caricamento completo e mantenimento del

sistema operativo

Page 33: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

BIOS (Basic Input-Output System)

E’ la parte piu’ interna del SO risiede su un chip di memoria RAM permenente (e ROM)

gestisce direttamente le risorse hardware (terminal driver)

gestisce anche il caricamento (avviamento) del sistema operativo (ad es. Windows o DOS)

Page 34: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Gestione del processore e dei processi

Il processore è la componente più importante di un sistema di elaborazione e pertanto la sua corretta ed efficiente gestione è uno dei compiti principali di un sistema operativo

Il ruolo del processore è quello di eseguire programmi

Si chiama processo un programma in esecuzione

Page 35: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Processore e processi

La gestione del processore è in modo:

mono-tasking: esegue un processo per volta (DOS)

multi-tasking: esegue più processi contemporaneamente (Windows varie versioni dal 95, Macintosh, UNIX)

Page 36: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

qualunque processo alterna fasi di esecuzione a fasi in cui è bloccato in attesa di qualche evento esterno

Un processo può essere in attesa che sia terminata un’operazione di input di dati oppure in attesa di poter usare una risorsa in quel momento occupata

mentre il processo è bloccato in attesa di eventi esterni, il processore rimane inattivo, in uno stato chiamato idle, e risulta pertanto sotto-utilizzato

Limite del mono-tasking

Page 37: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

I tempi di lavoro delle periferiche di input/output, o

addirittura i tempi di reazione umani sono maggiori di

molti ordini di grandezza della velocità del processore

(quindi del tempo in cui un processo è in esecuzione)

Page 38: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Multi-tasking

Come è possibile eseguire più programmi contemporaneamente sullo stesso processore?Ad ogni istante vi è un solo processo attivo

Il processore alterna l’esecuzione dei vari programmi

Il tempo di lavoro della CPU viene suddiviso tra i vari programmi

Se l'alternanza tra i processi è frequente (ad es.10 millisecondi), l'utente ha l'impressione che l'esecuzione dei programmi sia simultanea

Page 39: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

A livello macroscopico si ha quindi l'impressione della contemporaneità, mentre a livello microscopico si ha una semplice alternanza sequenziale molto veloce

Il tempo di esecuzione, cioè il tempo che intercorre tra l'inizio e la fine del processo, risulta aumentato rispetto al caso mono-tasking a causa dell’alternanza con gli altri processi

Page 40: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Un processo può trovarsi in tre diversi stati:

in esecuzione, quando sta utilizzando il processore;

in attesa (bloccato), quando è in attesa del verificarsi di un evento esterno (terminazione di un’operazione di input/output o altro)

pronto, quando è potenzialmente in condizione di utilizzare il processore che è occupato da un altro processo

Page 41: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Gestione del processore e dei processi

I/O terminato o risorsa disponibile

in_esecuzione

pronto in_attesacreazione

terminazione

richiesta I/O o risorsascambio

esecuzione

Page 42: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Il sistema operativo stabilisce quale processo deve avere il controllo della CPU adottando una politica di scheduling

tutte le informazioni relative ad un processo attivo vengono salvate in una tabella dei processi

ogni volta che un processoP1 viene sospeso dall’esecuzione vengono salvate le informazioni relative (il contenuto dei registri) nella tabella dei processi.

Se un processo P2 viene ammesso all’esecuzione si caricano nei registri le informazioni relative a P2 contenute nella tabella

Lo scambio di controllo del processore tra P1 e P2 viene chiamato context switch

Page 43: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Gestione della memoria principale

Nel caso multi-tasking la memoria deve essere condivisa da piu’ programmi

la memoria viene suddivisa in blocchi, ad ogni programma viene assegnato un certo numero di blocchi (non necessariamente contigui) di memoria

Meccanismi di partizione: – paginazione: blocchi di dimensione costante: – segmentazione: blocchi di dimensione

variabile

Page 44: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Indirizzi fisici e indirizzi logici

indirizzi logici: gli indirizzi presenti nei programmi indirizzi fisici: gli indirizzi RAM assegnati al

programma quando viene caricato dal disco Per poter essere caricato a blocchi il programma

viene suddiviso in blocchi logici e il SO si occupa di assegnare a ciascun blocco logico un blocco fisico facendo corrispondere gli indirizzi logici a quelli fisici

Page 45: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Corrispondenza tra blocchi logici e fisici

RAM

P1/2

P2/1

P2/2

P1/3

P3/1

P3/2P1/1

P1/2

P1/3

P3/1

P2/1

P2/2

P2/3P2/3

P3/2

P1/1

Page 46: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Memoria virtuale Come è possibile eseguire uno o più progammi

contemporaneamente che richiedono piu’ memoria di quanta sia disponibile?

Per eseguire un programma non è necessario caricarlo completamente in memoria

È sufficiente caricare in memoria principale solo quelle parti del programma e dei dati che servono durante una certa fase dell’esecuzione; le altre parti possono essere tenute su un supporto di memoria secondaria

Page 47: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Per gestire la memoria in modo virtuale, si usa: La memoria principale in cui tenere solo i

programmi, o i pezzi di programmi, che servono in un certo istante.

Un supporto di memoria secondaria in cui mantenere tutte le informazioni relative ai processi (programma e dati). Si utilizzano i dischi rigidi perché sono abbstanza veloci e hanno accesso diretto)

Page 48: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Le pagine vengono caricate nella RAM indipendentemente, quando sono richieste per l’esecuzione (on demand)

Il SO stabilisce quali pagine scaricare o eliminare dalla RAM per far posto a nuove pagine di processi in esecuzione. Se le pagine sono state modificate devono essere ricopiate sul disco

La gestione della memoria virtuale può essere costosa in termini di tempo e rallenta l’esecuzione di un programma

Demand paging

Page 49: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Esempio: la RAM non è sufficiente a contenere P1, P2 e P3

RAM

P1/2

P2/1

P2/2

P1/3

P3/1

P3/2P1/1

P1/2

P1/3

P3/1

P2/1

P2/2

P2/3

Page 50: Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.

Visione astratta della memoria: un programma non deve conoscere la configurazione e le dimensioni della memoria reale e può essere eseguito su computer con dotazioni di memoria differenti