Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI STRUTTURE DEI SISTEMI OPERATIVI SERVIZI DI UN SISTEMA OPERATIVO
Panoramica dei servizi del sistema operativo Giorgio Giacinto 2009 Sistemi Operativi 3 INTERFACCE UTENTE
Interfaccia utente L nterprete dei comandi! Il sistema operativo riceve dei comandi da eseguire tramite stringhe di testo! I comandi possono! far parte dell interprete dei comandi! essere dei programmi separati! Nei sistemi Unix/Linux è chiamata shell! diversi tipi di shell (C-, bourne, k-, ecc.)! Gli amministratori di sistema interagiscono tramite shell Giorgio Giacinto 2009 Sistemi Operativi 5 Interfacce utente Interfacce grafiche! Nate negli anni 70 dalle ricerche nei laboratori Xerox di Palo Alto! Primi utilizzi: Xerox Alto e Apple Macintosh! Utilizzano metafore (scrivania ) e icone per rendere intuitivo l uso del computer da parte di utenti non esperti! Diverse iterfacce! Macintosh! Windows! KDE, Gnome, ecc. nel mondo Linux Giorgio Giacinto 2009 Sistemi Operativi 6
CHIAMATE DI SISTEMA Cos è una chiamata di sistema?! Il sistema operativo mette a disposizione i suoi servizi ai programmi utente attraverso codice in C o C++! I programmatori effettuano chiamate al sistema attraverso le API (Application Programming Interface)! La sintassi delle API (POSIX, Win32) sono standardizzate! La richiesta di un servizio al sistema operativo tramite API può coinvolgere più di una chiamata al sistema Giorgio Giacinto 2009 Sistemi Operativi 8
Chiamate di sistema Un esempio Copia di dati da un file a un altro Giorgio Giacinto 2009 Sistemi Operativi 9 API Un esempio! ReadFile() - API Win32! file - file da cui leggere! buffer - buffer da cui leggere i dati provenienti dai file! bytestoread - numero di byte da trasferire dal file al buffer! bytesread - numero di byte effettivamente letti! ovl - indica l uso dello spooling (overlapped I/O) Giorgio Giacinto 2009 Sistemi Operativi 10
Chiamata di sistema open() Giorgio Giacinto 2009 Sistemi Operativi 11 Libreria standard del linguaggio C - write() Giorgio Giacinto 2009 Sistemi Operativi 12
Passaggio di parametri in forma di tabella Giorgio Giacinto 2009 Sistemi Operativi 13 Categorie di chiamate di sistema! Controllo dei processi! Gestione dei file! Gestione dei dispositivi! Gestione delle impostazioni di base! Comunicazione Giorgio Giacinto 2009 Sistemi Operativi 14
Esempi chiamate di sistema UNIX - Win32 Controllo dei processi Gestione dei file Gestione dei dispositivi Gestione delle informazioni Comunicazione Protezione Windows CreateProcess() ExitProcess() WaitForSIngleObject() CreateFile() ReadFile() WriteFile() CloseHandle() SetConsoleMode() ReadConsole() WriteConsole() GetCurrentProcessID() SetTimer() Sleep() CreatePipe() CreateFileMapping() MapViewOfFIle() SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorGroup() UNIX fork() exit() wait() open() read() write() close() ioctl() read() write() getpid() alarm() sleep() pipe() shmget() nmap() chmod() umask() chown() Giorgio Giacinto 2009 Sistemi Operativi 15 Esecuzione nell MS-DOS (a) All!avviamento del sistema (b) Durante l!esecuzione di un programma Giorgio Giacinto 2009 Sistemi Operativi 16
Esecuzione di più programmi nel sistema operativo FreeBSD Giorgio Giacinto 2009 Sistemi Operativi 17 PROGRAMMI DI SISTEMA
Programmi di sistema! Programmi accessori e programmi di utilità di sistema! Gestione, modifica, backup di file! Informazioni di stato! Ambienti di supporto alla programmazione (compilatori, debugger, ecc.)! Altri programmi inclusi nel sistema, ma non parte del sistema in senso stretto! Web browser! Office automation! Lettori multimediali Giorgio Giacinto 2009 Sistemi Operativi 19 PROGETTAZIONE E REALIZZAZIONE DI SISTEMI OPERATIVI
Aspetti della progettazione e realizzazione! Scopi! Campo di utilizzo del sistema e categorie di utenti! Criteri (policy) e meccanismi! Cosa fare e come farlo! Realizzazione! Linguaggi di alto livello e linguaggio assembly Giorgio Giacinto 2009 Sistemi Operativi 21 STRUTTURA DEI SISTEMI OPERATIVI
Struttura semplice! E la struttura tipica dei primi sistemi operativi! Progettati ad hoc per utilizzare in modo più agevole i sistemi di calcolo! Riflettono le limitazioni dell hardware Es. MS-DOS e prime versioni UNIX! Caratteristiche salienti! Scarsa modularità! Progettato in modo monolitico! Possibilità di accesso diretto a I/O dei programmi utente Giorgio Giacinto 2009 Sistemi Operativi 23 Struttura semplice MS-DOS Giorgio Giacinto 2009 Sistemi Operativi 24
Struttura semplice UNIX Giorgio Giacinto 2009 Sistemi Operativi 25 Struttura a strati! Necessario supporto hardware! Suddivisione in moduli! Il sistema operativo può nascondere gran parte delle funzionalità di basso livello! Maggior sicurezza del sistema da usi impropri! Aggiornamento e aggiunta di funzionalità più agevole! I programmatori interagiscono solo con le funzioni esposte ad alto livello (API) Giorgio Giacinto 2009 Sistemi Operativi 26
Struttura a strati Modello a buccia di cipolla Problemi di progettazione: - numero degli strati - funzionalità presenti in ciascuno strato - efficienza del sistema Giorgio Giacinto 2009 Sistemi Operativi 27 Microkernel Giorgio Giacinto 2009 Sistemi Operativi 28
Microkernel! Anni 80: i kernel dei sistemi operativi erano di dimensioni elevate! Microkernel: individuare le funzioni essenziali, implementando il resto come processi utente Es. sistema Mach (Carnegie Mellon)! I componenti esterni al microkernel sono implementati come processi server! Interagiscono fra di loro tramite scambio di messaggi attraverso il microkernel! possibile fonte di rallentamenti del sistema Giorgio Giacinto 2009 Sistemi Operativi 29 Struttura modulare! Modalità di progettazione mutuata dalla programmazione orientata agli oggetti! kernel con componenti fondamentali! funzionalità integrative realizzati come moduli caricabili dinamicamente! ad es., supporto per file system diversi! i moduli possono comunicare fra loro senza l intervento del kernel! Aspetti positivi della struttura a strati e a microkernel Giorgio Giacinto 2009 Sistemi Operativi 30
Moduli caricabili di Solaris Giorgio Giacinto 2009 Sistemi Operativi 31 Struttura di Mac OS X Giorgio Giacinto 2009 Sistemi Operativi 32
VIRTUALIZZAZIONE Macchine virtuali! Evoluzione della struttura a strati! Uno strato implementa le funzionalità della nuda architettura hardware! Diversi sistemi operativi possono essere eseguiti su ciascuna macchina virtuale! Necessari meccanismi di base per gestire l hardware reale: CPU, gerarchia di memoria, I/O! Primi esempi in sistemi IBM negli anni 70 Giorgio Giacinto 2009 Sistemi Operativi 34
Virtualizzazione (a) Semplice (b) Macchina virtuale Giorgio Giacinto 2009 Sistemi Operativi 35 Vantaggi virtualizzazione! Ambienti enterprise! Realizzare ambienti separati logicamente su una stessa infrastruttura hardware! Riduzione dei costi rispetto ad avere servizi diversi su macchine dedicate (consolidamento)! Miglioramento protezione rispetto ad avere servizi diversi su una stessa macchina! Consente di poter eseguire sistemi operativi diversi! Utenti privati, professionisti, PMI! Poter eseguire diversi sistemi operativi su una stessa infrastruttura hardware Giorgio Giacinto 2009 Sistemi Operativi 36
Architettura Solaris 10 Esempio con due contenitori Paravirtualizzazione Non viene virtualizzato lo strato hardware, ma il sistema operativo. Ciascun processo viene eseguito in un ambiente separato Giorgio Giacinto 2009 Sistemi Operativi 37 Architettura VMware Giorgio Giacinto 2009 Sistemi Operativi 38
Problematiche realizzative! L hardware reale esegue le macchine virtuali in modalità utente! Le macchine virtuali hanno sia la modalità utente sia la modalità kernel! Il sistema di gestione delle macchine virtuali utilizza la modalità kernel Virtualizzazione più efficiente se supportata da hardware Ad es., AMD, IBM Giorgio Giacinto 2009 Sistemi Operativi 39 Ambiente.NET (Microsoft) Giorgio Giacinto 2009 Sistemi Operativi 40
Macchina virtuale Java Giorgio Giacinto 2009 Sistemi Operativi 41