Prof. Rossella Cancelliere - Dipartimento di Informatica

Laboratorio di Informatica
e Statistica
Chimica Industriale
a.a 2004/05
Prof. Rossella Cancelliere
Dip. Informatica Univ.Torino
C.so Svizzera 185,Torino
email:[email protected]
tel: 011/670 67 77
Obiettivi del corso
Basi dell’informatica:
n codifica dell’informazione
n hardware: struttura di un computer
n software: sistemi operativi e file system
n fogli elettronici
Statistica:
n Statistica descrittiva
n Distribuzione Gaussiana
Laboratorio
n Esercitazioni in laboratorio
1
Testi per il corso
Testi adottati:
n
L. Console, M. Ribaudo, Introduzione all'informatica, Torino
Utet libreria, 1997
n
Dispense e lucidi delle lezioni
Altri testi:
n
D. P. Curtin, K. Foley, K. Sen, C. Morin Informatica di base, Mc
Graw Hill, 2002
n
S. Grandi, E. Bonechi, Informatica Zero, Apogeo, 2000.
n
F. Pellerey, Elementi di statistica per le applicazioni, Celid,
1998
n
A. Scagni, Introduzione alle tecniche di ricerca e di
elaborazione dei dati, 3° edizione, Tirrenia Stampatori, 2001
n
Microsoft, Office ’97: a colpo d’occhio, Mondadori Informatica,
2000
Il Software: Obiettivi
Programmare direttamente la macchina hardware è molto
difficile:
n
l’utente dovrebbe conoscere l’organizzazione fisica del
computer e il suo linguaggio macchina;
n
un programma dipenderebbe strettamente dalla struttura
hardware e ogni piccola differenza hardware comporterebbe
una riscrittura del programma.
2
n
n
n
n
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…)
Concetto di Macchina Virtuale
Questi obiettivi vengono raggiunti grazie alla
definizione di macchine virtuali che vengono
realizzate al di sopra della macchina hardware reale
Utente
HW
macchina virtuale
3
Macchine Virtuali
n
n
n
n
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
Machine virtuali
Utente
Interfaccia
Macchina virtuale N - sistema di comandi LN
Interprete dei comandi
Macchina virtuale 1 - sistema di comandi L1
Interprete dei comandi
Hardware - Linguaggio macchina L0
4
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…)
1. Esempio esecuzione di un comando virtuale
supponiamo che l'utente voglia stampare
un documento doc1 (un file).
A livello fisico questa operazione è complessa
e 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
5
n
n
n
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)
n
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
n
Per ogni comando della macchina virtuale si dovranno però
avere diversi programmi di traduzione, uno per ogni tipo di
hardware
2. Linguaggi di programmazione
n
n
n
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
6
Software di base
n
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
n
– 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
Compiti del Sistema operativo
n
Configurazione e accensione macchina
n
Gestione del processore
n
Gestione della memoria principale
n
Gestione di informazione in memoria
secondaria (File System)
n
Gestione delle periferiche
n
Interazione utente macchina: interfaccia e
interprete comandi
Protezione dei dati (sicurezza)
n
7
Tipi di sistemi operativi
n
Esistono diversi tipi di sistemi operativi per diverse
classi di computer
n
Distinzione fondamentale
– sistemi mono-utente
– sistemi multi-utente
Il Sistema Operativo
Sistemi mono-utente pensati per Personal Computer
– IBM PC - Compatibili (DOS - Windows)
– Macintosh
n Due diversi tipi di interazione utente/computer:
– interazione testuale (es. MS-DOS per PC-IBM)
– interazione grafica (es. Macintosh, Windows,Linux)
8
Sistemi operativi multi-utente:
n UNIX (Workstation, PC: LINUX)
– Utilizzato per computer collegati in rete
– supporta varie interfacce grafiche (a
finestre)
n Windows NT,2000,XP
– Utilizzato per computer collegati in rete
Gestione del processore e dei processi
n
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
n
Il ruolo del processore è quello di eseguire
programmi
n
Si chiama processo un programma in esecuzione
9
Processore e processi
La gestione del processore è in modo:
mono-tasking: esegue un programma per
volta (MS-DOS)
n
multi-tasking: esegue più programmi
contemporaneamente (Windows varie versioni
dal 95, Macintosh, UNIX)
n
Limite del mono-tasking
n
qualunque processo alterna fasi di esecuzione a fasi
in cui è bloccato in attesa di qualche evento esterno
n
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
n
mentre il processo è bloccato in attesa di eventi
esterni, il processore rimane inattivo, in uno stato
chiamato idle, e risulta pertanto sotto-utilizzato
10
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)
Multi-tasking
n
n
n
n
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
11
n
A livello macroscopico si ha quindi l'impressione
della
contemporaneità,
mentre
a
livello
microscopico si ha una semplice alternanza
sequenziale molto veloce
n
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
Un processo può trovarsi in tre diversi stati:
n
in esecuzione,
processore;
quando
sta
utilizzando
il
n
in attesa (bloccato), quando è in attesa del
verificarsi di un evento esterno (terminazione di
un’operazione di input/output o altro)
n
pronto, quando è potenzialmente in condizione
di utilizzare il processore che è occupato da un
altro processo
12