Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Strutture dei Sistemi Operativi Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.2 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.3 Silberschatz, Galvin and Gagne ©2009 Servizi del sistema operativo - 1 Un Sistema Operativo deve fornire un insieme di servizi che variano a seconda del Sistema Operativo, ma includono almeno: Esecuzione di un programma Operazioni di I/O Il sistema deve essere in grado di caricare in memoria dei programmi, mandarli in esecuzione e terminare in maniera corretta l’esecuzione anche in presenza di errori Un programma in esecuzione necessita di I/O da un dispositivo Gestione del file system Il file system permette ai programmi di leggere e scrivere file e directory, crearle, cancellarle e la gestione dei permessi di lettura e scrittura Operating System Concepts – 8th Edition 2.4 Silberschatz, Galvin and Gagne ©2009 Servizi del sistema operativo - 2 Comunicazioni I processi possono scambiarsi informazioni, sullo stesso computer o attraverso una rete tra computer disposti su una rete La comunicazione può avvenire attraverso una memoria condivisa o attraverso il scambio di messaggi Rilevamento d’errori Un Sistema Operativo deve essere costantemente capace di rilevare possibili errori Gli errori possono presentarsi sulla CPU, in memoria, sui dispositivi di I/O o nei programmi utenti Per ogni tipo di errore, il Sistema Operativo deve intraprendere l’azione opportuna per assicurare una continuazione corretta Operating System Concepts – 8th Edition 2.5 Silberschatz, Galvin and Gagne ©2009 Servizi del sistema operativo - 3 Un altro insieme di funzioni è essenziale per assicurare il corretto funzionamento del sistema attraverso le risorse condivise Assegnazione delle risorse Contabilizzazione dell’uso delle risorse Più utenti i più processi concorrenti richiedono una allocazione equa delle risorse disponibili (e.g., cicli di CPU, memoria, spazio su disco, dispositivi di I/O) Tenere traccia degli utenti e della quantità di risorse che utilizzano Protezione e sicurezza Le informazioni devono poter essere archiviate e gestite secondo politiche di protezione, inoltre i processi non devono poter interferire l’uno con l’altro Se un sistema deve essere protetto e sicuro, al suo interno devono esistere delle precauzioni ovunque. La forza di una catena è esattamente quella del suo anello più debole Operating System Concepts – 8th Edition 2.6 Silberschatz, Galvin and Gagne ©2009 Panoramica dei servizi Operating System Concepts – 8th Edition 2.7 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.8 Silberschatz, Galvin and Gagne ©2009 Interfaccia utente CLI L’interfaccia utente a linea di comando permette di impartire direttamente comandi al SO (istruzioni di controllo) Solitamente un utente ha la possibilità di scegliere diversi CLI chiamate shell La sua funzione è quella di interpretare ed eseguire la successiva istruzione di comando (interprete dei comandi) Il comando può essere implementato internamente alla shell Oppure può essere un programma esterno da avviare una eventuale aggiunta di nuovo comandi non comporta la modifica della shell Operating System Concepts – 8th Edition 2.9 Silberschatz, Galvin and Gagne ©2009 L’interprete dei comandi Linux - 1 Esempio A fronte del comando $ rm file.txt l’interprete cerca un file chiamato rm, generalmente seguendo un percorso standard nel file system (usr/bin), lo carica in memoria e lo esegue con il parametro file.txt Esegue la cancellazione del file file.txt Operating System Concepts – 8th Edition 2.10 Silberschatz, Galvin and Gagne ©2009 L’interprete dei comandi Linux - 2 Bash shell (per Bourne Again SHell) è una shell testuale del progetto GNU, ma disponibile anche per alcuni sistemi Microsoft Windows (es. Cygwin) Operating System Concepts – 8th Edition 2.11 Silberschatz, Galvin and Gagne ©2009 Interfaccia utente GUI La metafora del desktop rappresenta l’interfaccia verso il sistema Di solito si utilizzando mouse, tastiera, e monitor Le icone rappresentano file, programmi o altro L’interazione avviene usando il mouse sopra gli oggetti del desktop generando opportune azioni da gestire (apri, sposta, esegui, etc…) Inventata alla Xerox PARC…copiata dalla Apple Computer ☺ Operating System Concepts – 8th Edition 2.12 Silberschatz, Galvin and Gagne ©2009 The Mac OS X GUI Operating System Concepts – 8th Edition 2.13 Silberschatz, Galvin and Gagne ©2009 Interfacce utente Molti sistemi operativi attuali includono interfacce sia CLI che GUI Microsoft Windows è ad interfaccia grafica, ma dotato di una shell di comandi (DOS) Apple Mac OS X interagisce per mezzo della GUI “Aqua”, ma è dotato di un kernel UNIX e mette a disposizione diversi tipi di shell Solaris è tipicamente CLI, con interfaccia GUI opzionale (Java Desktop, KDE) Linux era originariamente, come tutti i sistemi UNIX-like, di tipo CLI, ma le versioni attuali offrono interfacce GUI molto avanzate (KDE, GNOME) Operating System Concepts – 8th Edition 2.14 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.15 Silberschatz, Galvin and Gagne ©2009 Chiamate di sistema Le chiamate di sistema (o system call) rappresentano l’interfaccia ai servizi forniti dal Sistema Operativo Tipicamente sono scritte in un linguaggio ad alto livello (C/C++) Sono principalmente accessibili attraverso una API (Application Program Interface) e quasi mai direttamente (anche se è possibile) Le API più comuni sono: Win32 API per Windows POSIX API (Portable Operating System Interface for Unix) per I sistemi POSIX compatibili (UNIX, Linux, MacOS X) Java API per la Java virtual machine Operating System Concepts – 8th Edition 2.16 Silberschatz, Galvin and Gagne ©2009 Esempio di System Call La sequenza delle system call per poter copiare il contenuto di un file in un altro file Operating System Concepts – 8th Edition 2.17 Silberschatz, Galvin and Gagne ©2009 Esempio usando le Java API // Copies src file to dst file. // If the dst file does not exist, it is created void copy(File src, File dst) throws IOException { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dst); // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); } Operating System Concepts – 8th Edition 2.18 Silberschatz, Galvin and Gagne ©2009 Implementazione delle System Call Tipicamente ad ogni system call è associato un numero Il Sistema Operativo mantiene una tabella con tutti gli indici delle system call L’interfaccia alle chiamate di sistema invoca la system call all’interno del kernel del Sistema Operativo e ritorna lo stato della system call e un certo numero di valori Il programmatore non ha bisogno di sapere come è implementata la system call Deve solo capire come funzione l’API e cosa restituirà la chiamata In questo modo molti dettagli dell’interfaccia del SO sono nascosti al programmatore attraverso l’API Operating System Concepts – 8th Edition 2.19 Silberschatz, Galvin and Gagne ©2009 Relazioni API – System call – SO Operating System Concepts – 8th Edition 2.20 Silberschatz, Galvin and Gagne ©2009 Passaggio di parametri Per poter chiamare una system call abbiamo bisogno di passargli un insieme di parametri È possibile adoperare tre metodi per il passaggio dei parametri Passare tutti i parametri nei registri In alcuni casi ci potrebbero essere più parametri che registri I parametri sono memorizzati in un blocco in memoria, l’indirizzo del blocco è passato come parametro in un registro Approccio utilizzato da Linux e Solaris Non limita il numero dei parametri che è possibile passare I parametri sono passati attraverso lo stack Il programma li inserisce (push) Il Sistema Operativo li estrae (pop) Operating System Concepts – 8th Edition 2.21 Silberschatz, Galvin and Gagne ©2009 Passaggio attravero blocco di memoria Operating System Concepts – 8th Edition 2.22 Silberschatz, Galvin and Gagne ©2009 Categorie di chiamate di sistema - 1 Le chiamate di sistema sono classificabili in cinque categorie: Controllo dei processi Gestione dei file Gestione dei dispositivi Gestione delle informazioni Comunicazioni Operating System Concepts – 8th Edition 2.23 Silberschatz, Galvin and Gagne ©2009 Categorie di chiamate di sistema - 2 Controllo dei processi Creazione e arresto di un processo (fork, exit) Caricamento ed esecuzione (load, exec) Esame ed impostazione degli attributi di un processo (get/set process attributes ) Attesa per il tempo indicato o fino alla segnalazione di un evento (wait) Assegnazione e rilascio di memoria Terminazione (normale e anormale - end, abort) Operating System Concepts – 8th Edition 2.24 Silberschatz, Galvin and Gagne ©2009 Categorie di chiamate di sistema - 2 Gestione dei file Creazione e cancellazione di file (create, delete) Apertura e chiusura di file (open, close) Lettura, scrittura e posizionamento (read, write, reposition) Esame ed impostazione degli attributi di un file (get/set file attribute) Gestione dei dispositivi di I/O Richiesta e rilascio di un dispositivo (request, release) Lettura, scrittura e posizionamento Esame ed impostazione degli attributi di un dispositivo (ioctl) Operating System Concepts – 8th Edition 2.27 Silberschatz, Galvin and Gagne ©2009 Categorie di chiamate di sistema - 3 Gestione delle informazioni Esame ed impostazione dell’ora e della data (time, date) Esame ed impostazione dei dati del sistema (ver) Esame ed impostazione degli attributi dei processi, file e dispositivi (getpid) Comunicazione Creazione e chiusura di una connessione (open connection, close connection) Invio e ricezione di messaggi (send, receive) Informazioni sullo stato dei trasferimenti Inserimento ed esclusione di dispositivi remoti Condivisione della memoria (shmget) Operating System Concepts – 8th Edition 2.28 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.29 Silberschatz, Galvin and Gagne ©2009 Programmi di sistema - 1 I programmi di sistema (o di utilità) forniscono un ambiente conveniente per lo sviluppo e l’esecuzione di programmi Gestione dei file Informazioni di stato Modifica dei file Ambienti d’ausilio alla programmazione Caricamento ed esecuzione dei programmi Comunicazioni La maggior parte degli utenti normalmente ha una visione del sistema operativo attraverso i programmi di sistema (o meglio le applicazioni) più che attraverso le chiamate di sistema CLI vs GUI Ma ogni applicazione utilizza in fondo sempre le stesse chiamate di sistema Operating System Concepts – 8th Edition 2.30 Silberschatz, Galvin and Gagne ©2009 Programmi di sistema - 2 Gestione di file Per creare, cancellare, copiare, rinominare, stampare e, genericamente, gestire le operazioni su file e directory Informazioni di stato Per ottenere dal sistema informazioni tipo data, spazio di memoria disponibile, spazio disco, numero di utenti abilitati Per ottenere informazioni sulle statistiche di utilizzo del sistema di calcolo (prestazioni, logging, etc.) e per operazioni di debugging Per ottenere informazioni sulla configurazione del sistema Operating System Concepts – 8th Edition 2.31 Silberschatz, Galvin and Gagne ©2009 Programmi di sistema - 3 Modifica di file Editori di testo, per creare e modificare file Comandi speciali per cercare informazioni all’interno di file o effettuare trasformazioni sul testo Supporto a linguaggi di programmazione Assembler, compilatori e interpreti Caricamento ed esecuzione di programmi Loader, linker, debugger per linguaggio macchina e linguaggi di alto livello Comunicazioni Per creare connessioni virtuali tra processi, utenti e sistemi di elaborazione Permettono agli utenti lo scambio di messaggi video e via email, la navigazione in Internet, il login remoto ed il trasferimento di file Operating System Concepts – 8th Edition 2.32 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.34 Silberschatz, Galvin and Gagne ©2009 Progettazione del sistema operativo Non esiste un metodo unico per la progettazione e la realizzazione di Sistema Operativo, ma alcuni approcci si sono dimostrati efficaci La struttura interna dei diversi SO può variare notevolmente… …in dipendenza dall’hardware …e dallo scopo del sistema operativo Normalmente si parte definendo gli obiettivi e le specifiche. Gli obiettivi possono essere Utente – il SO deve essere di semplice utilizzo, facile da imparare, affidabile, sicuro e veloce Di sistema – il SO deve essere semplice da progettare, facile da realizzare e manutenere, flessibile, affidabile, error-free ed efficiente Operating System Concepts – 8th Edition 2.35 Silberschatz, Galvin and Gagne ©2009 Meccanismi e politiche Importanti principi da tenere separati: Politiche: Cosa Quali sono i compiti e i servizi che il SO dovrà svolgere/fornire? Meccanismi: Come Come realizzare i compiti e i servizi? I meccanismi determinano “come realizzare qualcosa”, le politiche definiscono “il qualcosa” da realizzare La separazione fra politica e meccanismi garantisce la massima flessibilità se le decisioni politiche subiscono cambiamenti nel corso del tempo Operating System Concepts – 8th Edition 2.36 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.37 Silberschatz, Galvin and Gagne ©2009 Struttura del Sistema Operativo Un Sistema Operativo può essere progettato strutturandolo in diversi modi, tra i più comuni abbiamo Struttura semplice Metodo stratificato Microkernel Struttura modulare Operating System Concepts – 8th Edition 2.38 Silberschatz, Galvin and Gagne ©2009 Struttura semplice I primi sistemi operativi erano limitati dal punto di vista dell’hardware Ad esempio i microprocessori 8086 non avevano la modalità kernel quindi gli utenti potevano facilmente mettere in crisi il sistema o bloccare il sistema Lo scopo principale era quello di fornire quante più funzioni possibili nel modo più semplice e diretto cercando di mantenere la complessità del sistema al minimo Il concetto di system call era molto limitato e molte operazioni erano svolte accedendo direttamente all’hardware Operating System Concepts – 8th Edition 2.39 Silberschatz, Galvin and Gagne ©2009 MS-DOS Il Sistema Operativo MS DOS fu progettato per fornire il massimo delle funzionalità nel minor spazio possibile Monoutente e monotask Non era diviso in moduli Le interfacce e i livelli di funzionalità non erano ben separate Operating System Concepts – 8th Edition 2.40 Silberschatz, Galvin and Gagne ©2009 UNIX Le prime versioni di UNIX erano limitate dall’hardware, questo implicava una struttura scarsamente stratificata UNIX consisteva due parti separati: I programmi di sistema Il kernel Consisteva di tutti quello al di sotto delle chiamate di sistema e sopra lo strato fisico Forniva i servizi per il file system, lo scheduling della CPU, gestione della memoria, etc… Operating System Concepts – 8th Edition 2.41 Silberschatz, Galvin and Gagne ©2009 Traditional UNIX System Structure Operating System Concepts – 8th Edition 2.42 Silberschatz, Galvin and Gagne ©2009 Approccio stratificato - 1 Il SO è suddiviso in un certo numero di strati (layer), ciascuno costruito sopra gli strati inferiori Lo strato più basso (strato 0) è l’hardware, il più alto (strato N) è l’interfaccia utente L’architettura degli strati è tale che ciascuno strato impiega esclusivamente funzioni (operazioni) e servizi di strati di livello inferiore Incapsulamento delle informazioni Operating System Concepts – 8th Edition 2.43 Silberschatz, Galvin and Gagne ©2009 Approccio stratificato - 2 Vantaggio Semplicità di realizzazione e messa a punto (che viene realizzata strato per strato) Svantaggi Difficoltà nella definizione appropriata dei diversi strati, poiché ogni strato può sfruttare esclusivamente le funzionalità degli strati su cui poggia Tempi lunghi di attraversamento degli strati (passaggio di dati) per portare a termine l’esecuzione di una system call Operating System Concepts – 8th Edition 2.44 Silberschatz, Galvin and Gagne ©2009 Microkernel System Structure Nella struttura a microkernel molte funzioni sono tirate fuori dal kernel Offre i servizi minimi di gestione dei processi, della memoria e di comunicazione La comunicazione avviene attraverso scambio di messaggi fornito da moduli di comunicazione Vantaggi: Estendibile: i nuovi servizi si aggiungono allo spazio utente Facilità di modifica del kernel Sistema più facile da portare su nuove architetture Maggiore affidabilità e sicurezza Se un servizio e compromesso lo sarà all’interno dello spazio utente quindi il sistema continua funzionare Svantaggi Cali di prestazioni indotti dal sovraccarico della comunicazione Operating System Concepts – 8th Edition 2.45 Silberschatz, Galvin and Gagne ©2009 Struttura di Mac OS X Il microkernel Mach gestisce la memoria, le chiamate di procedura remote (RPC), la comunicazione fra processi (IPC) e lo scheduling dei thread Il kernel BSD mette a disposizione una CLI, i servizi legati al file system e alla comunicazione e la API POSIX Operating System Concepts – 8th Edition 2.46 Silberschatz, Galvin and Gagne ©2009 Struttura modulare I Sistemi Operativi moderni utilizzano un approccio ibrido implementando dei moduli del kernel Si utilizza un approccio orientato agli oggetti Ogni modulo comunica con un altro modulo attraverso una interfaccia nota Ogni modulo è caricato dal kernel quando è necessario In definitiva, simile al metodo stratificato ma più flessibile Operating System Concepts – 8th Edition 2.47 Silberschatz, Galvin and Gagne ©2009 Approccio modulare di Solaris Operating System Concepts – 8th Edition 2.48 Silberschatz, Galvin and Gagne ©2009 Outline Servizi di un Sistema Operativo Interfaccia utente del Sistema Operativo Interfaccia al programmatore System calls Tipi di System calls Programmi di sistema Progettazione e realizzazione di un Sistema Operativo Struttura di un Sistema Operativo Macchine Virtuali Operating System Concepts – 8th Edition 2.49 Silberschatz, Galvin and Gagne ©2009 Macchine virtuali - 1 La macchina virtuale porta l’approccio stratificato alle sue estreme conseguenze logiche Sia l’hardware che il sistema operativo (ospite) vengono trattati uniformemente come hardware Una macchina virtuale realizza un’interfaccia identica alla macchina fisica sottostante: ogni processo ospite può usufruire di una copia virtuale del calcolatore sottostante Solitamente il processo ospite è un sistema operativo Le risorse del computer fisico vengono condivise in modo che il SO crei l’illusione dell’esistenza di processi multipli, ciascuno in esecuzione sul proprio processore, con la propria memoria (virtuale) Operating System Concepts – 8th Edition 2.50 Silberschatz, Galvin and Gagne ©2009 Macchine virtuali - 2 (a) senza virtual machine (b) virtual machine Operating System Concepts – 8th Edition 2.51 Silberschatz, Galvin and Gagne ©2009 Macchine virtuali - 3 Il concetto di macchina virtuale fornisce una protezione completa delle risorse di sistema (hardware e SO ospitante), dato che ciascuna macchina virtuale è isolata da tutte le altre Questo isolamento, tuttavia, non permette una condivisione diretta delle risorse Per la condivisione di risorse… Condivisione di un volume del file system Le macchine virtuali sono adoperate per lo sviluppo e la ricerca Lo sviluppo può essere fatto su una macchina virtuale piuttosto che su una reale in modo tale da non interferire con le normali operazioni del sistema Operating System Concepts – 8th Edition 2.52 Silberschatz, Galvin and Gagne ©2009 Architettura VMware Operating System Concepts – 8th Edition 2.53 Silberschatz, Galvin and Gagne ©2009 Virtual box Operating System Concepts – 8th Edition 2.54 Silberschatz, Galvin and Gagne ©2009 Java Virtual machine - 1 Definita: Application virtual machine Il linguaggio di programmazione Java (1995) è un linguaggio orientato agli oggetti che, oltre a fornire una vasta libreria API, permette la definizione di una macchina virtuale Gli oggetti si specificano con il costrutto class e un programma consiste di una o più classi Per ognuna, il compilatore produce un file (.class) contenente il bytecode Il linguaggio macchina della Java Virtual Machine (JVM), indipendente dall’hardware sottostante e che viene eseguito sulla macchina virtuale I bytecode sono controllati per verificare la presenza di istruzioni che possono compromettere la sicurezza della macchina Operating System Concepts – 8th Edition 2.55 Silberschatz, Galvin and Gagne ©2009 Java Virtual machine - 2 La JVM rende possibile lo sviluppo di programmi indipendenti dall’architettura e offre ai programmi scritti in Java un’astrazione uniforme del sistema I programmi Java sono però più lenti dei corrispondenti programmi scritti in C (sono normalmente interpretati) JVM disponibili per Windows, Linux, Mac OS X e incorporate su vari browser, che a loro volta sono eseguiti su più piattaforme Operating System Concepts – 8th Edition 2.56 Silberschatz, Galvin and Gagne ©2009 Java Virtual machine - 3 Operating System Concepts – 8th Edition 2.57 Silberschatz, Galvin and Gagne ©2009 Link interessanti VMware player: http://www.vmware.com/download/player/download.html Immagini di macchine virtuali VMware : http://www.vmware.com/appliances/directory/ VirtualBox http://virtualbox.softonic.it/ Immagini di macchine virtuali VirtualBox: http://virtualboxes.org/ Java Virtual Machine http://java.sun.com Operating System Concepts – 8th Edition 2.58 Silberschatz, Galvin and Gagne ©2009