Informatica Generale Marzia Buscemi [email protected] Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: http://www.di.unipi.it/~buscemi/IG07.htm (sommario delle lezioni in fondo alla pagina) 1 I sistemi operativi 2 Cos’è un sistema operativo ? Applicazioni Software Sistema Operativo Hardware Windows Unix/Linux Mac OS È il livello di SW con cui interagisce l’utente e comprende programmi quali : Compilatori Editori di testi, Sistemi bancari, Navigatori per Web ... gcc, Word, PowerPoint Excel, Explorer Fotoshop, Gimp È il livello di SW che interagisce direttamente con l’HW e che si occupa di un uso corretto ed efficiente delle risorse fisiche (processore, memorie, periferiche etc.) L’architettura del calcolatore e i meccanismi di funzionamento sono mascherati dal SO e all’utente appare una “macchina virtuale” 3 Quali sono le funzioni di un SO ? Esegue applicazioni : carica il programma binario prodotto della compilazione (e residente su disco) nella RAM cede il processore all’applicazione da eseguire Facilita l’accesso ai dispositivi di I/O interagisce con le periferiche facendosi carico di tutti i dettagli fisici (es. modem, reti, video…) mette a disposizione operazioni di lettura/scrittura ad alto livello che possono essere usate senza conoscere i dettagli tecnici della periferica 4 Quali sono le funzioni di un SO ? 2 Gestisce le risorse ripartisce le risorse disponibili fra le varie applicazioni (processore, RAM, periferiche) evita che ci siano malfunzionamenti dovuti all’uso contemporaneo di risorse es: un word processor e un web browser che inviano contemporaneamente dati alla stampante provocano una stampa erronea (il SO invece accoda le richieste e manda gli ordini di stampa in successione) ottimizza le prestazioni scegliendo delle politiche che permettano di sfruttare al meglio tutte le parti del computer 5 Quali sono le funzioni di un SO ? 3 Archivia dati e programmi : mette a disposizione dell’utente una visione astratta della memoria secondaria (il file system basato sulle astrazioni : file/archivi e folder/cartelle) gestisce la realizzazione di queste astrazioni sul supporto fisico (disco) gestendo tutti i dettagli legati alla lettura/scrittura dei settori 6 Quali sono le funzioni di un SO ? 4 Gestisce malfunzionamenti del sistema rileva e gestisce situazioni anomale es: se il disco ha un settore difettoso, il SO può trasportare automaticamente le informazioni residenti su quel settore da un’altra parte es: se un’applicazione cerca di effettuare una operazione non permessa (come leggere i dati di un’altra applicazione) può bloccare l’applicazione segnalando all’utente la situazione erronea 7 Bootstrap e shutdown Quando si applica la corrente elettrica al calcolatore viene attivata una fase di bootstrap che comprende l’attivazione di: 1. 2. programmi di diagnostica scritti in memoria ROM (non volatile), es. presenza moduli hardware e assenza guasti un programma che contiene le istruzioni necessarie a caricare dalla memoria di massa (floppy, CD, HD) una prima parte del sistema operativo Quando si spegne il calcolatore è necessaria un procedura di shutdown per salvare le informazioni in transito 8 Astrazione delle risorse L’esecuzione contemporanea di più programmi da parte della CPU richiede che questi allo stesso tempo risiedano in memoria possano prendere il controllo delle stesse periferiche Per evitare conflitti è necessario virtualizzare le risorse: le richieste confluiscono sui programmi di sistema che le accodano (es. coda di stampa) 9 Stato utente e stato supervisore Stato utente : modalità di funzionamento del computer che permette l’accesso solo a un numero limitato di risorse es. un sottoinsieme delle istruzioni assembler (non si può accedere alle istruzioni che istruiscono le interfacce di I/O), una sola parte della RAM etc. Stato supervisore : modalità che permette l’accesso a tutte le risorse es. i processi mandati in esecuzione dal SO 10 Stato utente e in stato supervisore 2 I programmi che si eseguono in stato utente richiedono servizi al SO tramite invocazione di sottoprogrammi speciali, dette system call o chiamate di sistema Il SO decide come e quando effettuare il servizio Es. un processo richiede l’accesso a una risorsa come una stampante, etc.) Il SO può interrompere un programma in esecuzione in stato utente per eseguire altri programmi o per effettuare operazioni di ‘gestione’ della macchina (vedi dopo ‘Interruzione di programmi’) Es. una risorsa precedentemente occupata notifica al SO di essersi resa disponibile 11 Quali sono le parti di un SO ? lato utente servizi richiesti dagli utenti S I S T E M A O P E R A T I V O Interfaccia grafica (desktop) nucleo del SO (kernel) Gestore dei processi Gestore dei processori Gestore della memoria HW File system Gestore dell’I/O 12 Gestore dei processi 13 Esecuzione di un programma Algoritmo Codifica in un linguaggio di programmazione (C, Java etc) Passo 1 : scrivere e compilare il programma Programma Input : programma Compilatore Eseguibile Output : rappresentazione comprensibile alla macchina 14 Esecuzione di un programma 2 Come è organizzata la rappresentazione binaria eseguibile del programma (spazio di indirizzamento): Struttura che 232 - 1 Stack/pila permette di realizzare correttamente il meccanismo di chiamata a sottoprogrammi È un array di parole ! Codifica binaria dei dati dati testo 0 Codifica binaria delle istruzioni assembler in cui 15 il programma è stato tradotto Esecuzione di un programma 3 Passo 2 : ricopiare lo spazio di indirizzamento di un programma da memoria secondaria a RAM Ampiezza RAM - 1 Spazio programma 3 Spazio programma 2 Una possibile organizzazione della RAM con più programmi attivi contemporaneamente Spazio programma 1 Sistema Operativo 0 Area riservata, non accessibile in modalità utente 16 Esecuzione di un programma 4 Passo 3 : modificare il PC del processore in modo che contenga correttamente l’indirizzo della prima istruzione assembler da eseguire nel nostro programma AmpiezzaRAM - 1 Spazio programma 3 Spazio programma 2 440 Spazio programma 1 È l’indirizzo da scrivere nel PC Sistema Operativo 0 Prima istruzione da eseguire nel programma 2 17 Esecuzione di un programma 5 Quando un programma utente è stato attivato il processore esegue una dopo l’altra le istruzioni assembler che lo compongono Un programma in esecuzione viene detto ‘processo’ ( parte statica [il programma] + parte dinamica [informazioni sullo stato di esecuzione del programma] ) Il gestore dei processi controlla la terminazione, interruzione e riattivazione, sincronizzazione dei processi 18 Terminazione di un processo Un processo termina : Quando esegue una istruzione assembler di terminazione Quando effettua una operazione illecita (es. cerca di accedere a memoria privata di altri processi) Quando c’è un errore che non gli permette di proseguire (es. overflow, etc) In tutti questi casi il processore ricomincia automaticamente ad eseguire il sistema operativo ad un indirizzo prefissato 19 Interruzione di un processo Il sistema operativo può bloccare un processo in un qualsiasi istante della sua esecuzione per effettuare qualche operazione di gestione della macchina Questo avviene attraverso il meccanismo hardware degli interrupt 20 Interruzione di un processo 2 Come funzionano gli interrupt: ogni periferica può ‘richiedere attenzione’ inviando un segnale di interrupt usando le linee di controllo del bus alla fine dell’esecuzione di ogni istruzione assembler il processore controlla la presenza di una interruzione se è presente il controllo passa automaticamente al sistema operativo 21 Sistemi monotasking I SO che gestiscono l’esecuzione di un solo processo per volta si chiamano monotasking. Non è possibile sospendere l’esecuzione di un processo per assegnare la CPU a un altro Sono storicamente i primi SO (MS-DOS) 22 Sistemi monotasking: diagramma temporale in esecuzione (E) in attesa di I/O (A) pronto (P) C B A 23 Sistemi multitasking I SO che permettono l’esecuzione contemporanea di più processi si chiamano multitasking (Windows-XP, Linux) Un processo può essere interrotto e la CPU passata a un altro processo 24 Sistemi multitasking: diagramma temporale in esecuzione (E) in attesa di I/O (A) pronto (P) C B A T_multi- T_monotasking tasking 25 Time-sharing È il meccanismo che permette di far condividere il processore a tutti i programmi attivi in modo corretto Ogni programma ha l’impressione di avere un suo processore ‘dedicato’ Per evitare che un processo resti troppo a lungo in attesa, le risorse sono ripartite tra i processi i processi vengono accodati e ciascuno ha a disposizione la CPU per un quanto di tempo (time-slice) quando il quanto finisce il processo viene messo in fondo alla coda Due tempi di esecuzione: elapsed time e CPU time 26 Time-sharing 2 Es: 3 programmi attivi Prog1, Prog2, Prog3 vengono mandati in esecuzione ciclicamente Eseguo Prog1 Quanto 20-100 ms Eseguo Prog2 Eseguo Prog3 Eseguo Prog1 Interruzione : il SO riprende il controllo e decide chi eseguire nel quanto successivo Periferica ‘orologio interno’ 27 Sistemi real-time Nelle applicazioni real-time il tempo di completamento dell’esecuzione è un parametro critico (es. controllo rotta di un aereo, applicazioni multimediali) I sistemi real-time garantiscono che i requisiti temporanei vengano soddisfatti. Es.: Ad ogni istante si esegue il processo più critico I processi non vengono interrotti finché non arriva uno con priorità più alta La priorità è fissa (diversamente da time28 sharing) Tabella dei processi Ciascun processo ha un ciclo di vita: in esecuzione, pronto, bloccato. Per poter passare da uno stato all’altro le informazioni più importanti del processo devono essere salvate La tabella del processo risiede in memoria centrale e contiene: ID processo PC Registri Stato Informazioni gestione memoria Informazioni scheduling (priorità) Informazioni I/0 (dispositivi allocati, etc.) 29 Tabella dei processi 2 Permette le seguenti operazioni: creazione processo cambio priorità liberazione risorse (se il processo è bloccato) terminazione di un processo Context-switching: salvataggio dei registri e dello stato del processo che si è terminato di eseguire e di quello che si eseguirà 30 Comunicazione/sincronizzazione di processi Riguarda la condivisione di risorse fisiche, logiche , funzioni eseguite da più moduli (processi cooperativi/competitivi) Race condition: due processi competono per l’accesso a un dato o risorsa La comunicazione viene gestita con scambi di messaggi o memoria condivisa. Memoria condivisa: realizzata tramite semafori, monitor, rendezvous 31