Introduzione ai Sistemi Operativi "Senza il software, un computer non sarebbe altro che un ammasso di ferraglia inutile" (A.S. Tanenbaum). Classificazione software: - programmi di sistema - programmi applicativi In un sistema di elaborazione: gestione bancaria prenotazioni videogiochi aeree compilatori interprete dei comandi Sistema Operativo hardware programmi applicativi editori programmi di sistema hardware Fanno parte del software di sistema - Il Sistema Operativo - Compilatori, Interpreti, Editor, Interprete dei comandi del SO, etc. Sistema operativo (SO): insieme di programmi che gestiscono le risorse di un calcolatore in modo da consentire agli utenti un uso agevole ed efficiente del calcolatore stesso. 1 Introduzione ai Sistemi Operativi Il SO è uno strato software che nasconde all'utente/programmatore la complessità dell'hardware. Grazie al SO, l'utente non "vede" la macchina reale → non deve preoccuparsi dei problemi di gestione dei dispositivi hardware. Es. il File System (parte di SO che gestisce la memoria di massa) offre all'utente l'immagine del disco come costituito da una gerarchia di file che possono essere letti o scritti. L'utente per accedere ad un dato non deve conoscere né l'indirizzo del blocco di disco da leggere, né il numero di settori per traccia, né altri dettagli sulle caratteristiche del dispositivo fisico. Analogamente, non deve occuparsi della gestione della CPU, degli interrupts, della memoria, etc. 2 Introduzione ai Sistemi Operativi L'utente interagisce virtuale. con una macchina La macchina virtuale è l'immagine della macchina reale che il S.O. offre all'utente. Rispetto alla macchina reale è: -più estesa, cioè ha più risorse -più facile da programmare e da usare. La macchina virtuale è in grado di offrire all'utente dei servizi dietro invio di apposite richieste. (funzione di interfaccia verso l'utente) 3 Introduzione ai Sistemi Operativi Le richieste al SO possono essere formulate: -direttamente dall'utente (modalità interattiva), tramite comandi di Sistema. -indirettamente, dai programmi utente, tramite istruzioni particolari (Chiamate di Sistema) che vengono tradotte in chiamate ai programmi del SO. Funzione di interfaccia utente del sistema operativo: fornire all'utente un dato insieme di servizi richiamabili mediante comandi o chiamate di sistema. 4 Introduzione ai Sistemi Operativi Se la richiesta dell'utente è inviata tramite comandi (modalità interattiva) occorre un interprete di comandi. Interprete di comandi (shell): programma che riceve i comandi direttamente impartiti dall'utente, li interpreta e li traduce in chiamate ai programmi di sistema opportuni. La shell è l'interfaccia primaria tra l'utente interattivo e il SO. Ogni sistema operativo ha la sua shell (eventualmente anche più d'una), ma la shell non fa parte del sistema operativo. Una parte del SO è sempre residente in memoria, pronta ad esaudire le richieste dell'utente o dei programmi utente. 5 Introduzione ai Sistemi Operativi Es. di servizio: esecuzione di un programma applicativo memorizzato sul disco rigido. Il SO si occupa di: - leggere il programma dal disco e caricarlo in memoria centrale; - comandare l'esecuzione del programma; - riprendere il controllo del sistema di elaborazione ad esecuzione terminata. Altri esempi: stampa di un documento, trasferimento di documenti da un dispositivo periferico ad un altro, etc. 6 Introduzione ai Sistemi Operativi Ricapitolando: Il SO è un insieme di programmi che consentono: -la visione astratta delle risorse da parte degli utenti (macchina virtuale) -facilità d'uso del sistema di elaborazione; -la gestione corretta ed efficiente delle risorse. Es. problemi di allocazione delle risorse (processore/i, memoria, periferiche, etc) tra più processi in competizione fra loro. Corretta: le modalità di uso della risorsa sono programmate dal SO. Efficiente: le richieste d'uso della risorsa vengono esaudite nel minor tempo possibile. Sul SO si appoggiano gli altri componenti del software di sistema (compilatori, interpreti, editor) e i programmi applicativi. 7 Introduzione ai Sistemi Operativi gestione bancaria prenotazioni videogiochi aeree compilatori interprete dei comandi Sistema Operativo hardware programmi applicativi editori programmi di sistema hardware Interpreti, compilatori, editor etc.: sono programmi di sistema ma non fanno parte del sistema operativo, anche se normalmente sono forniti con esso. Differenza tra SO e altri programmi di sistema: - il SO esegue in modo kernel o supervisore ed è protetto da manomissioni da parte dell'utente. - compilatori, editor, etc. eseguono in modo user e possono essere modificati dall'utente. Se un utente non è soddisfatto di un particolare compilatore, può scriverne un altro. Invece non può modificare i programmi che fanno parte del SO (ad esempio, il gestore degli interrupt da disco) che sono protetti. 8 Introduzione ai Sistemi Operativi Classificazione Sistemi uniprogrammati: in ogni istante in memoria centrale, oltre al SO, risiede al più un programma utente. (es. DOS) Sistema multiprogrammato: in ogni istante in memoria centrale, oltre al SO, possono risiedere più programmi utente (Windows’95, UNIX, etc.) Sistema dotato di una sola CPU: un solo programma può trovarsi in esecuzione in ogni istante → limitato utilizzo del sistema. Durante le operazioni di I/O la CPU è pressoché inattiva. 9 Introduzione ai Sistemi Operativi Soluzioni Sistema uniprogrammato: si può -scaricare il programma residente in memoria -caricarne un altro dalla memoria di massa -mandare in esecuzione Pb. Oneroso in termini di tempo (tempi di accesso al disco) Sistema multiprogrammato: poiché sono già presenti in memoria più programmi, la commutazione da uno ad un altro è più efficiente. Pb. Il SO è più complesso. 10 Introduzione ai Sistemi Operativi Sistema operativo di rete: oltre alle funzionalità di un sistema operativo tradizionale, ha in più funzionalità di rete. Contiene i programmi che consentono di accedere a file remoti, di copiare file da un host all'altro, di eseguire programmi da remoto, etc. Gli utenti di un SO di rete sono consapevoli dell'esistenza di più calcolatori. Es. devono esplicitamente: - collegarsi ad una macchina - chiedere elaborazioni remote o trasferire file da un host ad un altro. Ogni host ha il suo sistema operativo locale completo ed i suoi utenti locali. 11 Introduzione ai Sistemi Operativi Sistema Operativo Distribuito: si occupa di allocare i processi sui vari host della rete, di gestire i file distribuiti sui vari host, in modo totalmente invisibile (trasparente) all'utente. L'utente di un sistema distribuito, grazie alle funzioni svolte dal Sistema Operativo Distribuito: - non si rende conto che ci sono più calcolatori collegati, ma vede un unico calcolatore virtuale, che offre una grande disponibilità di risorse; - utilizza il sistema distribuito come se fosse un singolo calcolatore. Gli utenti di un sistema distribuito non sanno i loro file vengono effettivamente allocati né dove i loro programmi vengono eseguiti. 12