Software e sistema
operativo
19-22/5/08
Informatica applicata B
Cristina Bosco
Software
È un insieme di programmi che permettono
di trasformare un insieme di circuiti
elettronici (= hardware) in un oggetto in
grado di svolgere delle funzioni diverse e
per diversi tipi di utenti
Software
I computer sono programmabili:
svolgono compiti diversi in base alle
istruzioni contenute nei programmi
L’hardware in se’ puo’ svolgere solo semplici
operazioni
Funzioni del software
• Astrarre dall’organizzazione fisica della
macchina --> usare nello stesso modo
macchine diverse dal punto di vista
dell’hardware
• Interagire con la macchina tramite un
linguaggio semplice
…
Funzioni del software
…
• Programmare la macchina tramite un
linguaggio semplice e ad alto livello
• Avere un insieme di programmi applicativi
per svolgere vari compiti (elaborare testi
ed immagini, mantenere archivi, gestire
contabilità, …)
Software o hardware?
Se non ci fosse il software si dovrebbe usare
l’hardware direttamente:
• l’utente dovrebbe saper programmare
• il programmatore dovrebbe conoscere
l’hardware e il suo linguaggio macchina
• ogni programma sarebbe scritto come
sequenza di 0 e 1
• ad ogni modifica dell’hardware occorrerebbe
riscrivere parte del programma
Software e macchine virtuali
La presenza di un livello software offre la
possibilità di definire macchine virtuali
utilizzando gli strumenti della macchina
hardware reale
Le macchine virtuali svolgono le funzionalità
richieste dall’utente tramite semplici
interazioni con quest’ultimo
Software e macchine virtuali
Utente
Hardware
Macchina virtuale
Macchine virtuali
L’utente interagisce con la macchina virtuale
utilizzando un linguaggio ad alto livello
(interfaccia grafica/testuale)
La macchina virtuale traduce ogni comando
del linguaggio ad alto livello in una serie di
comandi per l’hardware (linguaggio
macchina)
Software di base =
sistema operativo
L’elaboratore (hardware) risponde solo a
comandi scritti nel suo linguaggio macchina
Il software di base:
• è un insieme di programmi in linguaggio
macchina ed in liguaggio ad alto livello
• crea la macchina virtuale “sopra”
l’elaboratore con cui l’utente interagisce
Software di base =
sistema operativo
La macchina virtuale offre il comando di
‘stampa file’
1. Verifica se è un comando valido
2. Lo traduce in una sequenza di comandi per
la macchina hadware
3. Genera (o trova) la sequenza di istruzioni
corrispondente
4. Restituisce all’utente le informazioni
relative
Stratificazione del software
• Software di base: specializzato (per un
linguaggio macchina X) che traduce in un
linguaggio macchina generico
• Strati di software (di base o creati
dall’utente): iniziano con programmi in
linguaggio macchina generico e finiscono
con il linguaggio dell’utente
Gerarchia di macchine virtuali
Utente
Hardware
Cosa non puo’ fare il
software?
• Una macchina virtuale può eseguire tutte
e sole le funzioni per le quali si può
trovare una traduzione in linguaggio
macchina
• Una funzione non eseguibile dalla
macchina fisica, non sarà eseguibile
neppure sovrapponendo una gerarchia di
macchine virtuali
SISTEMA OPERATIVO
Funzioni del sistema operativo
• Accendere e configurare la macchina
(bootstrap)
• Gestire il processore
• Gestire le memorie (principale, virtuale,
secondaria)
• Consentire l’accesso alle informazioni in
memoria secondaria (file system)
• Gestire le risorse e dispositivi
• Consentire l’interazione con l’utente
(interfaccia / GUI del SO)
Parti del SO
Comprende un serie di livelli che forniscono
funzioni e servizi:
• Kernel e livelli vicini all’hardware (in
linguaggio macchina) - gestione delle
risorse di calcolo e memorie
• Livelli alti (in linguaggio ad alto livello) interazione uomo-macchina
Funzioni del SO
• Avviamento dell’elaboratore e creazione
dell’ambiente virtuale (bootstrap)
• Gestione del processore
• Gestione delle memorie (principale,
virtuale, secondaria)
• Gestione delle periferiche di I/O
• Interazione con l’utente
Bootstrap
Il SO deve trovarsi in una memoria non
volatile, quindi nella memoria secondaria
MA la CPU esegue solo programmi che si
trovano in memoria principale (RAM)
PERTANTO il bootstrap comporta il
caricamento del SO nella RAM
Bootstrap
Quindi nel momento dell’accensione della
macchina, il SO si trova nella memoria
secondaria
PROBLEMA:
Il software che si occupa di trasferire i
dati dalla memoria secondaria alla
memoria principale e’ il SO e se il SO non
si trova nella RAM non puo’ essere
eseguito
Bootstrap
SOLUZIONE:
esiste un piccolo programma detto BIOS
che ha la sola funzione di caricare (la
prima parte di) il SO dalla memoria
secondaria
BIOS deve trovarsi nella memoria
principale, ma non in quella volatile (RAM),
bensi’ nella ROM
Bootstrap
SOLUZIONE alternativa:
mettere tutto il SO nella ROM
NO non e’ accettabile:
la ROM e’ di sola lettura e il SO deve
essere modificato talvolta, ad es. con
nuovi settaggi o aggiunta di patch o
upgrade
Bootstrap
Operazioni di inizializzazione del SO:
• Identificazione dei dispositivi di memoria
secondaria
• Identificazione periferiche di I/O
• Inizializzazione dei relativi programmi di
gestione
Bootstrap 1
1. Accensione
2. La CPU esegue il BIOS leggendolo dalla
memoria principale ROM
Bootstrap
Il BIOS cerca il SO nell’ordine nei vari
dispositivi di memoria secondaria:
1. Sul floppy (o CD)
2. Sull’hard disk (nella posizione del SO)
3. Se occorre viene proposta la scelta di
SO
In questo modo il SO puo’ essere installato
anche dall’esterno (ad es. la prima volta
o in caso di corruzione del SO)
Bootstrap 1
Riassumendo il bootstrap:
• Accensione
• La CPU esegue il BIOS leggendolo dalla
memoria principale ROM
Bootstrap 2
-
la CPU esegue il BIOS (letto nella ROM)
la CPU carica il SO dalla memoria
secondaria alla RAM
la CPU esegue il SO
ora l’utente vede l’interfaccia del SO e
puo’ iniziare a lavorare
Bootstrap
•
•
•
•
•
Gestire il processore
Gestire la memoria
Gestire le periferiche
Gestire il fle system
Creare l’interfaccia
Bootstrap
Esecuzione di programmi anti-virus:
• Verifica della memoria principale
• Eliminazione e/o segnalazione dei virus
(programmi di disturbo e danneggiamento
dell’elaborazione)
Funzioni del SO
• Avviamento dell’elaboratore e creazione
dell’ambiente virtuale (bootstrap)
• Gestione del processore
• Gestione delle memorie (principale,
virtuale, secondaria)
• Gestione delle periferiche di I/O
• Interazione con l’utente
Gestione del processore
Il compito del processore (CPU) è di
eseguire programmi
Il compito del SO e’ di gestire la CPU
Un programma in esecuzione si dice
processo
Il compito del SO è gestire i processi
Gestione della CPU e Tipi di
SO - numero utenti
Sistemi mono-utente, senza sistemi di
protezione delle informazioni
Sistemi multi-utente, con sistemi di
protezione delle informazioni
Gestione della CPU e Tipi di
SO - numero di task
Sistemi mono-tasking (una sola applicazione
alla volta), senza sistemi di protezione
delle informazioni
Sistemi multi-tasking (piu’ applicazioni alla
volta), con sistemi di protezione delle
informazioni
SO mono-tasking
• Eseguono un solo processo per volta
• I programmi sono eseguiti
sequenzialmente (il programma Pi+1 viene
mandato in esecuzione quando Pi è
terminato)
• Es.: MS/DOS
SO mono-tasking
Limiti:
• L’utente deve sequenzializzare i
programmi, e se sono più utenti??? (SO
mono/multi-utente)
• Dal momento che ogni processo alterna
fasi di esecuzione e di attesa, l’utilizzo
del processore non è ottimale
Verso i SO multi-tasking
Una soluzione per superare i limiti dei
sistemi mono-tasking:
• Esecuzione contemporanea di più processi
(quando Px è in attesa, si esegue Py) su un
singolo processore
• Maggiore il numero dei processi attivi,
maggiore l’utilizzo del processore
SO multi-tasking
MA ATTENZIONE
• Ad ogni istante esiste sempre un solo
processo in esecuzione
• Gli utenti hanno l’impressione
dell’esecuzione contemporanea di più
processi/compiti (soprattutto se
l’alternanza tra processi è frequente)
SO multi-tasking
Come si fa a vedere i processi su un
computer?
Es. in Windows Ctrl + Alt + Canc consente
di vedere il TASK MANAGER che mostra
i processi in esecuzione e quanta memoria
utilizzano ad ogni istante del tempo
Funzioni del SO
• Avviamento dell’elaboratore e creazione
dell’ambiente virtuale (bootstrap)
• Gestione del processore
• Gestione delle memorie (principale,
virtuale, secondaria)
• Gestione delle periferiche di I/O
• Interazione con l’utente
Gestione della memoria reale
Una porzione fissata della RAM è dedicata
a contenere il SO:
• Utilizzo di un registro fence per
delimitare tale porzione
• Sistemi per bloccare violazioni della
porzione
Gestione della memoria reale
La parte della memoria
principale che non
contiene SO è
utilizzata dai processi:
• Il processo in
esecuzione si trova
nella memoria principale
SO
Processo
Gestione della memoria reale
Quando ci sono più
processi in esecuzione
(SO multi-tasking),
come si suddivide la
memoria tra processi
???
SO
Processo1
…
Processon
Gestione della memoria reale
Tecniche utilizzate dai SO multi-tasking:
• Partizioni multiple con allocazione
contigua (AC) - suddivisione in partizioni,
ogni partizione contiene l’intera immagine
di un processo
• Allocazione non contigua (ANC) suddivisione in parti dell’immagine di un
processo
Partizioni multiple con AC
Problemi:
• Numero partizioni
• Partizioni fisse o variabili
• Criteri di scelta della partizione
• Come proteggere i processi l’uno
dall’altro
Partizioni multiple con AC
• Partizioni fisse:
– Numero e dimensione fissata durante la
configurazione del SO
• Partizioni variabili:
– Numero e dimensione dipendono dai
processi caricati in memoria
Partizioni multiple con AC
Partizioni fisse:
– Numero e dimensione delle partizioni
fissata durante la configurazione del
SO
– Problemi di frammentazione interna +
impossibilità di esecuzione di processi
molto grandi
Partizioni multiple con AC
Partizioni variabili:
– Numero e dimensione delle partizioni
fissata durante il caricamento dei
processi
– Problemi di frammentazione esterna +
criteri di scelta della partizione +
necessità di deframmentare
(operazione lunga e costosa)
Frammentazione della memoria
• Interna:
l’immagine del processo non occupa tutta la
partizione in cui è caricata - tipico delle
partizioni fisse
• Esterna:
lo spazio tra partizioni non è sufficiente per
caricarvi un processo - tipico delle partizioni
variabili
Gestione della memoria reale
Tecniche utilizzate dai SO multi-tasking:
• Partizioni multiple con allocazione
contigua (AC) - suddivisione in partizioni,
ogni partizione contiene l’intera immagine
di un processo
• Allocazione non contigua (ANC) suddivisione in parti dell’immagine di un
processo
Allocazione Non Contigua
L’immagine di un processo può essere
spezzata (a condizione che si mantenga
traccia della posizione dei suoi pezzi)
tramite:
• Segmentazione (suddivisione secondo
criteri logici > pezzi di dimensione
variabile) -frammentazione esterna
• Paginazione (suddivisione in pezzi di
dimensione fissa) - (limitata)
frammentazione interna
Scarica

Hardware ed architettura del calcolatore