Dispensa a cura di Alessandro Bellini 1 Organizzazione dei sistemi

Dispensa a cura di Alessandro Bellini Organizzazione dei sistemi operativi I compiti di un sistema operativo si possono riassumere in: •
•
•
Accettare le richieste degli utenti; Eseguire i processi, gestire le loro interazioni, assegnare il processore e le altre risorse di cui hanno bisogno; Permettere lo sviluppo di nuovi programmi. Delle richieste degli utenti si occupa la shell, l’interfaccia con l’utente. Per lo sviluppo di nuovi programmi il sistema operativo può mettere a disposizione varie utility come l’editor, il compilatore ed il linker. La parte principale del compito di gestione dell’esecuzione dei processi è svolta dal nucleo del sistema operativo o Kernel. Per le funzioni di gestione della risorse diverse dal processore sono possibili diverse soluzioni da cui dipende l’organizzazione del sistema operativo: •
•
Modello monolitico: le funzioni di gestione delle risorse sono realizzate nel nucleo; Modello a microkernel: le funzioni di gestione delle risorse sono svolte da processi separati e il nucleo si limita a realizzare le funzioni essenziali riguardanti i processi. Modello Monolitico Le operazioni per la gestione delle risorse costituiscono un insieme di operazioni primitive, comunemente dette chiamate di sistema e sono invocate dai processi. Nel nucleo viene realizzata una struttura gerarchica che comprende: •
•
•
Una interfaccia che riconosce le chiamate di sistema e invoca le corrispondenti procedure; Un insieme di procedure per la gestione delle risorse, corrispondenti alle chiamate di sistema; Altre procedure di servizio, invocate da quelle per la gestione delle risorse, tra cui quelle che realizzano i meccanismi del modello concorrente. Il livello più basso della gerarchia, quello che realizza i meccanismi del modello concorrente, è il solo che interagisca con la macchina fisica e non è visibile ai processi. I processi interagiscono col nucleo solo attraverso le chiamate di sistema del livello superiore. Modello a MicroKernel In questo caso il nucleo si occupa solo della gestione dei processi e della realizzazione dei meccanismi del modello concorrente. Le operazioni per la gestione delle risorse sono svolte da processi separati. Si ha la separazione delle politiche dai meccanismi: i meccanismi sono quelli del modello concorrente realizzati nel nucleo, le politiche sono i metodi di gestione delle risorse realizzati da appositi processi; si possono quindi modificare le politiche senza intervenire sui meccanismi. I sistemi a microkernel risultano quindi più facili da mantenere, perché ogni processo svolge un singolo tipo di operazione,però hanno prestazioni peggiori perché hanno task switch per ogni processo. Esistono due sottomodelli: orientato alle procedure e client/server. Modello orientato alle procedure Le funzioni di gestione delle risorse sono realizzate con procedure (una per la richiesta ed una per il rilascio) eseguite da ciascun processo nel proprio ambiente. I processi devono quindi condividere le strutture di dati 1 Dispensa a cura di Alessandro Bellini che rappresentano le risorse. Il modello concorrente in questo caso deve consentire la condivisione dei dati; per questo si parla di ambiente globale (intersezione degli spazi dei processi che permette la condivisione). Modello client/server In questo modello le funzioni di gestione delle risorse sono svolte dai processi server. Il processo server riceve le richieste ( di assegnazione e di rilascio) da parte degli altri processi (client) ed esegue per loro conto le funzioni di gestione. Il modello concorrente non deve consentire la condivisione dei dati; il paradigma di interazione è la comunicazione; si parla di ambiente locale: gli spazi dei processi sono separati e inaccessibili dagli altri processi. Linux è formato da una shell e da un kernel. La shell interpreta i comandi dell’utente e ne richiede l’esecuzione al nucleo. Il kernel gestisce quasi tutte le funzioni di base portando alla necessità di modificarlo frequentemente attraverso la ricompilazione. Si tratta cioè di un sistema monolitico. Nelle attuali versioni il kernel è costituito da una serie di moduli (codice eseguito in modalità kernel ma che può essere aggiunto a tempo di esecuzione). L’ambiente grafico non appartiene al kernel. Il DOS è formato da una shell (l’interprete dei comandi command.com) e da un kernel formato dai seguenti file: MSDOS.SYS che si occupa della gestione dei dischi, la gestione logica dei file e delle directory ed è indipendente dall’hardware. Riceve tutte le richieste di servizio che traduce per IO.SYS; IO.SYS corrisponde alla parte del bios non residente in memoria ROM; provvede alla gestione I/O e dipende strettamente dall’hardware. Fanno parte del sistema anche i driver che forniscono l’accesso all’hardware. Windows (NT,2000 e XP) è un sistema microkernel; il microkernel non viene mai modificato dall’amministratore del sistema. Il microkernel si occupa della gestione delle interruzioni, dei processi e dei thread, della sincronizzazione tra processori in ambiente multiprocessore. Il microkernel è affiancato da altre parti del sistema operativo che costituiscono l’executive. L’executive comprende per esempio il gestore dei processi, il gestore della memoria e i driver. Questi sono completamente indipendenti e comunicano attraverso interfacce accuratamente controllate. Altre funzioni di sistema sono eseguite da parti non privilegiate del sistema operativo dette sottosistemi protetti. Questi sottosistemi sono eseguiti in modalità utente e possono perciò fallire senza che il resto si blocchi. L’interfaccia tra i sottosistemi protetti in modalità utente e executive in modalità kernel è costituita dallo strato superiore dell’executive, chiamato System services. Windows è realizzato secondo il modello client/server. Le applicazioni eseguite dall’utente sono i client che richiedono i servizi dei moduli del sistema operativo che sono i server. La natura indipendente dei componenti del sistema (i server) fà si che sia possibile distribuirli tra più processori su un singolo computer (multielaborazione simmetrica) o tra computer su una rete (elaborazione distribuita). L’ambiente grafico è strettamente integrato nel sistema operativo. 2