IL SISTEMA OPERATIVO (seconda parte) PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI (NUCLEO) HARDWARE 1 ● ● ● ● ● ● IL SISTEMA OPERATIVO Il sistema operativo gestisce le risorse della macchina fisica sottostante e fornisce all’utente l’astrazione di macchina virtuale lo strato di Gestione dei processi gestisce l’unità di elaborazione, ossia la CPU lo strato di Gestione della memoria gestisce la memoria centrale lo strato di Gestione delle periferiche gestisce i dispositivi periferici e le loro connessioni con la CPU Il file system è l’organizzazione logica dei file sulla memoria di massa l’interprete comandi permette di interpretare i comandi di alto livello 2 La gestione delle periferiche Funzioni principali: • Indirizzamento dei segnali da e verso le periferiche • Sincronizzazione delle periferiche Gestione del sistema di Ingresso/Uscita • Gestione dei flussi di dati (buffer). • Interfaccia generale per i programmi di controllo (driver) delle periferiche (device). • Collezione di programmi di controllo (driver) specifici per le varie periferiche (device) collegabili al calcolatore. 3 La gestione delle periferiche: i driver I driver sono meccanismi software cui è affidato il compito di comunicare dati da e verso le periferiche Garantiscono ai programmi che li usano una visione di alto livello • E’ possibile leggere o scrivere tramite primitive indipendenti dalla struttura hardware delle periferiche Distinguiamo: • Driver fisici (hardware): vengono attivati direttamente dal gestore delle interruzioni • Driver logici (software): fanno parte del sistema operativo e forniscono una gerarchia di operazioni, con un’ organizzazione a strati 4 Gestione della memoria centrale • Tutti i programmi che compongono il SO e i programmi applicativi attivi usano contemporaneamente la RAM • Il gestore della memoria si preoccupa di fare condividere la RAM ai vari processi in esecuzione in modo che: ogni processo abbia il suo spazio privato distinto dagli altri (e inaccessibile agli altri) ogni processo abbia abbastanza memoria per eseguire il proprio algoritmo e raccogliere i suoi dati 5 Gestione della memoria centrale • La strategia più semplice (NON VA BENE!) – ricopiare interamente lo spazio di indirizzamento di un processo P dalla memoria secondaria alla RAM quando P va in esecuzione AmpiezzaRAM - 1 RAM vuota Spazio Indirizzamento processo 2 Spazio Indirizzamento processo 1 Sistema Operativo Area riservata, non accessibile in modalità utente 0 6 La memoria virtuale La memoria però deve essere gestita con molta attenzione ed efficienza caricando solo i dati e le istruzioni che devono essere modificate ed eseguite. Le altre parti devono essere spostate sul disco per poter essere caricate quando necessario. La memoria virtuale è un sistema per aumentare lo spazio di memoria disponibile. La memoria virtuale è maggiore di quella fisica. La gestione della memoria è coordinata con la gestione dei processi. 7 Partizione della memoria La strategia adottata: partizionamento della memoria e del suo spazio di indirizzi mediante paginazione e/o segmentazione (implementate anche contemporaneamente). Tecniche di partizionamento: • • Segmentazione: suddivide la memoria centrale in segmenti di lunghezza variabili contenenti parti di un programma logicamente correlati tra di loro Paginazione: suddivide memoria e programmi in pagine di lunghezza fissa Sia nel caso della partizione, sia in quello della segmentazione, il gestore della memoria offre al programma applicativo la visione di una memoria virtuale 8 Tabella delle pagine A ogni processo viene assegnata nella fase di partenza una tabella detta tabella delle pagine dove per ogni pagina usata dal processo viene scritto dove si trova la pagina fisica. Se viene richiesto un indirizzo NON in memoria, si genera un fault di pagina che provoca il caricamento di una nuova pagina TABELLA DELLE PAGINE PAGINA VIRTUALE PAGINA FISICA TIPO PAGINA Pagina 0 Pagina 3 RAM Pagina 1 Pagina 20 DISCO Pagina 2 Pagina 1 DISCO Pagina 3 Pagina 2 RAM 9 Gestione dei processi: richiami sulla classificazione dei S.O. In base alla modalità di gestione dei programmi: Monoprogrammazione: esegue un solo programma alla volta) Multiprogrammazione: esegue più programmi apparentemente conteporaneamente, in time-sharing, suddividendo il tempo di esecuzione in intervalli molto piccoli e assegnando a turno le risorse ai diversi programmi) In base al tipo di accesso fornito agli utenti: Monoutente: un solo utente può usare la macchina Multiutente: più utenti possono contemporaneamente interagire con la stessa macchina 10 Multiprogrammazione: time-sharing I concetti di mono e multi-programmazione sono indipendenti da quelli di SO mono e multi-utente I SO attuali operano tutti in multiprogrammazione Quando si parla di multiprogrammazione si parla anche di time-sharing: il sistema operativo che fa sì che le risorse del calcolatore siano assegnate per prefissati intervalli di tempo, in successione, ai diversi programmi: gli intervalli di tempo possono essere più o meno lunghi l’uno rispetto all’altro, a seconda della priorità di cui gode il programma che l'utente utilizza. 11 Sistema operativo in time sharing Permette la condivisione della CPU tra più processi Ogni processo in esecuzione ha a disposizione un quanto di tempo di utilizzo della CPU, al termine del quale viene sospeso per lasciare il posto ad un altro processo in attesa di esecuzione. Processo 1 Processo 2 Processo 3 tempo Fase di elaborazione Attesa per quanto di tempo scaduto o per operazioni di I/O 12 Coda di scheduling • In un sistema con un singolo processore e più processi non è possibile avere più di un processo attivo in ogni istante di tempo. • È necessario eseguire i processi a per quanti di tempo e prevedere un sistema di riordinamento (scheduling) delle loro esecuzioni, che assegni loro tempo di esecuzione in modo equo. • I processi vengono fatti avanzare a turno, assegnando loro un quanto di tempo per portarsi avanti nell’esecuzione. • Si ottiene lo scheduling dei processi mediante una (o anche più di una) coda di scheduling, in cui vengono inseriti i processi che devono essere fatti aspettare. 13 Sistema operativo e macchine virtuali In una macchina multiprogrammata il sistema operativo gestisce più processi contemporaneamente, rendendo visibile ad ogni processo una macchina “virtuale” ad esso interamente dedicata e quindi con risorse proprie. 14 Sistema operativo e macchine reali In una macchina multiprogrammata il sistema operativo condivide le risorse tra processi. 15 Lo scheduler Lo schedulatore (scheduler) è la componente del sistema operativo che si occupa di spostare i processi tra le varie code di attesa. coda dei processi in stato pronto I/O CPU coda di I/O richiesta di I/O quanto di tempo esaurito fine esecuzione processo figlio processo figlio in esecuzione fork di un processo figlio arrivo dell’interruzione attesa di un’interruzione 16 Sincronizzazione dei processi A volte, i processi devono sincronizzarsi, ovvero coordinare le loro attività Il coordinamento sequenziale: un processo termina invocando l’attivazione di un altro processo La competizione: due processi vogliono accedere simultaneamente a una medesima risorsa (risorsa critica) 17