+ All Categories
Home > Documents > Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente...

Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente...

Date post: 01-May-2015
Category:
Upload: eusebio-pavan
View: 214 times
Download: 0 times
Share this document with a friend
21
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo linguaggio macchina; un programma dipenderebbe strettamente dalla struttura hardware e ogni piccola differenza hardware comporterebbe una riscrittura del programma.
Transcript
Page 1: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Il Software: Obiettivi

Programmare direttamente la macchina hardware è molto difficile:

l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo linguaggio macchina;

un programma dipenderebbe strettamente dalla struttura hardware e ogni piccola differenza hardware comporterebbe una riscrittura del programma.

Page 2: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Questo non è accettabile, vogliamo invece: astrarre dall’organizzazione fisica della macchina,

in quanto vogliamo usare nello stesso modo, macchine leggermente diverse dal punto di vista hardware o, al limite, macchine con hardware molto diverso

interagire in modo semplice con la macchina; programmare ad alto livello la macchina; infine vogliamo programmi applicativi per

svolgere diversi compiti utili (videoscrittura, fogli di calcolo, database, editing di immagini, etc…)

Page 3: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale

HW

macchina virtuale

Utente

Concetto di Macchina Virtuale

Page 4: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Macchine Virtuali Ogni macchina reale ha un suo linguaggio macchina

L0 le cui istruzioni sono direttamente eseguibili dal processore (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: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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

Interprete dei comandi

Page 6: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Il software fornisce:

1. Un sistema di interazione semplice con la macchina

2. Linguaggi ad alto livello per programmare la macchina;

3. Programmi applicativi per svolgere diversi compiti (videoscrittuta, fogli di calcolo, database, etc…)

Page 7: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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

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

stampa doc1

1. Esempio esecuzione di un comando virtuale

Page 8: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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

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

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: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

2. Linguaggi di programmazione

Un programma scritto in un linguaggio di programmazione è costituito da una sequenza di istruzioni ad alto livello strutturate in modo complesso

Compilatore: traduce il programma intero in un insieme di istruzioni macchina– il programma tradotto si chiama (file) eseguibile

Interprete: traduce una istruzione per volta del linguaggio in una sequenza di istruzioni macchina e le esegue

Page 10: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Software di base 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

Strumenti per l’uso di linguaggi ad alto livello:– Interpreti e compilatori– Strumenti per l’esecuzione di programmi

Page 11: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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 12: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Tipi di sistemi operativi

Esistono diversi tipi di sistemi operativi per diverse

classi di computer

Distinzione fondamentale

– sistemi mono-utente

– sistemi multi-utente

Page 13: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Il Sistema Operativo

Sistemi mono-utente 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,Linux)

Page 14: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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

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

finestre) Windows NT,2000,XP

– Utilizzato per computer collegati in rete

Page 15: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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 16: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

Processore e processi

La gestione del processore è in modo:

mono-tasking: esegue un programma per volta (MS-DOS)

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

Page 17: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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 18: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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 19: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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 20: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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 21: Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.

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


Recommended