Title: Introduzione ai sistemi operativi
1Introduzione aisistemi operativi
2Sommario
- Introduzione
- Scopo del sistema operativo
- Architettura del sistema operativo
- Storia dei sistemi operativi
- Struttura dei sistemi operativi
- La gestione dei processi
- La gestione della memoria
- Il file system
- La gestione dei dispositivi di I/O
- Linterfaccia utente
- Esempi di sistemi operativi
3Introduzione
4Cosè un sistema operativo ? 1
- Il software può essere diviso in due grandi
classi - i programmi di sistema, che gestiscono le
funzionalità del sistema di calcolo - i programmi applicativi, che risolvono i problemi
degli utenti - Linsieme dei programmi di sistema viene
comunemente identificato con il nome di Sistema
Operativo (SO) - Definizione
- Un sistema operativo è un programma che
controlla lesecuzione di programmi applicativi
ed agisce come interfaccia fra le applicazioni e
lhardware del calcolatore
5Cosè un sistema operativo ? 2
- Tutte le piattaforme hardware/software richiedono
un sistema operativo - Quando si accende un elaboratore, occorre
attendere alcuni istanti per poter iniziare a
lavorare durante questa pausa il computer carica
il SO
6Scopo del sistema operativo
- Gestione EFFICIENTE delle risorse del sistema di
elaborazione - Rendere AGEVOLE linterfaccia tra luomo e la
macchina
7Compiti del sistema operativo
- Gestione dei processi
- Gestione della memoria principale
- Gestione della memoria di massa (file system)
- Realizzazione dellinterfaccia utente
- Rilevamento e gestione degli errori
- Accounting
- Protezione e sicurezza
8Esempio il SO come gestore risorse 1
- Si consideri un ristorante con un capocuoco (che
dirige la cucina) ed i suoi aiutanti, camerieri e
clienti - I clienti scelgono un piatto dal menù
- Un cameriere prende lordine e lo consegna al
capocuoco - Il capocuoco riceve lordine e assegna uno o più
aiutanti alla preparazione del piatto - Ogni aiutante si dedicherà alla preparazione di
un piatto, il che potrà richiedere più attivitÃ
diverse - Il capocuoco supervisiona la preparazione dei
piatti e gestisce le risorse (limitate)
disponibili
9Esempio il SO come gestore risorse 2
- Il capocuoco è il sistema operativo!
- I clienti sono gli utenti
- Le ricette associate ai piatti sono i programmi
- Il menù ed il cameriere costituiscono
linterfaccia verso il sistema operativo (grafica
e non) - Gli aiutanti sono i processi
- La cucina è il computer pentole, fornelli, etc.
sono le componenti hardware
10Esempio il SO come gestore risorse 3
- Problemi del capocuoco
- Esecuzione fedele delle ricette
- Allocazione efficiente delle risorse esistenti
(aiutanti, fornelli, etc.) - Coordinamento efficiente degli aiutanti
- Licenziamento degli aiutanti che non si
comportano secondo le regole - Problemi del sistema operativo
- Efficienza nelluso delle risorse (processori,
memoria, dischi, etc.) - Protezione nelluso delle risorse
- Coordinamento dei processi
11Il SO come macchina estesa 1
- Visione a strati delle componenti
hardware/software che compongo un elaboratore
12Il SO come macchina estesa 2
- Il SO può essere inteso come uno strumento che
virtualizza le caratteristiche dellhardware
sottostante, offrendo allutente la visione di
una macchina astratta più potente e più semplice
da utilizzare di quella fisicamente disponibile - In questa visione, un SO
- nasconde a programmatori/utenti i dettagli
dellhardware e fornisce uninterfaccia
conveniente e facile da usare - agisce come intermediario tra programmatore/utent
e e hardware - Parole chiave
- Indipendenza dallhardware
- Comodità duso
- ProgrammabilitÃ
13Il SO come macchina estesa 3
- Lutente è in grado di utilizzare la macchina
fisica senza conoscere i dettagli della sua
struttura interna e del suo funzionamento
- Hardware fornisce le risorse fondamentali di
calcolo (CPU, memoria, device di I/O) - Sistema Operativo controlla e coordina
lutilizzo delle risorse hardware da parte dei
programmi applicativi dellutente - Programmi Applicativi definiscono le modalitÃ
di utilizzo delle risorse del sistema, per
risolvere i problemi di calcolo degli utenti
(compilatori, database, video game, programmi
gestionali) - Utenti persone, altri macchinari, altri
elaboratori
Visione a cipolla del sistema di calcolo
14Architettura del sistema operativo
- I SO sono costituiti da un insieme di moduli,
ciascuno dedicato a svolgere una determinata
funzione - I vari moduli del SO interagiscono tra loro
secondo regole precise, al fine di realizzare le
funzionalità di base della macchina
- Linsieme dei moduli per la gestione della CPU e
della memoria centrale è il kernel
15Ancora sul sistema operativo
- Riassumendo Il sistema operativo fornisce un
ambiente per eseguire programmi in modo
conveniente ed efficiente, funge infatti da - Allocatore di risorse controlla, distribuisce
ed alloca le risorse (in modo equo ed efficiente) - Programma di controllo controlla lesecuzione
dei programmi utente e le operazioni sui
dispositivi di I/O
Esempio il filesystem
Si ha a che fare con file, directory, etc., e non
ci si deve preoccupare di come i dati sono
memorizzati sul disco
16Storia dei sistemi operativi
17Storia dei sistemi operativi
- Levoluzione dei sistemi operativi
- è stata spinta dal progresso tecnologico
dellhardware - ha guidato il progresso tecnologico
dellhardware - Esempio
- Gestione degli interrupt
- Protezione della memoria
- Memoria virtuale
- ...
- Perché analizzare la storia dei sistemi
operativi? - Perché permette di capire lorigine di certe
soluzioni presenti nei SO attuali - Perché è lapproccio migliore per capire come
certe idee si sono sviluppate - Perché alcune delle soluzioni più antiche sono
ancora utilizzate
18Storia dei sistemi di elaborazione
- Generazione 0 Babbage (17921871)
- Progetta la macchina analitica (programmabile,
meccanica) - Non aveva sistema operativo
- La prima programmatrice della storia è Lady Ada
Lovelace - Generazione 1 19451955
- Valvole e tavole di commutazione
- Generazione 2 19551965
- Transistor e sistemi batch
- Generazione 3 19651980
- Circuiti integrati, multiprogrammazione e
timesharing - Generazione 4 1980oggi
- Personal computer
19Generazione 1 19451955
- Come venivano costruiti?
- Calcolatori a valvole e tavole di commutazione
- Come venivano usati?
- Solo calcoli numerici (calcolatori non
elaboratori) - Un singolo gruppo di persone progettava,
costruiva, programmava e manuteneva il proprio
computer - Come venivano programmati?
- In linguaggio macchina (stringhe di 0 e 1)
- Programmazione su tavole di commutazione
- Nessun sistema operativo!
20Generazione 1 19451955
- Principali problemi
- Scarsa affidabilità (guasti frequenti)
- Rigidità nellassegnazione dei ruoli
- Non esiste il concetto di programmatore come
entità separata dal costruttore di computer e
dallutente - Utilizzazione lenta e complessa loperatore
doveva - caricare il programma da eseguire
- inserire i dati di input
- eseguire il programma
- attendere il risultato
- in caso di errore, ricominciare dal punto 1)
- Tutto ciò a causa dellassenza del SO
21Generazione 2 19551965
- Come venivano costruiti?
- Introduzione dei transistor
- Costruzione di macchine più affidabili ed
economiche - Come venivano usati?
- Gli elaboratori iniziano ad essere utilizzati per
compiti diversi - Si crea un mercato, grazie alle dimensioni ed al
prezzo ridotti - Avviene una separazione tra costruttori,
operatori e programmatori - Come venivano programmati?
- Linguaggi di medio/alto livello Assembly,
Fortran - Tramite schede perforate
- Sistemi operativi batch
22Generazione 2 19551965
- Definizione di job Un programma o un insieme di
programmi la cui esecuzione è richiesta da un
utente - Ciclo di esecuzione di un job
- Il programmatore
- scrive (su carta) un programma in un linguaggio
di alto livello - perfora una serie di schede con il programma e il
suo input - consegna le schede ad un operatore
- Loperatore
- inserisce le schede di controllo scritte in
linguaggio apposito - inserisce le schede del programma
- attende il risultato e lo consegna al
programmatore - operatore ? programmatore utente
23Generazione 2 19551965
- Primi rudimentali esempi di sistema operativo,
detti anche monitor residenti o sistemi batch, a
infornata - Controllo iniziale al monitor
- Il controllo viene ceduto al job corrente
- Una volta terminato il job, il controllo ritorna
al monitor
- Il monitor residente è in grado di eseguire una
sequenza di job, trasferendo il controllo
dalluno allaltro in successione
24Generazione 2 19551965
- Principale problema molte risorse non utilizzate
- Durante le operazioni di lettura schede/stampa,
durante il caricamento di un nuovo job, il
processore resta inutilizzato - Parte della memoria resta inutilizzata
- Primo miglioramento ma non una soluzione
- Caricamento di numerosi job su nastro (offline)
- Elaborazione (output su nastro)
- Stampa del nastro di output (offline)
25Generazione 3 19651980
- Come venivano costruiti?
- Circuiti integrati
- Come venivano usati?
- Progressivamente sparisce la figura
delloperatore come interfaccia degli utenti
verso le macchine - utente operatore
- Come venivano programmati?
- Linguaggi di alto livello C, shell scripting
- Editor testuali, editor grafici, compilatori
- Accesso al sistema da terminali
- Sistemi operativi interattivi, con
multiprogrammazione e timesharing
26Generazione 3 Multiprogrammazione
- Definizione di multiprogrammazione Utilizzo del
processore durante i periodi di I/O di un job per
eseguire altri job - Vantaggi
- Il processore non viene lasciato inattivo (idle)
durante le operazioni di I/O (molto lunghe) - La memoria viene utilizzata al meglio, caricando
il maggior numero di job possibili - Nota per gestire la multiprogrammazione, il SO
deve gestire un pool di job da eseguire, fra cui
alternare il processore
27Generazione 3 Multiprogrammazione
- Caratteristiche tecniche
- Più job contemporaneamente in memoria
- Una componente del SO, detta scheduler, si
preoccupa di alternarli nelluso della CPU - Quando un job richiede unoperazione di I/O, la
CPU viene assegnata ad un altro job - SO multiprogrammati
- Routine di I/O fornite dal SO
- Gestione della memoria il sistema deve allocare
la memoria per i job presenti contemporaneamente - CPU scheduling il sistema deve scegliere tra i
diversi job pronti allesecuzione - Allocazione delle risorse di I/O il SO deve
essere in grado di allocare le risorse di I/O fra
diversi processi
28Generazione 3 Timesharing
- Definizione di timesharing
- La risorsa CPU viene suddivisa in quanti
temporali allo scadere di un quanto, il job
corrente viene interrotto e lesecuzione passa ad
un altro job, anche in assenza di richieste di
I/O - I context switch avvengono così frequentemente
che più utenti possono interagire con i programmi
in esecuzione - SO timesharing
- Gestione della memoria il numero di processi
utente può essere molto elevato si rende
necessario luso della memoria virtuale - CPU scheduling deve essere di tipo timesliced,
ovvero sospendere periodicamente lesecuzione di
un programma a favore di un altro - La presenza di più utenti rende necessari
meccanismi di protezione (e.g. protezione del
file system, della memoria, etc.)
29Generazione 4 1980oggi
- I personal computer sono dedicati ad utenti
singoli - Lobiettivo primario per i SO diventa la facilitÃ
duso diminuisce linteresse per la gestione
ottima delle risorse - I SO per PC sono in generale più semplici non
implementano la protezione (almeno fino
allavvento di Internet) - Creazione di interfacce grafiche userfriendly
- Tuttavia, tecnologie sviluppate per SO più
complessi possono comunque essere adottate
30La struttura del sistema operativo
La gestione dei processi
31La gestione dei processi 1
- Un processo è un programma in esecuzione
- Un processo utilizza le risorse fornite dal
sistema di elaborazione per assolvere ai propri
compiti - La terminazione di un processo prevede il
recupero di tutte le risorse riutilizzabili ad
esso precedentemente allocate - Normalmente, in un sistema vi sono molti
processi, di alcuni utenti, e alcuni sistemi
operativi, che vengono eseguiti in concorrenza su
una o più CPU - La concorrenza è ottenuta effettuando il
multiplexing delle CPU fra i vari processi
32La gestione dei processi 2
- Il sistema operativo è responsabile delle
seguenti attività riguardanti la gestione dei
processi - creazione e terminazione dei processi
- sospensione e riattivazione dei processi
- gestione dei deadlock
- comunicazione tra processi
- sincronizzazione tra processi
- Il gestore dei processi realizza una macchina
virtuale in cui ciascun programma opera come se
avesse a disposizione ununità di elaborazione
dedicata
33La gestione dei processi 3
- Il gestore dei processi è il modulo che si occupa
del controllo, della sincronizzazione,
dellinterruzione e della riattivazione dei
programmi in esecuzione cui viene assegnato un
processore - La gestione dei processi viene compiuta secondo
modalità diverse, in funzione del tipo di
utilizzo cui il sistema è rivolto - Il programma che si occupa della distribuzione
del tempo di CPU tra i vari processi attivi,
decidendone lavvicendamento, è chiamato
scheduler - Nel caso di sistemi multiprocessore, lo scheduler
si occupa anche di gestire la cooperazione tra le
diverse CPU presenti nel sistema
34Ciclo di vita dei processi
nascita
top nella coda di scheduling
running
ready
tempo scaduto
evento
wait
termine
attesa evento (es. I/O)
35Politiche di scheduling
- Le politiche di scheduling sono raggruppabili in
due grandi categorie - Preemptive luso della CPU da parte di un
processo può essere interrotto in un qualsiasi
momento, e la risorsa concessa ad altro processo - Non preemptive una volta che un processo ha
ottenuto luso della CPU, è unico proprietario
della risorsa finché non ne decide il rilascio
36Sistemi monotasking
- I SO che gestiscono lesecuzione di un solo
programma per volta (un solo processo) sono detti
monotasking - Non è possibile sospendere un processo per
assegnare la CPU ad un altro - Sono storicamente i primi SO (es. MSDOS)
C
B
A
t
T
37Sistemi multitasking
- I SO che permettono lesecuzione contemporanea di
più programmi sono detti multitasking o
multiprogrammati - Un programma può essere interrotto e la CPU
passata a un altro programma
C
B
A
t
Tmono-tasking
Tmulti-tasking
38Sistemi timesharing
- Unevoluzione dei sistemi multitasking sono i
sistemi timesharing - Ogni processo viene eseguito ciclicamente per
piccoli quanti di tempo - Se la velocità del processore è sufficientemente
elevata si ha limpressione di unevoluzione
parallela dei processi - Esempio
- Ipotesi 1 MIPS, 4 processi,
- 0.25 s/utente
- Conseguenze 0.25 MIPS/utente,
- TELA 4 ? TCPU
0.00
A
D
0.75
0.25
C
B
0.50
39Timesharing diagramma temporale
Processo Tempo di CPU
A 3
B 2
C 4
D 3
D
C
B
A
t
40La gestione della memoria
41La gestione della memoria principale 1
- La memoria principale
- è un array di byte indirizzabili singolarmente
- è un deposito di dati facilmente accessibile e
condiviso tra la CPU ed i dispositivi di I/O - Il SO è responsabile delle seguenti attivitÃ
riguardanti la gestione della memoria principale - Tenere traccia di quali parti della memoria sono
usate e da chi - Decidere quali processi caricare quando diventa
disponibile spazio in memoria - Allocare e deallocare lo spazio di memoria quando
necessario - Il gestore di memoria realizza una macchina
virtuale in cui ciascun programma opera come se
avesse a disposizione una memoria dedicata
42La gestione della memoria principale 2
- Lorganizzazione e la gestione della memoria
centrale è uno degli aspetti più critici nel
disegno di un SO - Il gestore della memoria è quel modulo del SO
incaricato di assegnare la memoria ai task (per
eseguire un task è necessario che il suo codice
sia caricato in memoria) - La complessità del gestore della memoria dipende
dal tipo di SO - Nei SO multitasking, più programmi possono
essere caricati contemporaneamente in memoria - Problema come allocare lo spazio in maniera
ottimale
43Allocazione lineare
Memoria
0000x
Programma A
Programma B
Programma C
44Allocazione lineare
Memoria
0000x
Programma A
PROBLEMA !!!! FRAMMENTAZIONE
Programma D
Programma C
45Paginazione
Memoria
0000x
Programma D
46Paginazione
Programma E
47La memoria virtuale 1
- Spesso la memoria non è sufficiente per contenere
completamente tutto il codice dei processi - Si può simulare una memoria più grande tenendo
nella memoria di sistema (RAM) solo le parti di
codice e dati che servono in quel momento - Si usa il concetto di memoria virtuale
- I dati e le parti di codice relativi a programmi
non in esecuzione possono essere tolti dalla
memoria centrale e parcheggiati su disco nella
cosiddetta area di swap - I processori moderni sono dotati di meccanismi
hardware per facilitare la gestione della memoria
virtuale
48La memoria virtuale 2
Memoria
0000x
Programma A-1
Programma B-1
Programma D
49La memoria virtuale 2
Memoria
0000x
Programma A-2
Programma B-1
Swap
Programma D
Programma A-1
Programma A-3
Programma B-2
50La gestione della memoria secondaria ? 1
- Poiché la memoria principale è volatile e troppo
piccola per contenere tutti i dati e tutti i
programmi in modo permanente, un computer è
dotato di memoria secondaria - In generale, la memoria secondaria è data da hard
disk e dischi ottici - Il SO garantisce una visione logica uniforme del
processo di memorizzazione - Astrae dalle caratteristiche fisiche dei
dispositivi per definire ununità di
memorizzazione logica ? il file - Ciascuna periferica viene controllata dal
relativo device driver, che nasconde allutente
le caratteristiche fisiche variabili
dellhardware modalità e velocità di accesso,
capacità , velocità di trasferimento
51La gestione della memoria secondaria ? 2
- Il SO è responsabile delle seguenti attivitÃ
riguardanti la gestione della memoria secondaria - Allocazione dello spazio
- Gestione dello spazio libero
- Ordinamento efficiente delle richieste (disk
scheduling)
52Il file system
53La gestione del file system 1
- Un file è lastrazione informatica di un archivio
di dati - Il concetto di file è indipendente dal mezzo sul
quale viene memorizzato (che ha caratteristiche
proprie e propria organizzazione fisica) - Un file system è composto da un insieme di file
- Il SO è responsabile delle seguenti attivitÃ
riguardanti la gestione del file system - Creazione e cancellazione di file
- Creazione e cancellazione di directory
- Manipolazione di file e directory
- Codifica del file system sulla memoria secondaria
54La gestione del file system 2
- Il gestore del file system è il modulo del SO
incaricato di gestire le informazioni memorizzate
sui dispositivi di memoria di massa - Il gestore del file system deve garantire la
correttezza e la coerenza delle informazioni - Nei sistemi multiutente, fornisce meccanismi di
protezione per consentire agli utenti di
proteggere i propri dati dallaccesso di altri
utenti non autorizzati - Le funzioni tipiche del gestore del file system
sono - Fornire un meccanismo per lidentificazione dei
file - Fornire metodi opportuni di accesso ai dati
- Rendere trasparente la struttura fisica del
supporto di memorizzazione - Implementare meccanismi di protezione dei dati
55Organizzazione del file system
- Quasi tutti i SO utilizzano unorganizzazione
gerarchica del file system - Lelemento utilizzato per raggruppare più file
insieme è la directory
Directory
- Linsieme gerarchico delle directory e dei file
può essere rappresentato attraverso un grafo (un
albero nei SO più datati) delle directory
Grafo delle directory
56La gestione dei dispositivi di I/O
57La gestione dei dispositivi di I/O
- La gestione dellI/O richiede
- Uninterfaccia comune per la gestione dei device
driver - Un insieme di driver per dispositivi hardware
specifici - Un sistema di gestione di buffer per il caching
delle informazioni - Il gestore dei dispositivi di I/O è il modulo del
SO incaricato di assegnare i dispositivi ai task
che ne fanno richiesta e di controllare i
dispositivi stessi - Da esso dipende la qualità e il tipo di
periferiche riconosciute dal sistema - Il gestore delle periferiche offre allutente una
versione astratta delle periferiche hardware
lutente ha a disposizione un insieme di
procedure standard di alto livello per
leggere/scrivere da/su una periferica che
percepisce come dedicata
58Device driver
- Il controllo dei dispositivi di I/O avviene
attraverso speciali moduli software, detti device
driver - I device driver sono spesso realizzati dai
produttori dei dispositivi stessi che ne
conoscono le caratteristiche fisiche in maniera
approfondita - I device driver implementano le seguenti
funzioni - Rendono trasparenti le caratteristiche fisiche
tipiche di ogni dispositivo - Gestiscono la comunicazione dei segnali verso i
dispositivi - Gestiscono i conflitti, nel caso in cui due o più
task vogliano accedere contemporaneamente allo
stesso dispositivo
59Linterfaccia utente
60Linterfaccia utente 1
- Tutti i SO implementano meccanismi per facilitare
lutilizzo del sistema da parte degli utenti - Linsieme di tali meccanismi di accesso al
computer prende il nome di interfaccia utente - Serve per
- attivare un programma, terminare un programma,
etc. - interagire con le componenti del sistema
operativo (gestore dei processi, file system,
etc.)
61Linterfaccia utente 2
- Interfaccia testuale
- Interprete dei comandi (shell)
- Esempio MSDOS/UNIX
- Interfaccia grafica (a finestre)
- Loutput dei vari programmi viene visualizzato in
maniera grafica allinterno di finestre - Lutilizzo di grafica rende più intuitivo luso
del calcolatore - Esempio WINDOWS/Linux
- Differenze
- Cambia il linguaggio utilizzato, ma il concetto
è lo stesso - Vi sono però differenze a livello di espressivitÃ
62Linterfaccia grafica
- Realizza la metafora della scrivania (desktop)
- Interazione semplice via mouse
- Le icone rappresentano file, directory,
programmi, azioni, etc. - I diversi tasti del mouse, posizionato su oggetti
differenti, provocano diversi tipi di azione
forniscono informazioni sulloggetto in
questione, eseguono funzioni tipiche
delloggetto, aprono directory ? folder, o
cartelle, nel gergo GUI (Graphical User Interface)
63Protezione e sicurezza
64Protezione e sicurezza
- Protezione ? è il meccanismo usato per
controllare laccesso da parte di processi o
utenti a risorse del sistema di calcolo - Sicurezza ? è il meccanismo di difesa
implementato dal sistema per proteggersi da
attacchi interni ed esterni - Denial?of?service, worm, virus, hacker
- In prima istanza, il sistema distingue gli
utenti, per determinare chi può fare cosa - Lidentità utente (user ID) include nome
dellutente e numero associato ? uno per ciascun
utente - Luser ID garantisce lassociazione corretta di
file e processi allutente e ne regola la
manipolazione - Lidentificativo di gruppo permette inoltre ad un
insieme di utenti di accedere correttamente ad un
gruppo di risorse comuni (file e processi)
65Esempi di sistemi operativi
66Sistemi operativi commerciali
- In commercio sono presenti una grande quantità di
sistemi operativi diversi - In passato, la tendenza delle case costruttrici
di sistemi di elaborazione era di sviluppare
sistemi operativi proprietari per le loro
architetture - La tendenza attuale è quella dello sviluppo di
sistemi operativi portabili su piattaforme diverse
67MSDOS
- DOS Disk Operating System
- CPU Intel 80x86 (16 bit)
- Monotask
- Monoutente
- File system gerarchico
- Memoria gestibile limitata (1 MB/640 KB)
- Nessuna protezione
68Windows/Vista
- CPU Intel (da 80386), ma anche per DECAXP,
MIPSR4000, etc. - Multitask
- Monoutente/Multiutente
- NTFS (NT File System)
- Microkernel, thread
- Sistema a 32/64 bit
69UNIX
- Nato alla fine degli anni 60 (ATT Bell Labs)
- Rimasto allavanguardia perchè sviluppato in
ambito universitario (UCB, University of
California at Berkeley) - Multitask
- Multiutente
- Ottima integrazione in rete
- Portabilità dei programmi
70Linux
- Nato nel 91, grazie a Linus Torvalds, uno
studente finlandese dellUniversità di Helsinki - Sviluppato su piattaforma Intel 80386, fu
distribuito da subito su Internet (free e
opensource) - Multitask
- Multiutente
- L'architettura del sistema è Unixlike un kernel
molto piccolo che contiene solo funzioni
fondamentali per la gestione delle risorse del
computer (memoria, dischi, rete e altre
periferiche) ed una larga collezione di programmi
applicativi che lutente usa per operare sul
sistema