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.