CAPITOLO 5 - Sistemi Operativi Moderni PRESENTAZIONE DI INSIEME Vedremo ora come si è evoluta nel tempo la struttura di un sistema operativo, per passare dalle vecchie strutture di tipo normalmente modulari, ai sistemi operativi moderni che sono multiprocessore e risultano essere sistemi idonei per l’utilizzo di reti. MODERNI SISTEMI OPERATIVI Architettura microkernel Multithread Multiprocessing simmetrico Sistemi operativi distribuiti Architetture orientate agli oggetti Questa slide riporta le principali caratteristiche di un sistema operativo moderno. L’architettura è a microkernel. I concetti di base dei sistemi operativi moderni sono i processi ed i thread. Normalmente un sistema operativo moderno si appoggia anche su più processori le cui funzioni possono essere interscambiate, di qui il nome di Multiprocessing Simmetrico, inoltre, questi sistemi operativi sono in grado di gestire più sistemi di calcolo e quindi possono essere considerati distribuiti tra i diversi computer. L’architettura di un moderno sistema operativo è fatta non soltanto in maniera modulare ma anche orientata agli oggetti, con tutte le caratteristiche degli oggetti. SISTEMI OPERATIVI MODERNI In questa figura è rappresentata l’architettura di un moderno sistema operativo. Vediamo che in genere la macchina è una macchina a multiprocessore, in questa figura ci sono tre processori all’interno della macchina. Normalmente ci sono grandi memorie di massa di vari giga (GB)e qualche volta di terabyte (TB), collegamenti ad alta velocità ossia via internet, per accessi al World Wide Web e supporti alla multimedialità. VECCHI SISTEMI OPERATIVI Un solo Kernel monolitico che provvede a: Schedulazione gestione della memoria controllo drive dei dispositivi gestione del file system funzioni di rete … Nei vecchi sistemi operativi c’era un unico Kernel monolitico. Esso provvede non solo alla schedulazione, per esempio, dei vari processi sul processore o anche delle varie risorse ai vari processi, ma anche alla gestione della memoria, al controllo dei drive dei dispositivi, alla gestione del file system ed alle funzioni di rete. ARCHITETTURA MICROKERNEL Kernel essenziale: - gestione comunicazione fra processi (IPC) - gestione degli spazi di indirizzamento - schedulazione di base Processi server: - altri servizi - operano in modalità utente Vantaggi - favorisce i sistemi distribuiti Le architetture dei moderni sistemi operativi sono microkernel, dove nel kernel non ci sono come nei vecchi sistemi operativi tutte le routine o tutti i moduli relativi a tutti i servizi possibili e immaginabili, ma ci sono soltanto poche funzioni elementari di scambio che passano attraverso il microkernel. Il microkernel, in realtà, si occupa di poche funzioni elementari quale la comunicazione tra processi, ossia Inter Process Communication, la gestione degli spazi di indirizzamento e la schedulazione di base. I vari comandi di un vecchio sistema operativo in un moderno sistema operativo vengono visti come servizi forniti da server, che operano in modalità utente infatti l’architettura è quella ClientServer. Il vantaggio più grosso è quello di favorire i sistemi distribuiti. MULTITHREAD Se in un vecchio sistema operativo erano i processi che avanzavano in concorrenza all’interno del sistema, in un moderno sistema operativo sono le varie componenti di processo, i thread, che possono avanzare in concorrenza, o in competizione all’interno del sistema. Cosa è un Thread? Se un processo è un Per schedulazione e allocazione thread=processo insieme di istruzioni eseguite attraverso i cicli di fetch ed execute una dopo l’altro facendo riferimento a diverse risorse che possono essere la CPU, la memoria o il disco, il thread è un insieme di istruzioni che non ha bisogno di risorse, tranne ovviamente la memoria principale a cui si accede direttamente e il processore su cui è in esecuzione. In sostanza quando ad un processo vengono tolte le risorse, rimangono i thread, di conseguenza i thread più le risorse formano il processo. Ogni volta che si è di fronte a un processo che non ha bisogno di risorse si è di fronte a un thread puro. Il thread da questo punto di vista può essere considerato come un processo più elementare, più semplice. SYMMETRIC MULTIPROCESSING Unico computer con molti processori I processori condividono le stesse risorse Tutti i processori possono effettuare le stesse funzioni Vantaggi: - prestazioni elevate: parallelismo - disponibilità: simmetria - crescita incrementale - scalabilità SISTEMI OPERATIVI DISTRIBUITI Diversi computer si comportano come un unico sistema (Cluster) Condivisione delle risorse delle diverse macchine Sistema operativo distribuito gestisce l’intero sistema Il Symmetric Multiprocessing si ha quando all’interno dello stesso computer ci sono molti processori che condividono le stesse risorse, cioè la stessa memoria principale e le stesse unità disco. Tutti i processori possono effettuare le stesse funzioni sostituendosi nella esecuzione e alternando processi di sistema a processi utente. I vantaggi del multiprocessing simmetrico sono quelli di consentire elevate prestazioni per effetto del parallelismo, di avere la disponibilità di simmetria potendo scambiare la funzioni di un processore con quelle degli altri, di avere la possibilità di crescita incrementale nel senso che le prestazioni possono essere aumentate, incrementando il numero di processori nel sistema di calcolo, e di avere la scalabilità, che è una proprietà per cui anche se viene meno un processore gli altri continuano a sopperire alle sue funzionalità. Un altro tipo di sistema è il multicomputer, noto anche come cluster. Diversi computer si comportano come un unico sistema e condividono le risorse delle diverse macchine. Il sistema operativo di un cluster è un sistema distribuito che gestisce l’intero sistema. PROGETTAZIONE ORIENTATA AGLI OGGETTI Disciplina il processo di espansione modulare dei kernel Consente modifiche del sistema operativo senza distruggere l’integrità del sistema Facilita la costruzione di strumenti e funzionalità distribuite La chiave di soluzione dei vari problemi che hanno portato alla realizzazione dei moderni sistemi operativi è la progettazione orientata agli oggetti. La progettazione orientata agli oggetti disciplina il processo di espansione modulare dei kernel, consente di modificare il sistema operativo senza distruggere l’integrità del sistema e facilità la costruzione di strumenti e funzionalità distribuite aggiuntive. Da DOS a WINDOWS NT (Microsoft) Vediamo la struttura di un moderno sistema operativo quale appunto Windows NT. E’ riportata una breve storia dell’evoluzione dalle macchine MS DOS del 1981 al Windows NT 5.0 del 1998. Nel 1981 l’MS DOS aveva bisogno di soli 8 K di memoria, girava su un processore 8086 e conteneva soltanto 4000 linee di codice Assembler. Nel 1983 fu prodotto il PC XT, con versione MS DOS 2.0. Richiedeva 24 K di memoria e fu introdotto il supporto all’Hard Disk nonché la gerarchia directory. Nel 1984 si passò dal PC XT al PC AT, con versione DOS 3.0 e 3.1. La memoria necessaria per ospitare il sistema operativo era a 36 K e il processore utilizzato era 80286. Fu introdotto per la prima volta lo swapping e quindi la necessità di utilizzare hard disk, o meglio, si progettarono supporti di disco esterni alla memoria principale. Nel 1987 il computer PS/2 introdusse il DOS 3.3 con una estensione della memoria di 46 K, ossia una richiesta di memoria di 46 K per contenere il sistema operativo. Il processore era l’80386 e supportava una nuova architettura. Nel 1990 uscì WIN 3.0, 3.1 e NT 3.1 che girava sull’80486 con una Graphical User Interface. Nel 1995 venne fuori WIN 95 capeggiato da NT 4.0 con il processore Pentium e con un sistema Multitasking, a singolo utente, con NT Workstation Server. Nel 1998 venne fuori Win NT 5.0 con l’Active Directory e l’elaborazione distribuita. Differenze fra WIN NT4 WORKSTATION e WIN NT SERVER Questa slide mostra le differenze fra Workstation e Server di Win NT4. EVOLUZIONE DEI SISTEMI OPERATIVI Vediamo allora meglio nel seguito, quali sono le innovazioni introdotte dai moderni sistemi operativi, che da un punto di vista esterno si possono riassumere nella disponibilità di macchine multiprocessore e nella possibilità di utilizzare reti di computer (web). INTRODUZIONE AL MULTITASKING Fattori che hanno stimolato l’introduzione del multitasking: Possibilità di sviluppare applicazioni complesse e correlate Crescita dell’elaborazione client-server L’introduzione del multitasking nei moderni sistemi operativi ha stimolato lo sviluppo di applicazioni complesse, correlate e distinte fra di loro, e la crescita dell’elaborazione Client-Server. MUTITASKING A SINGOLO UTENTE (1) La slide è una rappresentazione delle diverse azioni correlate tra loro e in esecuzione contemporanea sullo stesso calcolatore. Infatti sullo schermo sono aperte una finestra di un applicativo per l’elaboratore di testi, una finestra del World Wide Web con il relativo indirizzo, una finestra di un applicativo per le presentazioni e infine c’è una finestra del prompt di MS DOS. Tutte queste applicazioni contemporaneamente sono presenti nelle varie finestre aperte sul monitor. E’ l’esempio tipico di azioni di multitasking. MUTITASKING A SINGOLO UTENTE (2) Il multitasking non solo permette di utilizzare diversi programmi applicativi, come si è visto nel caso precedente, ma permette anche di utilizzare una quantità di servizi diversi offerti all’interno dello stesso applicativo. In questo caso, per esempio, si vede come una slide in fase di preparazione possa essere modificata utilizzando varie utility dell’applicativo stesso. In basso è visibile la barra per la definizione dei colori, la definizione di sfondo o di carattere, a sinistra è visibile la barra che permette di selezionare, cancellare, ingrandire delle parti, e di utilizzare un carattere diverso in grassetto e così via. ARCHITUTTERA DI WINDOWS NT Vediamo adesso quali sono le caratteristiche principali del sistema operativo Windows NT che gira e fa funzionare molte macchine. NT Executive è una parte di Windows NT. NT Executive include tutto il software di sistema. Windows NT, invece, contiene non solo il software di sistema ma anche tutti gli applicativi. Dal punto di vista della macchina il software di sistema è eseguito in modo kernel. Gli applicativi sono relativi agli utenti e avanzano nel sistema in modo utente, cioè con un livello di priorità più basso. ARCHITETTURA DI WINDOWS NT 4.0 Questa slide presenta una panoramica del sistema operativo Windows NT versione 4.0. In alto nell'immagine ci sono più sottosistemi che vengono supportati dalla macchina. Al centro vediamo il sottosistema Win 32, a sinistra e a destra rispettivamente i sottosistemi POSIX, OS/2 e i sottosistemi di sicurezza. Appoggiati a Win 32 ci sono NTVDM, MS-DOS e Win 16. Questi sottosistemi sono collegati al sistema vero e proprio, cioè al nucleo di Windows NT, chiamato Windows NT Executive. I sottosistemi scambiano messaggi con Windows NT Executive. Dalla parte dell’hardware non è specificato quale hardware stia ospitando Windows NT, potrebbe esserci per esempio una macchina pentium-based, un PowerPC, un'Alpha. Al centro c’è il sistema operativo vero e proprio o meglio il cuore del sistema operativo che è Windows NT Executive, che mette a disposizione dei sottosistemi i propri servizi di sistema di interprete ed execute. La HAL, strato di astrazione dell’hardware, è l'interfaccia con l'hardware. HAL è fatto in modo tale da offrire la possibilità di utilizzare il sistema operativo con diverse piattaforme hardware. Windows NT ha una struttura a microkernel che permette al sistema operativo di gestire il tutto attraverso l’uso di pochi comandi kernel, quali ad esempio l’interscambio di messaggi tra processi o la schedulazione di base. Intorno ci sono vari moduli, che potremmo chiamare oggetti, ciascuno con una specifica funzione nel sistema. Si vede che c’è il gestore degli oggetti, che serve a poter gestire i vari moduli, il gestore della sicurezza negli accessi, il gestore dei processi, ossia dell’interscambio dei messaggi tra processi e l’interscambio dei processi stessi attraverso il microkernel, il gestore della memoria virtuale che si occupa di individuare quali contenuti della memoria centrale devono essere spostati su disco e viceversa quale parte della memoria su disco deve essere spostata nella memoria centrale. C’è, inoltre, il gestore delle finestre che gestisce le diverse finestre mostrate sullo schermo, c’è l’insieme dei driver di tutti i dispositivi periferici quali per esempio quelli grafici. Sulla sinistra compaiono i gestori dell'I/O e in particolare i gestori della cache memory, dei driver del file system che servono ad individuare le posizioni dei file su disco e poi invocando altri oggetti o altri moduli del sistema operativo a trasferirli. Ci sono anche i driver di rete che danno la possibilità al sistema di collegarsi alla rete locale o anche alle varie reti a cui si ha accesso. La comunicazione tra tutti questi oggetti avviene in una logica in cui ognuno di questi fornisce dei servizi, il modulo che ha necessità fa delle richieste, che possono essere considerate dal modulo Client al modulo server. L’architettura di Windows NT è dunque un’architettura Client-Server. NT EXECUTIVE Architettura microkernel modificata Altamente modulare Ciascuna componente della macchina è gestito da un componente del sistema operativo Facile portabilità STRUTTURA STRATIFICATA DI NT EXECUTIVE Strato di astrazione dell’hardware (HAL) Microkernel Servizi Executive - gestore I/O - gestore oggetti - gestore sicurezza Le caratteristiche principali di NT Executive sono di seguito riportate. L’architettura è microkernel e altamente modulare. Ciascuna componente della macchina è gestita da un componente del sistema operativo. Il sistema operativo Windows NT, poiché include il sottosistema di astrazione dell’hardware, presenta una facile portabilità. Verrà ora descritta meglio la struttura stratificata di NT Executive. Esiste, come si è già visto, lo strato di astrazione dell’hardware, il microkernel, i servizi Executive che sono: il gestore degli I/O, il gestore degli oggetti, il gestore della sicurezza, il gestore dei processi, il gestore delle chiamate procedure locali, il gestore della - gestore processi - gestore chiamate procedure locali - gestore memoria virtuale - gestore moduli grafici e finestre Servizi di sistema memoria virtuale, il gestore dei moduli grafici e delle finestre, ed infine i servizi di sistema. SOTTOSISTEMI DI AMBIENTE Sono quelle parti di Windows che interagiscono con l’utente finale Supportano applicativi scritti per diversi sistemi operativi Ciascun sottosistema è dotato di interfaccia utente e fornisce l’interfaccia di programmazione per il sistema operativo associato Ciascun sottosistema è un processo separato con uno spazio di indirizzamento protetto SOTTOSISTEMI SUPPORTATI MS-DOS NT Virtual DOS Machine (NTVDM) Win16 NTVDM Sottosistema OS/2 Sottosistema POSIX Sottosistema Win32 Riassumendo: CARATTERISTICHE DI NT Ha una struttura modulare È estremamente flessibile È eseguibile su diverse piattaforme hardware Separa il software applicativo da quello di sistema Supporta applicazioni scritte per diversi sistemi operativi MODELLO CLIENT SERVER Tutto il sistema operativo Windows NT è strutturato secondo il modello client-server sottosistemi-moduli di executive-(clientserver) thread-moduli di executive NT(client-server)sottosistemi Vantaggi semplicità nella costruzione di nuove API comunicazione uniforme affidabilità/perché ogni modulo di exec. è protetto apertura alla elaborazione distribuita THREAD & SMP in NT Le routine del sistema operativo possono essere eseguite su ogni processore disponibile Routine differenti possono essere eseguite contemporaneamente È possibile la condivisione di dati e di risorse È possibile la comunicazione fra processi, anche se distribuiti Il sistema operativo Windows NT supporta diversi sottosistemi di ambiente. Sono quelle parti di Windows NT che interagiscono con l’utente finale. Ovviamente supportano applicativi scritti per diversi sistemi operativi. Ciascun sottosistema è dotato di interfaccia utente e fornisce l’interfaccia di programmazione per il sistema operativo associato. Ciascun sottosistema è un processo separato con uno spazio di indirizzamento protetto. La slide mostra i sottosistemi supportati da Windows NT. Sono MSDOS e Win16 entrambi per NT Virtual Dos Machine,i sottosistemi OS/2 e POSIX, ed infine il sottosistema centrale Win32. Le principali caratteristiche di Windows NT sono di seguito riassunte. Ha una struttura modulare, è estremamente flessibile, è eseguibile su diverse piattaforme hardware, separa il software applicativo da quello di sistema e supporta applicazioni scritte per diversi sistemi operativi. La cosa più importante è che il sistema operativo Windows NT è basato sul modello client- server. Si vedrà in dettaglio il modello Client-Server su cui si fonda l’architettura di Windows NT. Si nota che ci sono i vari sottosistemi con i moduli di executive sottostanti e che i moduli di executive danno la possibilità di eseguire i diversi processi, attraverso thread. I vantaggi di questa architettura Client-Server sono dati dalla semplicità nella costruzione delle nuove API (Application Programming Interface), dalla possibilità di consentire una comunicazione uniforme e di avere una buona affidabilità, perché ogni modulo di executive è protetto e ciò porta ad un’apertura verso l’elaborazione distribuita. Windows NT dà la possibilità di organizzare il sistema su in insieme di processori affidando a ciascuno, a seconda della disponibilità, la possibilità di eseguire parti diverse dei processi in esecuzione. Sono appunto i thread, ossia le componenti dei vari processi. Ne consegue che, in presenza di più processori, routine differenti possono essere eseguite contemporaneamente, così è possibile la condivisione di dati e di risorse. Ciò permette la comunicazione fra processi, anche se gli stessi sono distribuiti.