Il Sistema Operativo
Il sistema operativo Con il termine sistema operativo si intende l insieme di programmi e librerie che opera direttamente sulla macchina fisica mascherandone le caratteristiche specifiche e fornendo agli utenti un insieme di funzionalità di alto livello In sintesi, il sistema operativo: fornisce all utente una interfaccia per usare e gestire il calcolatore in modo semplice è responsabile della gestione delle risorse del calcolatore, e in particolare di come le risorse vengono allocate alle applicazioni e dell ottimizzazione del loro uso G. Di Modica Fondamenti di Informatica 2
Funzionalità del sistema operativo Si consideri, ad esempio, un utente che vuole avviare l esecuzione di un programma la richiesta di esecuzione di un programma può avvenire facendo un doppio click sull icona del programma sul desktop del calcolatore il desktop del calcolatore fa parte dell interfaccia grafica del sistema operativo per avviare l esecuzione del programma, il sistema operativo svolge le seguenti attività individua il codice eseguibile del programma (memorizzato sull hard disk) Alloca (riserva) al programma le risorse necessarie per la sua esecuzione (ad esempio, una certa quantità di memoria centrale) carica il codice eseguibile del programma in memoria centrale avvia il programma (partendo dalla prima istruzione.) G. Di Modica Fondamenti di Informatica 3
Una (possibile) classificazione dei S.O. I moderni sistemi operativi possono essere classificati in: Sistemi monotask Permettono l esecuzione di un solo programma utente per volta (es. DOS) Sistemi multitask Permettono l esecuzione di più programmi utente contemporaneamente Classificazione ulteriore Multitasking cooperativo (windows 3.1, MacOS prime versioni) Multitasking preemptive (Unix, Windows 95/98/NT/2000/XP, MacOS ultime versioni) G. Di Modica Fondamenti di Informatica 4
Architettura di un Sistema Operativo Un moderno S.O. è organizzato secondo una architettura a strati (a cipolla) Ogni strato implementa una macchina virtuale più potente della precedente Appoggiandosi alle funzionalità offerte dallo strato precedente Tale approccio permette una chiara separazione tra interfaccia ed implementazione delle varie funzionalità Ogni strato è costituito da un insieme di programmi e librerie I meccanismi di chiamate tra livelli possono essere diversi Chiamate a sottoprogrammi, interruzioni sincrone o asincrone, invio di messaggi a processi G. Di Modica Fondamenti di Informatica 5
Sistema operativo Architettura di un Sistema Operativo Programmi applicativi / Utenti Interprete comandi Interfaccia grafica Gestore della memoria Gestore delle periferiche Nucleo (kernel) Gestore dei file hardware G. Di Modica Fondamenti di Informatica 6
Sitemi operativi e macchine virtuali Le diverse componenti di un sistema operativo hanno, tra l altro, lo scopo di gestire e virtualizzare le diverse risorse del calcolatore, ovvero di renderle più semplici da utilizzare da parte dei suoi utenti gli utenti del sistema operativo sono in parte gli utenti finali (ovvero, le persone che utilizzano il calcolatore tramite il sistema operativo) ma comprendono anche i programmi applicativi le risorse gestite dal sistema operativo sono i processori, la memoria, le periferiche, le memorie secondarie, l interfaccia utente l utente del calcolatore interagisce in modo diretto solo con l interprete comandi del sistema operativo, che è il componente più esterno del sistema operativo G. Di Modica Fondamenti di Informatica 7
Nucleo (kernel) Il nucleo del sistema operativo (o kernel) è il componente del sistema operativo più complesso, che in particolare è responsabile della gestione della risorsa unità di elaborazione (processore) e dei processi (ovvero, dei programmi in esecuzione) al di sotto il nucleo esiste fisicamente un solo processore quindi il calcolatore potrebbe svolgere un solo programma alla volta il nucleo ha (tra l altro) lo scopo di definire tanti processori virtuali, uno per ciascun programma che si vuole eseguire ciascun processo in esecuzione ha l impressione di essere l unico processo eseguito dal calcolatore il nucleo ripartisce la capacità di elaborazione dell unico processore reale tra i tanti processori virtuali Inoltre, il nucleo fornisce un insieme di servizi di base di supporto agli altri componenti del sistema operativo G. Di Modica Fondamenti di Informatica 8
Concetti di base: i processi Un processo è un programma in esecuzione È costituito da: Codice: il programma vero e proprio Stato: i dati contenuti in memoria e nei registri in un dato istante La relazione tra programma e processo non è necessariamente biunivoca Un programma può dar luogo a più processi (programmazione concorrente) Un sistema multitasking consente quindi di gestire più processi in parallelo È più corretto parlare di processi che di programmi in questo contesto G. Di Modica Fondamenti di Informatica 9
Il gestore dei processi Il gestore dei processi Si appoggia direttamente sulla macchina fisica Si occupa di eseguire i vari processi In un sistema multitasking, esso realizza una macchina virtuale in cui ad ogni processo è assegnato un processore virtuale Comprende i principali programmi di risposta ad interrupt Realizza le primitive di sincronizzazione e scambio messaggi tra processi Memorizza i dati di ciascun processo in una struttura dati chiamata descrittore di processo G. Di Modica Fondamenti di Informatica 10
Stati di un processo In esecuzione (running) Al processo è assegnato il processore Il processo esegue fino a quando: Si verifica un evento esterno (interruzione esterna) O fino a quando il processo richiede l esecuzione di una operazione di I/O (interruzione interna) In attesa (waiting) Il processo giunge in questo stato a seguito di una interruzione interna Andrà in uno stato di pronto non appena l operazione richiesta sia completata Pronto (ready) Il processo giunge in questo stato dallo stato di attesa a seguito del completamento della operazione di I/O richiesta o dallo stato di esecuzione, al verificarsi di una interruzione esterna O allo scadere del quanto di tempo assegnato al processo (nel caso di S.O. preemptive time-sharing) G. Di Modica Fondamenti di Informatica 11
Ciclo di vita di un processo Fine esecuzione Primo processo pronto In esecuzione Interruzione interna Interruzione esterna, Fine quanto di tempo Pronto In attesa Inizio esecuzione Evento esterno atteso G. Di Modica Fondamenti di Informatica 12
Scheduling dei processi Per dare l illusione dell esecuzione contemporanea di processi viene utilizzato un meccanismo di scheduling del processi Una possibilità è il time-sharing: Ad ogni processo attivo è assegnato un quanto di tempo allo scadere del quale il processo viene spostato in stato di pronto ed il processore viene assegnato ad un altro processo Dimensioni tipiche del quanto di tempo sono di qualche decina di millisecondi G. Di Modica Fondamenti di Informatica 13
Gestore della memoria Il gestore della memoria è responsabile dell allocazione dinamica della memoria centrale ai programmi in esecuzione Per ciascun processo viene allocata una area di memoria virtuale sufficiente per la sua esecuzione Supera i limiti della memoria fisica, mostrando ai processi uno spazio di memoria virtuale Partiziona la memoria tra i vari processi che la richiedono Garantendo la protezione delle diverse zone di memoria G. Di Modica Fondamenti di Informatica 14
Il gestore della memoria È responsabile di: Suddividere la memoria tra i vari processi in esecuzione Rilocare i programmi affinchè possano eseguire indipendentemente dalla loro effettiva posizione fisica Gestire la politica di assegnamento della memoria ai processi Tale politica deve essere coordinata con la politica di gestione dei processi svolta dal nucleo Fornire l astrazione della memoria virtuale Ciascun processo ha a sua disposizione una quantità di memoria superiore a quella fisicamente disponibile G. Di Modica Fondamenti di Informatica 15
Memoria virtuale: lo swap Il gestore della memoria può usare una parte della memoria di massa come area di memoria di appoggio Quando un processo è sospeso i suoi segmenti dati, codice e stack possono essere spostati su disco per liberare memoria centrale Ciò consente di mostrare ai processi una memoria virtuale di dimensione superiore alla memoria centrale G. Di Modica Fondamenti di Informatica 16
Gestore delle periferiche Il gestore delle periferiche adatta la modalità d uso delle singole periferiche (che possono essere estremamente diverse) a quello di poche tipologie di periferiche virtuali Maschera le caratteristiche fisiche delle periferiche Fornisce agli strati superiori un insieme di procedure di alto livello per l accesso alle diverse periferiche Offre ad ogni processo la visibilità di un insieme di periferiche virtuali dedicate Consente a più processi di condividere la stessa periferica Gestisce, almeno in parte, i malfunzionamenti delle periferiche G. Di Modica Fondamenti di Informatica 17
Gestore dei file Il gestore dei file (o file system) è responsabile della gestione della memoria secondaria (hard disk) i dischi sono fisicamente organizzati in superfici, cilindri e settori il gestore dei file consente l uso della memoria secondaria mediante una organizzazione logica in volumi, cartelle e file un file è una sequenza di dati di dimensioni variabili, con accesso sequenziale oppure casuale una cartella (o direttorio) è un contenitore di un insieme di file e cartelle un volume è un contenitore di file e cartelle, solitamente corrispondente ad una unità a disco Inoltre, il gestore dei file permette di mostrare anche le periferiche come dei file, da cui è possibile leggere e/o su cui è possibile scrivere sequenze di dati G. Di Modica Fondamenti di Informatica 18
Il file system: dettagli Il sistema operativo gestisce la corrispondenza tra l organizzazione logica e l organizzazione fisica dei dati i dati nelle memorie secondarie sono organizzati logicamente in volumi, cartelle e file i dati nelle memorie secondarie sono organizzati fisicamente in dischi, superfici, cilindri e settori Fornisce agli strati superiori un insieme di procedure per l accesso a tali dati G. Di Modica Fondamenti di Informatica 19
Il file system: dettagli Un file è un contenitore logico di informazioni, caratterizzato da: un contenuto una sequenza di byte, da interpretare opportunamente un nome che ne consente l identificazione il nome è composto dal nome del file e da un percorso, che ne precisa il posizionamento all interno delle directory Il nome di un file è composto da due parti (separate da un punto) il nome scelto dall utente l estensione ha la funzione di identificare il formato del file o l applicazione da cui è stato creato, e quindi di consentire la corretta interpretazione del contenuto del file G. Di Modica Fondamenti di Informatica 20
Il file system: dettagli L insieme dei file di un calcolatore non viene gestito in un unico contenitore piatto, ma piuttosto i file vengono organizzati in volumi e cartelle un volume è un contenitore logico di file, corrispondente solitamente a una unità a disco ad esempio, il volume a: indica il floppy disk, e c: il disco fisso primario una cartella (o directory) è un contenitore logico di file e cartelle le cartelle sono organizzate gerarchicamente ad albero ogni cartella può contenere dei file ogni cartella può contenere altre cartelle (chiamate sottodirettori) la radice (root) è la cartella di livello gerarchico più elevato, corrispondente a un intero volume Si ottiene una struttura ad albero le cui foglie sono i file G. Di Modica Fondamenti di Informatica 21
Interprete comandi e interfaccia grafica L interprete comandi è l interfaccia utente del sistema operativo definisce le operazioni che possono essere utilizzate direttamente dall utente finale, chiamate comandi esempi di comandi sono esecuzione di una applicazione apertura di un documento (eseguendo l applicazione responsabile della manipolazione di quel tipo di documento) Nel caso di un sistema multiutente fornisce ai diversi utenti la visione di una macchina virtuale dedicata L interprete comandi può essere basato su una interfaccia a caratteri come nei sistemi operativi Unix, ma anche nel prompt dei comandi di Windows basato su una interfaccia grafica come nei sistemi operativi Windows e nell ambiente X Window di Unix G. Di Modica Fondamenti di Informatica 22
Programmi di utilità Il sistema operativo è corredato da un insieme di programmi di utilità, per la configurazione, l ottimizzazione e la gestione ordinaria del sistema: gestione degli utenti per definire gli utenti, i gruppi di utenti e i diritti di accesso alle varie risorse gestione delle periferiche ad esempio, programmi per l installazione e la configurazione delle periferiche, nonché programmi di utilità per la gestione dei dischi (come l utilità di formattazione e l utilità di deframmentazione) gestione delle applicazioni per l installazione e la disinstallazione di programmi altri accessori dall editor di testi alla gestione dei servizi Internet G. Di Modica Fondamenti di Informatica 23