Sistemi Operativi
Che cosa è un sistema operativo?
Un programma che agisce da intermediario fra l’utente e
la struttura fisica del calcolatore: gestisce gli elementi fisici
di un calcolatore e fornisce all’utente un’interfaccia per
poter utilizzare le risorse del sistema di calcolo in modo
semplice, efficiente e sicuro
Scopi del sistema operativo:
Eseguire i programmi utenti e facilitare la soluzione dei
problemi degli utenti.
Rende il sistema di calcolo un ambiente in cui si può
lavorare in modo conveniente e corretto.
Utilizzo del calcolatore in maniera efficiente.
Le componenti di un sistema di calcolo
• Hardware o dispositivi fisici – forniscono le risorse di
calcolo fondamentali (CPU o unità centrale di
elaborazione, memoria e dispositivi di input/output).
• Programmi d’applicazione e di sistema – definiscono il
modo in cui si usano queste risorse per risolvere i
problemi computazionali degli utenti (compilatori, fogli
di calcolo, elaboratori di testo e browsers).
• Utenti (le persone, le macchine e altri computers).
• Sistema operativo – E’ uno speciale programma di
sistema che controlla e coordina l’uso dei dispositivi
fisici da parte dei programmi d’applicazione per gli
utenti.
La Sicurezza
 La distinzione tra il concetto di Sicurezza e quello di Protezione è
lieve, normalmente si definisce Sicurezza la capacità di un SO di:
 proteggere i propri dati da perdite accidentali dovute a
errori umani o malfunzionamenti hardware;
 proteggere i propri dati da accessi (attacchi) di intrusi
che accedono illegalmente al sistema di calcolo.
 la prima tipologia di problemi viene normalmente affrontata con
diverse strategie di backup dei dati:
 gli attacchi hanno invece portato allo sviluppo di svariate tecnologie di
difesa per rispondere alle molteplici tipologie di attacchi: Virus, Cavalli
di Troia, Internet Worm, Cracking di password etc.
La Protezione
 La multiprogrammazione e la multiutenza impongono che le risorse
utilizzate dai processi e lo stesso SO siano protetti da:
 interazioni non desiderate,
 attacchi
 tentativi di accaparramento.
 Ogni SO utilizza un certo modello di protezione che può utilizzare
meccanismi diversi come ad esempio:
 dual mode del processore (user/superuser);
 controllo dei diritti di accesso dei processi ai files;
 accesso in memoria con l’utilizzo di indirizzi logici e
non fisici;
 operazioni di I/O con chiamate di sistema;
 gestione a quanti di tempo: evita l’accaparramento
della CPU da parte di un solo processo;
Definizioni di un sistema operativo
Gestore di risorse – gestisce ed alloca le risorse.
Programma di controllo – gestisce l’esecuzione dei
programmi utenti e le operazioni dei dispositivi di I/O in
modo da impedire che si verifichino errori.
Nucleo o Kernel – il solo programma che è sempre
attivato nel calcolatore (tutti gli altri sono programmi
applicativi).
Quali sono le parti di un SO ?
Applicazioni
Gestore del
processore
Interprete di comandi
(shell)
Gestore della
memoria
Gestore delle
periferiche
Hw
Interfaccia grafica
(desktop)
File system
Storia dei sistemi operativi
Prima generazione 1945 - 1955
valvole, circuiti stampati
Seconda generazione 1955 - 1965
transistors, sistemi operativi di tipo batch
Terza generazione 1965 – 1980
Circuiti integrati e sistemi operativi
multiprogrammati e time-sharing
Quarta generazione 1980 – oggi
personal computers, reti, sistemi distribuiti
Sistemi batch (2a generazione)
Primi sistemi a lotti
le schede magnetiche relative ad un insieme di
programmi vengono lette da un computer specializzato
1401 e trasferite su nastro
il nastro viene messo nella macchina 7094 che esegue
la computazione e produce un nastro di risultati
la macchina 1401 stampa il nastro dei risultati
Sistemi batch
Pacco di schede per un sistema batch: struttura di un tipico job
Sistemi batch
Si riduce il tempo di preparazione della macchina
raggruppando a lotti i lavori con requisiti simili ed
eseguendoli come un unico gruppo.
Sequenzializzazione
automatica
dei
lavori
d’elaborazione – si trasferisce automaticamente il
controllo da un lavoro all’altro. Primi rudimentali
sistemi operativi.
disco
schede
Spooling
CPU
Sistemi batch multiprogrammati (3a generazione)
Il sistema operativo tiene contemporaneamente nella memoria
centrale diversi lavori (jobs) e la CPU passa dall’uno all’altro
(CPU scheduling) durante le operazioni di I/O senza rimanere
mai inattiva.
Multiprogrammazione
Obiettivo: aumentare l'utilizzo della CPU organizzando i
job in modo tale da mantenere la CPU in continua attività
Il sistema operativo:
mantiene contemporaneamente in memoria centrale
un insieme di job (un sottoinsieme di quelli memorizzati
su disco)
ne sceglie uno e lo esegue fino a che questo non ha
bisogno di attendere il verificarsi di un qualche evento
(per esempio, il montaggio di un nastro o il
completamento di un'operazione di I/O)
a questo punto passa ad eseguire un altro job
quando un job sospeso ha terminato la sua attesa,
viene reinserito nell'insieme dei job da eseguire
Caratteristiche principali di un sistema
multiprogrammato
Il SO passa continuamente dall'esecuzione di un job all'altro
effettuando:
uno scheduling dei job da caricare in memoria centrale
una gestione della memoria tra i vari job
uno scheduling della CPU per scegliere il job da eseguire
 Un esempio notevole di questa classe è stato l’IBM OS/360.
Scheduling
dei job
Memoria Centrale
Sistema Operativo
Scheduling del
processore
Job 1
DISCO
Job 2
CPU
Job 3
 Nei sistemi multiprogrammati diventano critiche due funzioni del SO:
 la gestione della memoria per ottimizzarne l’utilizzo viste le
dimensioni generalmente limitate (prima l’unico problema era che il
programma “entrasse” in memoria);
 la protezione reciproca dei processi utente da eventuali interazioni
non desiderate (nei sistemi monoprogrammati esisteva solo il
problema della protezione del sistema dai processi utente);
Sistemi Time-Sharing
Estensione
logica
della
multiprogrammazione
sviluppata per garantire un uso interattivo del sistema
di calcolo ad un costo ragionevole
L’esecuzione del processore viene suddivisa in un
certo numero di quanti temporali.
Allo scadere di un quanto, il processo corrente viene
interrotto e l’esecuzione passa ad un altro processo.
Vantaggi
Il processore non viene lasciato inattivo durante
operazioni I/O molto lunghe.
Il sistema dà l’impressione di eseguire più processi
contemporaneamente.
Il sistema di calcolo interattivo permette la
comunicazione diretta tra utente e sistema: l’utente
impartisce le istruzioni direttamente al sistema operativo
oppure ad un programma, attraverso la tastiera o il
mouse.
Caratteristiche necessarie per un sistema
Time-Sharing
 Gestione della memoria
 Memoria virtuale
 File system
 CPU Scheduling
 Sincronizzazione dei processi
 Deadlock
Primi sistemi operativi Time-Sharing
 CTSS (Compatible Time Sharing System - 1962)
 MULTICS (MULTIplexed Information and
Computing Service - 1965)
 UNIX (1969)
Personal Computer (4a generazione)
Personal computers – calcolatori orientati verso un
singolo utente.
Dispositivi I/O – tastiere, mouse, schermi video,
stampanti.
Comodità e prontezza d’uso per l’utente (invece che
mirare al massimo utilizzo della CPU).
Possono utilizzare tecnologie sviluppate originariamente
per sistemi di grandi dimensioni
Possono eseguire tipologie differenti di sistemi operativi
(per esempio, Windows, MacOS, UNIX, Linux)
Personal Computer
MS-DOS (MicroSoft Disk Operating System -1980)
Windows (1985)
Windows 95, Windows 98, Windows Me
Windows NT, Windows 2000, Windows XP, MacOS
UNIX
Minix (1987)
Linux (1994)
Sistemi distribuiti
Lo scopo è distribuire la computazione tra parecchi
processori fisici o mettere in comunicazione calcolatori
fisicamente distribuiti per cooperare nella soluzione dei
problemi di calcolo e per fornire agli utenti un ricco insieme
di funzioni.
Vantaggi dei sistemi distribuiti:
condivisione di risorse e del carico della computazione
affidabilità
Sistemi distribuiti e reti di calcolatori
Si basano sulle reti per realizzare le proprie funzioni.
Le reti si classificano secondo le distanze tra i loro nodi
Local Area Networks (LAN)
Wide Area Networks (WAN)
Possono essere sistemi client-server o peer-to-peer.
Struttura di una LAN
(Local Area Network)
Struttura di una WAN
(Wide Area Network)
Struttura generale di un sistema
client-server
Architettura Client-Server e Peer2Peer
Sistemi per Multiprocessori
I sistemi paralleli sono utilizzati per incrementare: banda di elaborazione,
velocità e affidabilità.
I sistemi paralleli più diffusi sono i multiprocessori simmetrici (SMP) dove
un pool di processori identici condividono la memoria centrale e l’I/O.
Piattaforme commerciali SMP includono:
 workstation con processori Pentium IV o Pentium Xeon come
Netfinity di IBM;
 server come il Sun Starfire che supporta sino a 64 processori SPARC.
Su questi sistemi “girano” sistemi operativi come Windows NT-2000,XP,
Solaris o Linux che supportano il multiprocessing.
Funzioni tipiche di un
Sistema Operativo
Le Funzioni tipiche di un SO
 In tutte le classi di SO riusciamo ad individuare (almeno) i
seguenti sottosistemi che insieme realizzano la macchina
astratta del SO:






Gestione dei processi e schedulazione del processore
Gestione della memoria
Gestione del Filesystem
Gestione dei dispositivi di I/O
Sicurezza
Protezione delle risorse
La Gestione dei Processi
 In un sistema multiprogrammato ogni programma deve ottenere una
sorta di “macchina virtuale” allocando ogni volta che va in
esecuzione le risorse di cui ha bisogno. L’entità che alloca le risorse
necessarie è detta PROCESSO. Un processo può quindi essere
pensato come un programma in esecuzione
 La differenza tra un programma e un processo è che il primo è
un’entità passiva ovvero la codifica di un algoritmo, mentre il
secondo è un’entità attiva ovvero l’insieme di risorse utilizzate da un
programma durante la sua esecuzione.
 In un sistema di calcolo sono in esecuzione sia i processi di sistema
che realizzano le funzioni del SO, che i processi utenti che
eseguono i programmi lanciati dagli utenti.
La Gestione dei Processi (2)
 Se i processi sono le entità che rappresentano i programmi in
esecuzione concorrente, il SO deve mettere a disposizione
funzionalità per:
 La creazione e distruzione di processi;
 La sospensione e ripristino dell’esecuzione;
 La sincronizzazione per l’accesso alle risorse;
 La comunicazione;
 Il modello concorrente è caratterizzato da un diagramma degli stati
che descrive le possibili transizioni di stato consentite ai processi
del sistema.
Diagramma degli stati
attivazione
New
uscita
terminated
interrupt
Ready
verificarsi di un evento o
completamento di un I/O
Running
dispatch
Waiting
attesa evento
(es. I/O)
La Gestione della Memoria
 Al momento dell’esecuzione ogni programma deve risiedere, almeno
in parte, nella memoria centrale.
 La multiprogrammazione e il TS provocano frequenti alternanze tra i
processi in esecuzione quindi il SO deve gestire efficientemente le
seguenti funzioni:
 tenere traccia dell’occupazione della memoria;
 scegliere di volta in volta quale processo caricare minimizzando
il numero di movimenti (scheduling a medio termine);
 allocare e deallocare dinamicamente spazi di memoria
aumentando il numero di processi che possono risiedere in
memoria contemporaneamente.
La Gestione dei File
 Il SO fornisce all’utente modalità standard per accedere ai dati che
necessitano di essere archiviati permanentemente. Tali modalità
utilizzano in genere due astrazioni:
 File (archivio): un file è un tipo di dato astratto sul quale sono
definite alcune operazioni indipendenti dal tipo di supporto sul
quale il file è memorizzato (disco, nastro, floppy etc). Le
operazioni tipiche sono la creazione, l’eliminazione, la
lettura/scrittura, la rinominazione etc.
 Directory (cartella): una collezione (contenitore) di file sulla quale
sono possibili operazioni complessive come spostamento,
rinominazione, eliminazione etc. Le directory vengono usate per
organizzare i file.
La Gestione dell’I/O
 Il gestore dell’I/O ha la finalità di nascondere all’utente e alle altre
componenti del sistema le caratteristiche dei dispositivi di I/O.

Il sottosistema di I/O comprende essenzialmente tre elementi:
 gestione della memoria per le operazioni di caching, buffering e
spooling che ottimizzano gli scambi di informazione tra la
memoria centrale e i dispositivi.
 un’interfaccia generica per utilizzare i drivers dei dispositivi in
modo uniforme da parte del programmatore.
 un insieme di drivers associati ai dispositivi del sistema nei quali
rimane confinata la parte di sistema dipendente
dall’hardware.
La Gestione della Memoria Secondaria
 Le tecniche di multiprogrammazione e TS richiedono che la memoria
principale sia utilizzata in modo intenso, trasferendo continuamente dati e
programmi da e verso la memoria secondaria (tipicamente su disco).
 Il SO deve ottimizzare tali spostamenti fornendo le seguenti funzionalità:
 tenere traccia dell’occupazione dello spazio disco per poter
utilizzare efficientemente le eventuali aree libere;
 funzioni di allocazione di spazio su disco e gestione delle
situazioni speciali come l’area di swap;
 scheduling del disco rispetto alle richieste provenienti dai
processi utente e sistema (in un sistema multiprogrammato la
coda di attività su disco può avere una certa lunghezza);
Il nucleo del SO
 Le funzioni del SO che riguardano:
 la gestione dei processi,
 la loro cooperazione (sincronizzazione e comunicazione)
 la gestione del processore
sono dette Nucleo (Kernel) del SO.
 Il firmware del calcolatore e il nucleo costituiscono il supporto a
tempo di esecuzione del modello concorrente adottato dal SO.
Processo
utente
Processo
sistema
Processo
sistema
Processo
utente
Nucleo: System call Send, Receive, Scheduling
Firmware
Modello monolitico
 Nel modello monolitico tutte le funzioni, anche quelle per
la gestione delle risorse, sono contenute nel nucleo. In un
SO monolitico il nucleo tende a coincidere con il SO.
 In linea di principio in una organizzazione monolitica tutte
le funzioni possono chiamarsi senza alcuna gerarchia.
Ogni procedura “conosce” l’interfaccia e i parametri con
cui utilizzare le altre.
 La portabilità e la modularità dei SO monolitici è limitata
ed è difficile separare i meccanismi dalle politiche di
gestione.
 Un esempio di SO monolitico è MS-DOS che a cause
delle limitazioni di spazio privilegia l’efficienza a scapito
della struttura e della protezione.
Schema del sistema MS-DOS
 Non ha l’identificazione
PROGRAMMI DI APPLICAZIONE
dell’utente con login e password;
 Non ha protezione del file
system (ownership, gruppi).
PROGRAMMI DI SISTEMA
 Non supporta meccanismi di
protezione della memoria.
 Non esiste la modalità Kernel
distinta da quella utente.
DRIVER DISPOSITIVI MS-DOS
DRIVER DISPOSITIVI ROM BIOS
 Non è multiprogrammato: la
shell lancia un programma e
attende che sia completato.
 i comandi utente di I/O agiscono
direttamente sui dispositivi.
Modello stratificato
 Il sistema rimane monolitico perché tutte le funzioni
vengono eseguite in modalità kernel ma introduce una
“strutturazione” gerarchica delle funzioni.
 Unix è un modello “classico” di SO stratificato e include
tre livelli:
 un’interfaccia utente per le chiamate di sistema;
 un insieme di procedure per la gestione delle risorse
corrispondenti alle chiamate di sistema;
 un insieme di procedure di servizio invocate dalle
chiamate di sistema (es. per la gestione della
concorrenza);
 La strutturazione in strati migliora la modularità e la
portabilità.
 Esistono SO con una stratificazione più spinta (es. THE o
MULTICS) ma i sistemi moderni limitano il numero degli
strati per motivi di efficienza.
Uno schema di sistema monolitico
stratificato
System call
U2
U3
Procedure di gestione
Proc 1
Proc 2
Proc N
Procedure di servizio
(gestione concorrenza)
Serv 1
Serv 2
Serv k
Processi utente
kernel
U1
Interfaccia kernel - firmware
Um
Lo schema di Unix
interfaccia utente
interfaccia delle
librerie di sistema
interfaccia
system call
Utenti
Programmi di utilità
(Shell, compilatori, editors)
user mode
Libreria Standard
(Open close, read, write, fork)
Unix kernel:
Gestione Processi, Memoria, File System, I/O
kernel mode
Visione astratta delle componenti di un
sistema di calcolo
Modelli a microkernel
 Un passo avanti nella strutturazione dei sistemi si ottiene estraendo dal
nucleo del SO le funzioni di gestione e lasciando solo le funzioni necessarie
all’implementazione del modello concorrente. Questi sistemi sono detti
anche a nucleo minimo o microkernel.
 Esistono due gruppi di sistemi a microkernel:
 sistemi orientati alle procedure: in questi sistemi le funzioni di
gestione delle risorse vengono eseguite direttamente dai
processi utente invocando procedure che vanno a modificare
strutture dati condivise. L’assunzione implicita di questo modello
è di disporre di una memoria condivisa;
 sistemi orientati ai processi o client-server: in questo caso le
risorse dei sistema sono gestite da un insieme di processi
server. I processi utenti effettuare richieste di accesso alle
risorse comunicando esplicitamente con i server preposti.
Modello client-server
 Il modello client-server estrae le funzioni di gestione dal nucleo




affidandole a un insieme di processi gestori (server) che
controllano l’accesso alle risorse.
I processi utente effettueranno comunicazioni esplicite (per
esempio per leggere un blocco di un file) al servente della risorsa
che svolgerà per “suo conto” l’operazione e gli restituirà il risultato
con un’altra comunicazione.
La separazione tra i meccanismi (forniti dal nucleo) e le politiche
(specificate nei processi) è naturale in questo modello.
Il modello client-server ha gli stessi vantaggi di modularità e
portabilità del modello a procedure ma non richiede memoria
comune ed è quindi utilizzabile anche per i sistemi distribuiti.
La protezione utilizza un meccanismo più “robusto” dato che i
processi non hanno le risorse nel loro spazio logico.
Modelli a macchine virtuali
 Multiprogrammazione e TS sono gestiti finora dalla sola astrazione
dei processi. Il sistema IBM VM/370 utilizza un approccio totalmente
differente, il nucleo implementa infatti una serie di macchine virtuali
da associare ad ogni utente che forniscono la visione di una
macchina fisica dedicata identica a quella reale.
 Sulle macchine virtuali dovranno essere eseguiti altri SO visto che il
nucleo realizza solo l’astrazione di più macchine fisiche. I SO
(monoutente) scelti da utenti diversi possono anche essere distinti!!
 L’approccio delle macchine virtuali offre una separazione completa
tra le attività dei vari utenti perché non esiste nessuna possibilità di
interazione tra macchine virtuali distinte.
 Lo scarso seguito avuto dal VM/370 non diminuisce il fascino di
questa soluzione che è stata “riutilizzata” in diversi contesti dove la
protezione e’ essenziale (emulatori, ambienti NT o Mach, Java VM).
Sistema a Macchine Virtuali
Processo
Utente
Processo
Utente
Processo
Utente
Processo
Utente
Kernel
Kernel
Kernel
Kernel
Macchina Virtuale
HARDWARE
Windows NT-2000 un modello ibrido
Client Server
Macchine virtuali
non è microkernel