software e so - di.unito.itpozzato/informatica/software e so.pdf · il software • l’hardware da...
TRANSCRIPT
1
Software e Sistema Operativo
Queste slides sono un adattamento di quelle di Luca Anselma, cui va il mio ringraziamento
Il Software
• L’hardware da solo è soltanto un insieme di ferro, plastica e silicio e non è sufficiente per il funzionamento dell’elaboratore
• Occorre utilizzare il software:
– un insieme di programmi che permettono di trasformare un insieme di circuiti elettronici in un oggetto in grado di svolgere funzioni di varia natura
• I computer sono programmabili: possono svolgere compiti diversi in base a istruzioni contenute nei programmi
3
Il Software
• L’utilizzo diretto dell’hardware è complicato:
– l’utente dovrebbe sapere programmare
– il programmatore dovrebbe conoscere l’hardware e il relativo linguaggio macchina
– ogni programma dovrebbe essere scritto come sequenza di bit
– modifiche hardware richiederebbero la riscrittura (parziale) del programma
Non accettabile!
4
Il Software
Occorre fornire all’utente un meccanismo per: –astrarre dall’organizzazione fisica per:
•usare nello stesso modo (o in modo simile) macchine (hardware) diverse
•avere un semplice linguaggio di interazione
–avere un insieme di programmi applicativi per svolgere diversi compiti: elaborare testi, navigare in Internet, ecc.
5
Il Software• I computer moderni raggiungono questi obiettivi mediante la definizione di
macchine virtuali realizzate al di sopra della macchina hardware reale
macchina virtuale
HW
Utente
6
Macchine virtuali
• La macchina virtuale:
–consiste in un livello software creato sull’hardware
– fornisce le funzionalità desiderate ed è facile da utilizzare
–è virtuale in quanto non esiste fisicamente, ma viene realizzata mediante il software (sistema operativo o software di base)
7
Macchine virtuali• L'utente interagisce con la macchina virtuale con un
linguaggio ad alto livello (interfaccia grafica/testuale)
macchina virtuale
HW
Utentelinguaggio ad alto livello
linguaggio macchina
• La macchina virtuale traduce ogni comando ad alto livello nell'opportuna serie di comandi per l’hardware: astrazione
8
Il sistema operativo
Sistema Operativo: insieme di programmi che interagiscono e cooperano tra di loro per:
• gestire efficientemente il computer e le sue periferiche
• creare un ambiente virtuale per facilitare l'interazione uomo-macchina
9
Il sistema operativo
Esempio: stampa di un file che si chiama “Documento”
A livello fisico questa operazione è complessa e richiede operazioni coordinate dalla CPU
Per fortuna, il s.o. fornisce all'utente un comando di stampa:
print Documento
10
Il sistema operativo
Il s.o. esegue un comando seguendo i seguenti passi:
1. verifica se si tratta di un comando valido
2. lo traduce per la macchina fisica
3. eseguito il comando,
a) fornisce un riscontro all’utente e
b) si pone in attesa di un nuovo comando da parte dell’utente
11
Il sistema operativo
macchina virtuale 1
HW1
Utente
macchina virtuale 2
HW2
Utente
medesimo linguaggio ad
alto livello
diversi linguaggi macchina
• Macchine fisiche diverse possono essere utilizzate in modo simile costruendo al di sopra macchine virtuali
• Ogni m. v. fornisce il medesimo linguaggio ad alto livello…
• …e traduce i comandi in modo diverso, in funzione del tipo di hardware
12
Struttura a livelli del s.o.• Il s.o. ha una struttura a cipolla, ogni livello:
– “astrae” il livello inferiore, nascondendone la complessità e
– fornisce servizi al livello superiore
• In questo modo si può usare il computer senza conoscere i dettagli dei dispositivi elettronici
kernel: gestione del processore, della memoria, dei dispositivi di I/O
hardware
……
14
Funzioni svolte dal sistema operativo (1)
• Accensione e configurazione della macchina (bootstrap)
• Gestione del processore
• Gestione della memoria (principale e virtuale)
• Linguaggio ad alto livello per l’interazione con l’utente
• Gestione e accesso alle informazioni su memoria secondaria (File system)
15
Funzioni svolte dal sistema operativo (2)
• Gestione e uso ottimale delle risorse di input/output (dischi, stampanti, …)
• Supporto per la comunicazione tra elaboratori
• Supporto per i programmi applicativi (installazione, accesso alle risorse di sistema)
• Ambienti di programmazione (ad es. Java, C++, Basic, COBOL)
16
Funzioni svolte dal sistema operativo (1)
• Accensione e configurazione della macchina (bootstrap)
• Gestione del processore
• Gestione della memoria (principale e virtuale)
• Linguaggio ad alto livello per l’interazione con l’utente
• Gestione e accesso alle informazioni su memoria secondaria (File system)
17
Il bootstrap
Bootstrap = Avvio dell’elaboratore
Primo problema:
• La CPU esegue esclusivamente programmi in memoria principale
• RAM volatile ! vuota quando si accende il computer
Come fare?
Prima soluzione:
Mettere i programmi in memoria secondaria
18
Il bootstrap
Secondo problema:
• Per caricare i programmi da memoria secondaria usiamo il file system (cioè il sistema operativo)
• Ma il s.o. risiede in RAM ! RAM volatile ! vuota quando si accende il computer
Come fare?
Seconda soluzione:
Usiamo un piccolo programma (BIOS), molto semplice, che ha il compito di caricare (la prima parte de) il s.o. da memoria secondaria
19
Il bootstrap
Terzo problema:
• La CPU esegue esclusivamente programmi in memoria principale
• RAM volatile ! vuota quando si accende il computer
Come fare?
Terza soluzione:
Memorizziamo il BIOS in una parte della memoria principale non volatile: la ROM
20
Il bootstrap
Dubbio:
Non possiamo memorizzare direttamente il s.o. in ROM?
Risposta:
No, perché la ROM è a sola lettura: ha senso memorizzarvi esclusivamente programmi/dati che non è necessario cambiare
Applicativi e s.o. devono potere essere variati e aggiornati (upgrade, patch, …)
21
Il bootstrapRiassumendo:
Bootstrap: all’accensione della macchina, un programma (il BIOS) in ROM cerca sulla memoria secondaria il s.o. e ne carica una parte in RAM
22
Il bootstrap
• Ordine tipico di ricerca:
1. Floppy disk
2. CD/DVD
3. Hard Disk
• Questo ordine è utile per installare un s.o. o per live cd (un live cd contiene un s.o. che non necessita di installazione su hard disk)
23
Avvio dell’elaboratoreIn seguito, viene caricata la prima parte del s.o.
24
Avvio dell’elaboratore
• La prima parte del s.o. che viene caricata comprende (in generale):
– i programmi per gestire processi e CPU
– i programmi per gestire la memoria
– i programmi per gestire periferiche e I/O
– i programmi per gestire il File System
– il programma che crea l'interfaccia (grafica o testuale) utente
25
Avvio dell’elaboratore
• Parte dei programmi del s.o. devono essere mantenuti sempre in RAM per essere sempre pronti per l’esecuzione
⇒ una porzione della RAM è riservata a programmi e dati del s.o.
26
Avvio dell’elaboratore: l’I/O
• All’avvio, vengono identificati tutti i dispositivi di memoria secondaria e tutte le periferiche e vengono avviati i relativi programmi di gestione (driver)
• Alcuni sistemi verificano anche lo stato delle risorse hardware, per esempio lo stato dei dischi (presenza di errori nel file system?)
27
Funzioni svolte dal sistema operativo (1)
• Accensione e configurazione della macchina (bootstrap)
• Gestione del processore
• Gestione della memoria (principale e virtuale)
• Linguaggio ad alto livello per l’interazione con l’utente
• Gestione e accesso alle informazioni su memoria secondaria (File system)
28
Multitasking
• I moderni s.o. sono multitasking, cioè è possibile eseguire più programmi allo stesso tempo (ad es. scaricare un file mentre si scrive un documento)
• Problema: spesso gli elaboratori hanno una unica CPU. Come possono eseguire più programmi contemporaneamente?
• Soluzione: il s.o. alterna i programmi assegnando la CPU a turno "
1. In ogni istante un solo programma è eseguito dalla CPU
2. Se l’alternanza è frequente, si ha l’impressione che i programmi vengano eseguiti contemporaneamente
30
Processi
• I dispositivi di I/O sono molto più lenti della CPU
• Problema: cosa succede se un processo effettua un’istruzione di I/O?
• La CPU rimarrebbe inattiva fino a che il dispositivo non ha terminato ! inefficienza!
• Soluzione: multitaskingIl S.O. assegna la CPU a un altro processo e la restituisce al primo quando l’I/O è terminato
31
Processi•Un processo può trovarsi in uno dei tre stati:
– in esecuzione, cioè è in esecuzione nella CPU (! max un processo in esecuzione per ogni CPU)
– in attesa, cioè attende che un’operazione di I/O termini (o qualche altro evento esterno si verifichi)
– pronto, cioè può andare in esecuzione, ma la CPU è occupata ad eseguire un altro processo
pronto in esecuzione
in attesa
selezionato dal s.o.
richiesta I/O o risorsa
I/O terminato o risorsa disponibile
interrotto per lasciare la CPU a un altro processo
32
Processi
• Il s.o. ha il compito di scegliere quale tra i processi pronti mandare in esecuzione in modo da usare l’elaboratore in modo efficiente (no sprechi) ed efficace (per es. con tempi di attesa limitati)
34
Funzioni svolte dal sistema operativo (1)
• Accensione e configurazione della macchina (bootstrap)
• Gestione del processore
• Gestione della memoria (principale e virtuale)
• Linguaggio ad alto livello per l’interazione con l’utente
• Gestione e accesso alle informazioni su memoria secondaria (File system)
35
Memoria virtuale
Problema:
Come eseguire programmi e usare dati più grandi della memoria principale (memoria fisica)?
36
Memoria virtuale•Tecnica di gestione della memoria utilizzata
da tutti i sistemi operativi moderni
•Permette di “fare credere” ai singoli programmi di avere a disposizione una quantità di memoria più grande di quella effettivamente installata e contigua
•Per questo si chiama memoria virtuale
37
Memoria virtuale
• Non è necessario mantenere sempre in memoria tutti i programmi in esecuzione
• Le parti (pagine) dei programmi usate meno spesso vengono “spostate” su hard disk
38
Memoria virtualeLe pagine vengono riportate in memoria quando servono nuovamente, eventualmente spostandone altre su disco
39
Memoria virtualeIl s.o. traduce automaticamente gli indirizzi virtuali (usati dalle applicazioni) in indirizzi fisici
memoria virtuale RAM
altriprogrammi
hard disk
42
Memoria virtuale• Cosa succede se si utilizza frequentemente una quantità
di memoria virtuale molto più grande della memoria fisica?
• Thrashing (con la ‘h’, to thrash = dimenarsi): il s.o. impiega più tempo a trasferire le pagine da e su disco che a effettuare lavoro utile
• Sintomo: l’hard disk viene usato intensamente e il computer è inutilizzabile
• Soluzione: Aumentare la quantità di RAM oppure usare meno programmi contemporaneamente
43
Memoria virtuale
• Dato che la RAM è molto più veloce dell’hard disk, aumentare la quantità di RAM può migliorare le prestazioni del computer, perché il s.o. dovrà fare ricorso meno frequentemente all’hard disk per implementare la memoria virtuale
44
Funzioni svolte dal sistema operativo (1)
• Accensione e configurazione della macchina (bootstrap)
• Gestione del processore
• Gestione della memoria (principale e virtuale)
• Linguaggio ad alto livello per l’interazione con l’utente
• Gestione e accesso alle informazioni su memoria secondaria (File system)
45
Il sistema operativo
• Due tipi di interazione utente/sistema operativo:
– interazione testuale
•MS-DOS, Mac OS X, Linux
– interazione grafica
•Mac OS X, Linux
•Windows
46
Interazione testuale
• Basata su comandi scritti tramite tastiera
• L’interfaccia è più rapida da usare per utenti esperti
• Richiede poca memoria principale
• Script (programmi costituiti da comandi)
• Molto usata nei sistemi Unix-like
48
Interazione grafica
• Basata su interfacce grafiche che presentano funzionalità comuni
– ai programmi sono associate finestre
– interazione “point and click”
– tecnologia WYSIWYG (What You See Is What You Get)
– comandi uniformi: es. Cancellare “oggetto” ⇒ taglia, Copiare “oggetto” ⇒ copia l’“oggetto” può essere testo, file, immagini, …
49
Interazione grafica•Concetti principali
–finestra
–icona
–menu
–menu item
–pop-up menu (menu a tendina)
–button (pulsante)
–toolbar (barra degli strumenti)
50
Funzioni svolte dal sistema operativo (1)
• Accensione e configurazione della macchina (bootstrap)
• Gestione del processore
• Gestione della memoria (principale e virtuale)
• Linguaggio ad alto livello per l’interazione con l’utente
• Gestione e accesso alle informazioni su memoria secondaria (File system)
51
Il File System
• File System: parte del S.O. che si occupa di gestire e strutturare le informazioni memorizzate su supporti di memoria secondaria (ad es. su hard disk, CD, DVD…)
• Operazioni di base supportate dal File System sui dati memorizzati: lettura/scrittura, cancellazione, modifica, copia
52
Il File System
• I dati della memoria secondaria vengono strutturati e gestiti mediante l’organizzazione in file
• I file sono utilizzati per la memorizzazione di
–programmi (del sistema, dell’utente)
–dati
53
Il File System• Si può immaginare il disco fisso
come un quaderno con tante pagine su cui l’utente scrive varie relazioni (file)
Si noti che:
• quando si cancella un file, rimangono pagine “vuote”
• quando si modifica un file, la nuova versione potrebbe essere più corta o più lunga:
– se più corta: rimangono pagine vuote
– se più lunga: la modifica potrebbe essere impossibile (perché c’è un file contiguo)
Come risolvere questi problemi?
54
Il File System
Soluzione: utilizzo di un indice:
• le pagine vengono numerate (come per i libri)
• l’indice contiene - nell’ordine - i numeri delle pagine dei file
Vantaggi:
• le pagine possono essere aggiunte, spostate, cancellate senza sprechi di spazio, senza limitazioni di dimensioni dei file (basta avere pagine libere)
55
Il File System
• L’indice è memorizzato sul dispositivo di mem. secondaria
• Contiene i nomi dei file e le pagine (cluster) associate
• L’utente può conoscere i nomi dei file memorizzati leggendo l’indice
• Il file system usa l’indice per:
–reperire i cluster che compongono i file e
–trovare lo spazio libero per nuovi file
56
Il File System• Esempio: indice
disco fisso
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
Nota: anche l’indice è su disco fisso
57
Il File System
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
1. crea file 1
• Esempio:
58
Il File System
• file 1: cluster 0, 1, 2 1. crea file 1
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
59
Il File System
• file 1: cluster 0, 1, 2 2. crea file 2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
60
Il File System
• Esempio:• file 1: cluster 0, 1, 2
• file 2: cluster 32. crea file 2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
61
Il File System
• Esempio:• file 1: cluster 0, 1, 2
• file 2: cluster 33. modifica file 1
(più lungo)
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
62
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 33. modifica file 1
(più lungo)
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
63
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 34. modifica file 2
(più lungo)
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
64
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 54. modifica file 2
(più lungo)
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
65
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 55. crea file 3
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
VU
OTA
VU
OTA
VU
OTA
VU
OTA
• Esempio:
66
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 5
• file 3: cluster 6, 7
5. crea file 3
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
file
3
file
3
VU
OTA
VU
OTA
• Esempio:
67
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 5
• file 3: cluster 6, 7
6. crea file 4
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
file
3
file
3
VU
OTA
VU
OTA
• Esempio:
68
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 5
• file 3: cluster 6, 7
• file 4: cluster 8, 9
6. crea file 4
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
file
4
file
4
file
3
file
3
• Esempio:
69
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 5
• file 3: cluster 6, 7
• file 4: cluster 8, 9
7. cancella file 3
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
file
4
file
4
file
3
file
3
• Esempio:
70
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 5
• file 3: cluster 6, 7
• file 4: cluster 8, 9
7. cancella file 3
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
file
1
file
1
file
1
file
1
file
2
file
2
file
4
file
4
file
3
file
3
il file 3 viene eliminato solo dall’indice; i cluster 6 e 7 verranno sovrascritti
alla prima occasione
• Esempio:
71
Il File System
• Esempio:• file 1: cluster 0, 1, 2, 4
• file 2: cluster 3, 5
• file 3: cluster 6, 7
• file 4: cluster 8, 9
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
VU
OTA
Notare la frammentazione: i cluster di alcuni file non sono contigui
file
1
file
1
file
1
file
1
file
2
file
2
file
4
file
4
file
3
file
3
• Esempio: