Evoluzione dei sistemi operativi (4) Evoluzione dei sistemi operativi (5) • Sistemi multiprogrammati • Personal computer, workstation, sistemi distribuiti ! più programmi sono caricati in memoria contemporaneamente, e l’elaborazione passa periodicamente dall’uno all’altro job 1 più elaboratori collegati in rete condividono risorse e distribuiscono potenza di calcolo disco job 3 job 2 ! partizioni di memoria sistema operativo input output spooling system © Augusto Celentano Sistemi Operativi A - 45 © Augusto Celentano Sistemi Operativi A - 46 Classificazione dei sistemi operativi Sistemi dedicati (home computer, videogiochi) • Sistemi dedicati (home computer, videogiochi) • La macchina serve un solo “utente” e svolge un solo “compito” • Sistemi batch (sistemi EDP) ! • Sistemi interattivi in time-sharing (Unix) ! • Sistemi in tempo reale (sistemi dedicati, sistemi industriali) ! funzioni base per interpretare comandi e eseguire programmi supervisori o monitor semplicità, basso livello, scarso sfruttamento del tempo macchina • Sistemi transazionali • Sistemi misti • Sistemi personali • Sistemi operativi virtuali © Augusto Celentano Sistemi Operativi A - 47 © Augusto Celentano Sistemi Operativi A - 48 Sistemi batch (sistemi EDP) Sistemi interattivi in time-sharing (Unix) • La macchina serve un “lotto” di programmi in sequenza, in modo non interattivo • La macchina serve a turno più utenti ripartendo tra essi l’utilizzo delle risorse (unità centrale, memoria, periferiche) ! ! ! ! serializzazione delle operazioni di ingresso / uscita sovrapposizione dei lavori elaborazione non assistita sfruttamento del tempo macchina ! ! ! © Augusto Celentano Sistemi Operativi A - 49 ogni utente lavora indipendentemente dagli altri, avendo l’impressione di utilizzare una macchina dedicata protezione sfruttamento delle risorse della macchina © Augusto Celentano Sistemi Operativi A - 50 Sistemi real-time Sistemi transazionali • La macchina esegue più attività sulla base di una scala di priorità, sospendendo i lavori meno urgenti a favore dei più urgenti • Permettono l’uso di programmi applicativi e l’accesso a archivi di dati salvaguardando la compiutezza delle operazioni ! ! ! protezione, tempi di risposta gestione conflitti sfruttamento delle risorse compatibilmente con le esigenze dell’ambiente esterno © Augusto Celentano Sistemi Operativi A - 51 ! ! ! gestione del traffico verso sistemi remoti gestione della concorrenza tra gli utenti gestione degli errori e ripristino della coerenza dei dati © Augusto Celentano Sistemi Operativi A - 52 Altri tipi di sistemi operativi Struttura a livelli di un sistema operativo • Sistemi misti • Un sistema operativo complesso definisce una serie di macchine virtuali, realizzate per mezzo di astrazioni sopra la macchina fisica. ! ! presentano più caratteristiche contemporaneamente, in funzione dell’utilizzo e della configurazione sistemi multi-purpose, operano in time-sharing, con meccanismi di priorità e possibilità di elaborazioni batch interfaccia utente • Sistemi personali ! file system offrono possibilità di esecuzioni multiple da parte di un unico utente gestore dell’I/O HW • Sistemi operativi virtuali ! gestore della memoria nucleo offrono all’utente la scelta di più sistemi operativi sulla stessa macchina © Augusto Celentano Sistemi Operativi A - 53 © Augusto Celentano Sistemi Operativi A - 54 Nucleo di un sistema operativo (1) Nucleo di un sistema operativo (2) • In un sistema ideale dedicato alla esecuzione di un solo programma le operazioni sono sequenziali e sincrone • La macchina è dotata di un solo processore e di una sola memoria centrale. Il nucleo ripartisce l’uso della unità centrale tra i diversi processi attraverso la gestione delle interruzioni ! ! ! tutte le operazioni (elaborazione, ingresso e uscita, controllo dell’esecuzione) sono eseguite una dopo l’altra in modo deterministico e ripetibile ogni azione viene terminata prima di passare all’azione successiva l’esito dell’elaborazione non dipende dal tempo totale di esecuzione, né dal tempo relativo di esecuzione delle singole operazioni ! ! si genera una macchina virtuale in cui ad ogni programma attivo (processo) corrisponde una unità centrale virtuale dedicata. i programmi che vengono eseguiti in tale ambiente non devono occuparsi della ripartizione dell’uso dell’unità centrale, poiché ciascuno ne utilizza una diversa (virtuale) • In un sistema reale multiprogrammato tale comportamento può essere riferito al singolo programma, ma non al sistema nel suo complesso © Augusto Celentano Sistemi Operativi A - 55 © Augusto Celentano Sistemi Operativi A - 56 Nucleo di un sistema operativo (3) memoria centrale CPU ••• CPU processo 1 ••• memoria di massa memoria centrale CPU Gestore della memoria centrale (1) • Il gestore della memoria di un sistema operativo consente di programmare riferendosi ad uno spazio di indirizzamento virtuale, indipendente dall’effettivo spazio di indirizzamento della memoria fisica. I/O memoria di massa • Si genera una macchina virtuale in cui ogni processore (virtuale) ha a disposizione una memoria privata la cui corrispondenza con la memoria fisica non è (in linea di principio) rilevante. I/O • I programmi possono essere sviluppati senza sapere la configurazione reale della memoria in cui saranno allocati processo n © Augusto Celentano Sistemi Operativi A - 57 Gestore della memoria centrale (2) CPU ••• CPU memoria centrale © Augusto Celentano Gestore delle periferiche di I/O (1) memoria di massa • Il gestore delle periferiche realizza due tipi di virtualizzazione: I/O ! memoria centrale CPU processo 1 © Augusto Celentano ••• ••• memoria centrale CPU memoria di massa Sistemi Operativi A - 58 come i due gestori precedenti, ripartisce l’utilizzo delle risorse esterne in modo che ogni processo possa vedere una periferia dedicata, in cui – non ci sono conflitti di utilizzo con altri processi o utenti – non è necessario gestire la sincronizzazione e i tempi di attesa (operazioni sincrone) I/O ! fornisce un insieme di funzioni di gestione di alto livello che, mascherando le differenze costruttive delle apparecchiature, rendono omogeneo l’utilizzo della periferia anche se questa è diversificata processo n Sistemi Operativi A - 59 © Augusto Celentano Sistemi Operativi A - 60 Gestore delle periferiche di I/O (2) memoria centrale CPU ••• memoria centrale CPU memoria di massa File system (1) • Il file system assegna alle informazioni memorizzate su una memoria di massa una organizzazione e una strutturazione riferite all’utilizzo delle informazioni e non al loro schema di memorizzazione I/O I/O ! CPU CPU memoria memoria centrale centrale memoria memoria di massa di massa I/O I/O I/O I/O ! ! CPU CPU memoria memoria centrale centrale memoria memoria di massa di massa © Augusto Celentano I/O I/O le informazioni sono raccolte in unità logiche (file) identificate da un nome, di cui si ignora la struttura fisica e l’allocazione sul supporto di memorizzazione l’accesso avviene tramite funzioni che operano sul contenuto in base alla sua organizzazione logica (stream, record) sono gestite sia la privatezza dei dati, sia i conflitti di accesso nel caso di utilizzo condiviso tra più utenti I/O I/O Sistemi Operativi A - 61 File system (2) © Augusto Celentano Sistemi Operativi A - 62 Sistemi operativi virtuali • Replicano macchine complete su cui possono girare più sistemi operativi diversi disco fisico organizzazione logica (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 63 © Augusto Celentano Sistemi Operativi A - 64 Sistemi operativi a microkernel (client-server) Sistemi distribuiti • Dividono i servizi in più processi che comunicano attraverso un nucleo semplificato • Estendono il modello client-server su una architettura distribuita attraverso lo scambio di messaggi lungo una rete (Tanenbaum, 2001) (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 65 Sistemi operativi moderni © Augusto Celentano Sistemi Operativi A - 66 Unix Dimensione del nucleo di un sistema operativo • Ha una struttura a livelli che maschera la visibilità della macchina fisica ! il livello più interno è il kernel, che racchiude le funzioni di gestione dei processi, della memoria e dell’I/O • Alcuni programmi di utilità esterni al sistema operativo sono forniti con il sistema ! ! interpreti comandi (shell) compilatore C (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 67 (Stallings, 2000) © Augusto Celentano Sistemi Operativi A - 68 I livelli di un sistema Unix La struttura del kernel di Unix (Tanenbaum, 2001) (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 69 © Augusto Celentano Sistemi Operativi A - 70 Alcuni sistemi Unix Windows NT/2000 (1) • System V Release 4 (SVR4) • E’ progettato per utilizzare al meglio le proprietà delle architetture moderne a 32 bit • Solaris 2.x • Fornisce meccanismi di esecuzione multitask in un ambiente mono-utente • 4.4BSD • Linux © Augusto Celentano • E’ basato sul paradigma client-server Sistemi Operativi A - 71 © Augusto Celentano Sistemi Operativi A - 72 Windows NT/2000 (2) Struttura a livelli di Windows NT/2000 • Ha un’architettura modulare che consente un elevato livello di flessibilità nella configurazione • Hardware abstraction layer (HAL) ! ! può adattarsi a macchine differenti sul piano hw (in modo limitato) supporta applicazioni scritte per altri sistemi operativi (in modo limitato) ! • Microkernel ! • E’ un’architettura microkernel modificata ! ! ! molte funzioni esterne al microkernel sono eseguite in modo kernel ogni modulo del sistema può essere rimosso, aggiornato o sostituito senza modificare il resto del sistema © Augusto Celentano Sistemi Operativi A - 73 Hardware Abstraction Layer è un livello che isola il sistema operativo dalle differenze hardware specifiche della singola piattaforma il kernel contiene solo i componenti essenziali del sistema operativo o quelli più utilizzati il resto è costituito da oggetti e processi esterni • Device driver ! traducono le richieste I/O dei processi utente in richieste ai dispositivi di controllo dllo specifico hardware © Augusto Celentano Sistemi Operativi A - 74 Il nucleo di Windows NT/2000 (executive) • • • • • • • • I/O manager Object manager Security reference monitor Process/thread manager Local procedure call (LPC) Facility Virtual memory manager Cache manager Windows/graphics modules (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 75 © Augusto Celentano Sistemi Operativi A - 76 I sottosistemi ambientali L’architettura di Windows NT/2000 • I processi utente si appoggiano ai sottosistemi ambientali (environment subsystems) ! ! ! Win32 OS/2 Posix • Applicazioni progettate per sistemi Windows 16-32 bit, per sistemi OS/2 o per sistemi Posix trovano in WIndows NT/2000 un ambiente di esecuzione che simula l’ambiente nativo (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 77 © Augusto Celentano Sistemi Operativi A - 78 Il modello client - server Thread e SMP (simmetric multiprocessing) • Rende più semplice l’executive • L’esecuzione dei processi si basa sui due concetti di thread e di multiprocessing simmetrico ! è possibile estendere o modificare le funzioni fornite (API, Application Program Interface) ! • Migliora l’affidabilità ogni servizio è svolto da un processo separato i processi client non hanno accesso diretto alla macchina hw (protezione) ! • Permette di remotizzare i servizi costituendo la base per l’elaborazione distribuita ! ! ! © Augusto Celentano Sistemi Operativi A - 79 ! un processo può avere al suo interno più flussi di esecuzione logicamente paralleli (thread) un processo server può creare tanti thread quanti sono i client che richiedono il servizio in un hardware multiprocessor i thread possono essere eseguiti da processori diversi i processor fisici sono perfettamente equivalenti rispetto ad ogni richiesta di esecuzione (simmetric multiprocessing) © Augusto Celentano Sistemi Operativi A - 80 L’implementazione dei sottosistemi ambiente Esecuzione di programmi MS-DOS (Tanenbaum, 2001) (Tanenbaum, 2001) © Augusto Celentano Sistemi Operativi A - 81 © Augusto Celentano Sistemi Operativi A - 82