Politecnico di Torino CeTeM Sistemi Operativi 1 Organizzazione e struttura dei sistemi operativi Organizzazione e struttura dei Sistemi Operativi Un sistema operativo è un software con il compito di svolgere le seguenti funzioni: • assegnazione delle risorse (CPU, memoria, ecc.) • risoluzione dei conflitti • scelta dei criteri di assegnazione • fornire delle system call • presentare all’utente una macchina estesa (o virtuale). • nascondere all’utente i dettagli HW legati ad un dispositivo Nei sistemi monoprogrammati, un solo processo è in memoria e può essere eseguito; l’utilizzo della risorsa CPU è basso soprattutto per i processi I/O bound. Per contro, nei sistemi multiprogrammati, più programmi possono risiedere contemporaneamente in memoria e quando il processo che detiene la CPU si blocca, per esempio in attesa di un’operazione di I/O, il sistema operativo può mandare in esecuzione un altro programma. Nei sistemi multiprogrammati l’occupazione teorica della CPU può arrivare al 100%. I sistemi a divisione di tempo (time sharing) sono un’ulteriore evoluzione dei sistemi multiprogrammati; un processo può restare in esecuzione solo per un quanto di tempo prestabilito, dopodiché la CPU è assegnata ad un altro processo in attesa. Con questa strategia migliorano i tempi di attesa per i programmi corti, ma subentra il problema del cambio di contesto (context switching) tra processi. Le componenti essenziali di un sistema operativo sono: • Gestore dei processi. • Gestori della memoria principale e secondaria. • Gestore dei dispositivi di I/O. • Gestore dei file. • Sistema di protezione. • Gestione della comunicazione tra sistemi distribuiti. • Interprete dei comandi I programmi comunicano con il S.O. e richiedono ad esso particolari servizi tramite le chiamate di sistema (system call); ad esempio: gestione dei file, sincronizzazione tra processi, invio di messaggi, ecc. Le chiamate di sistema possono essere usate direttamente come istruzioni nei linguaggi ad alto livello (esempio C) e a ciascuna chiamata di sistema corrisponde una funzione di libreria. Esecuzione di una system call: • memorizzazione dei parametri • trasferimento del controllo al S.O. (INT). • ritorno del controllo al programma chiamante, con restituzione di alcuni parametri (codice di stato). © Politecnico di Torino Data ultima revisione 07/04/00 Pagina 1 di 4 Autore: Andrea Sanna Politecnico di Torino CeTeM Sistemi Operativi 1 Organizzazione e struttura dei sistemi operativi Possibili organizzazioni dei S.O.: • Sistemi monolitici Dos, Unix • Sistemi a livelli OS/2 • Macchine virtuali VM/370 • Modello cliente servitore. Nei sistemi monolitici il S.O. è scritto come una collezione di procedure. Ogni procedura può chiamare qualunque altra procedura del sistema (nessun livello di gerarchia). Nei sistemi a livelli: • Le funzioni del sistema sono organizzate a livelli gerarchici. • Ogni livello definisce un tipo di servizio e le modalità di utilizzo da parte del livello superiore. • Ogni livello definisce una macchina virtuale, aggiungendo nuove funzionalità. • Difficoltà nella realizzazione pratica della gerarchia. Il VM/370 crea più macchine virtuali; ogni macchina può ospitare un S.O. differente. © Politecnico di Torino Data ultima revisione 07/04/00 Pagina 2 di 4 Autore: Andrea Sanna Politecnico di Torino CeTeM Sistemi Operativi 1 Organizzazione e struttura dei sistemi operativi Domande Domanda 1 Illustrare le differenze tra sistemi operativi multiprogrammati e sistemi operativi a divisione di tempo (time sharing). Risposta Nei sistemi multiprogrammati la memoria è divisa in un certo numero di partizioni, che vengono assegnate, secondo determinate politiche, ai processi. Se un processo è in attesa del completamento di un’operazione di I/O, può essere eseguito un altro processo presente in memoria, migliorando così l’utilizzo della CPU. Nei sistemi a divisione di tempo (time sharing) esiste una vera e propria interazione tra utente e sistema (i sistemi multiprogrammati sono sostanzialmente dei sistemi batch) in cui la CPU viene assegnata periodicamente per un quanto di tempo a tutti i processi. Domanda 2 Si illustrino le principali funzioni di un sistema operativo. Risposta Un sistema operativo deve essere in grado di gestire le risorse del sistema di elaborazione (CPU, memoria, ecc.) assegnandole ai processi che ne facciano richiesta. Al contempo deve essere in grado di gestire eventuali contese per le risorse risolvendo i problemi di competizione tra i processi. Inoltre, un sistema operativo deve presentare all’utente una macchina virtuale (o estesa) in modo da nascondere tutti i dettagli hardware che sarebbero troppo complicati da gestire per la maggior parte degli utenti. Il sistema operativo deve quindi mettere a disposizione una serie di funzioni, dette system call, che permettono all’utente di gestire file, creare e sincronizzare processi, gestire i periferici ecc. Le system call devono poter essere usate come funzioni di libreria nei programmi ad alto livello, in modo da essere utilizzabili dai programmatori. Domanda 3 Descrivere le principali tipologie di sistemi operativi. Risposta Possono essere individuate 4 grosse categorie di sistemi operativi: A. Sistemi monolitici: tutte le procedure del kernel sono unite insieme senza alcuna gerarchia (una procedura del nucleo ha la completa “visibilità” di tutte le altre procedure). B. Sistemi a livelli: le funzioni del sistema operativo sono organizzate a livelli gerarchici; ogni livello definisce i servizi e le modalità di utilizzo dei medesimi da parte del livello immediatamente superiore. Ogni livello è come se definisse una nuova macchina virtuale che aggiunge delle funzionalità a quella definita dal livello sottostante. C. Sistemi basati sul modello cliente servitore: il nucleo del sistema operativo è ridotto al minimo indispensabile e molte delle funzione del sistema operativo sono realizzate a livello utente. Quando un processo utente (cliente) invia una richiesta di servizio, il kernel analizza la richiesta e la “gira” ad un processo utente (servitore) in grado di soddisfarla. © Politecnico di Torino Data ultima revisione 07/04/00 Pagina 3 di 4 Autore: Andrea Sanna Politecnico di Torino CeTeM Sistemi Operativi 1 Organizzazione e struttura dei sistemi operativi D. Sistemi distribuiti: i sistemi distribuiti sono un’estensione del modello cliente servitore in cui i vari processi e le vari moduli del sistema possono essere fisicamente allocati su macchine differenti. © Politecnico di Torino Data ultima revisione 07/04/00 Pagina 4 di 4 Autore: Andrea Sanna