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 Lhardware in se puo svolgere solo semplici operazioni
Funzioni del software Astrarre dallorganizzazione fisica della macchina --> usare nello stesso modo macchine diverse dal punto di vista dellhardware 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 lhardware direttamente: lutente dovrebbe saper programmare il programmatore dovrebbe conoscere lhardware e il suo linguaggio macchina ogni programma sarebbe scritto come sequenza di 0 e 1 ad ogni modifica dellhardware 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 dallutente tramite semplici interazioni con questultimo
Software e macchine virtuali Hardware Macchina virtuale Utente
Macchine virtuali Lutente 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 lhardware (linguaggio macchina)
Software di base = sistema operativo Lelaboratore (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 lelaboratore con cui lutente 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 allutente 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 dallutente): iniziano con programmi in linguaggio macchina generico e finiscono con il linguaggio dellutente
Gerarchia di macchine virtuali Hardware Utente
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 laccesso alle informazioni in memoria secondaria (file system) Gestire le risorse e dispositivi Consentire linterazione con lutente (interfaccia / GUI del SO)
Parti del SO Comprende un serie di livelli che forniscono funzioni e servizi: Kernel e livelli vicini allhardware (in linguaggio macchina) - gestione delle risorse di calcolo e memorie Livelli alti (in linguaggio ad alto livello) - interazione uomo-macchina
Funzioni del SO Avviamento dellelaboratore e creazione dellambiente virtuale (bootstrap) Gestione del processore Gestione delle memorie (principale, virtuale, secondaria) Gestione delle periferiche di I/O Interazione con lutente
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 dellaccensione 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 nellordine nei vari dispositivi di memoria secondaria: 1.Sul floppy (o CD) 2.Sullhard disk (nella posizione del SO) 3.Se occorre viene proposta la scelta di SO In questo modo il SO puo essere installato anche dallesterno (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 lutente vede linterfaccia del SO e puo iniziare a lavorare
Bootstrap Gestire il processore Gestire la memoria Gestire le periferiche Gestire il fle system Creare linterfaccia
Bootstrap Esecuzione di programmi anti-virus: Verifica della memoria principale Eliminazione e/o segnalazione dei virus (programmi di disturbo e danneggiamento dellelaborazione)
Funzioni del SO Avviamento dellelaboratore e creazione dellambiente virtuale (bootstrap) Gestione del processore Gestione delle memorie (principale, virtuale, secondaria) Gestione delle periferiche di I/O Interazione con lutente
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 P i+1 viene mandato in esecuzione quando P i è terminato) Es.: MS/DOS
SO mono-tasking Limiti: Lutente 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, lutilizzo 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 P x è in attesa, si esegue P y ) su un singolo processore Maggiore il numero dei processi attivi, maggiore lutilizzo del processore
SO multi-tasking MA ATTENZIONE Ad ogni istante esiste sempre un solo processo in esecuzione Gli utenti hanno limpressione dellesecuzione contemporanea di più processi/compiti (soprattutto se lalternanza 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 dellelaboratore e creazione dellambiente virtuale (bootstrap) Gestione del processore Gestione delle memorie (principale, virtuale, secondaria) Gestione delle periferiche di I/O Interazione con lutente
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 Processo 1 … Processo n
Gestione della memoria reale Tecniche utilizzate dai SO multi-tasking: Partizioni multiple con allocazione contigua (AC) - suddivisione in partizioni, ogni partizione contiene lintera immagine di un processo Allocazione non contigua (ANC) - suddivisione in parti dellimmagine di un processo
Partizioni multiple con AC Problemi: Numero partizioni Partizioni fisse o variabili Criteri di scelta della partizione Come proteggere i processi luno dallaltro
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: limmagine 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 lintera immagine di un processo Allocazione non contigua (ANC) - suddivisione in parti dellimmagine di un processo
Allocazione Non Contigua Limmagine 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