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