1. I componenti del Sistema Operativo
• Un SO viene progettato ed implementato
a moduli
• Interfaccia ben definita fra programmi
utente e moduli del SO
• Gli aspetti interni dei diversi SO possono
variare notevolmente
– requisiti diversi
– obiettivi di design diversi
• Primo passo della progettazione:
– DEFINIRE GLI SCOPI DEL SO
• In base agli scopi, si definisce il design
1
13. Componenti di un SO:
il quadro complessivo
Gestione
Gestione
processi
sistema
I/O
Gestione
Sistema di
Gestione memoria
protezione
file centrale
Gestione
Gestione
memoria
SO rete
secondaria
13
14. Gestione dei processi
• Attività principale CPU: esecuzione di
codice
• PROCESSO: è un programma in
esecuzione
– area codice del processo
– area dati del processo
– stato del processo
• Tipici processi:
– programmi utente
– esecuzione driver sistema operativo
– servizi (spool di stampa, server Web)
14
15. Gestione dei processi
• PROCESSO != PROGRAMMA
• Programma: entità passiva
– contenuto di un file (codice) scritto su disco
• Processo: entità attiva
– può essere eseguito
– ha bisogno di tutta una serie di informazioni
aggiuntive per potersi coordinare con altri
processi
– due o più processi possono eseguire lo
stesso programma
♦ sequenze di esecuzione distinte
15
16. Gestione dei processi
• Un processo, per svolgere i propri
compiti, ha bisogno di risorse
– tempo di CPU, accesso a file, dispositivi I/O
• Le risorse possono essere assegnate al
processo:
– al momento della sua creazione
– durante la sua esecuzione
16
17. Gestione dei processi
• Il processo è l'unità di lavoro del SO
• SO: caratterizzato da un insieme di
processi
– organizzazione ad albero
– esecuzione concorrente e sequenziale
♦ concorrente: più processi in esecuzione
simultaneamente
♦ sequenziale: ciascun processo esegue
gruppi di istruzioni, una alla volta
17
18. Gestione dei processi
• Responsabilità del SO:
– creare processi utente e di sistema
– cancellare processi utente e di sistema
– sospendere e ripristinare processi
– fornire meccanismi per la sincronizzazione
di processo
– fornire meccanismi per la comunicazione di
processo
– fornire meccanismi per la gestione di
situazioni di stallo
18
19. Gestione della memoria centrale
• Caratteristiche della memoria centrale:
– vasto array accessibile per byte/parole
– ciascun elemento della memoria ha il
proprio indirizzo
– magazzino di dati velocemente accessibili
– condivisa fra CPU e dispositivi di I/O
♦ CPU legge istruzioni dalla memoria durante il
ciclo di fetch delle istruzioni
♦ CPU interagisce con la memoria in r/w
durante il ciclo di fetch dei dati
♦ Trasferimento efficiente dei dati tramite DMA
19
20. Gestione della memoria centrale
• Solitamente, la memoria è l'unico
dispositivo indirizzabile direttamente
dalla CPU
– i dati del disco, vanno trasferiti in memoria
attraverso richieste di I/O, prima di poter
essere utilizzati
– le istruzioni vanno trasferite in memoria
centrale prima di poter essere eseguite
20
21. Gestione della memoria centrale
• Schema di esecuzione di un programma
1.Il programma viene mappato in indirizzi
assoluti e caricato in memoria.
2.Viene generato l'indirizzo assoluto
corrispettivo ad istruzione/dato corrente.
3.Viene eseguita l'istruzione corrente oppure
elaborato il dato corrente.
4.Al termine dell'esecuzione, lo spazio di
memoria occupato dal processo viene reso
di nuovo disponibile.
21
22. Gestione della memoria centrale
• La memoria centrale è un dispositivo
molto veloce
– più processi mantengo in memoria centrale,
più veloce sarà la loro esecuzione
• Diversi schemi di gestione della memoria
– la scelta dello schema più adatto dipende
dalle esigenze specifiche
– in pratica, il tipo di hardware detta la scelta
dello schema di gestione
22
23. Gestione della memoria centrale
• Responsabilità del SO:
– tenere traccia di quali parti della memoria
sono attualmente utilizzate e da chi
– decidere quali processi debbano essere
caricati in memoria quando vi sia lo spazio
disponibile
– allocare e deallocare lo spazio di memoria in
base alle necessità
23
24. Gestione della memoria secondaria
• La memoria centrale è troppo piccola per
poter contenere l'intero insieme di
programmi
– serve una memoria secondaria di ausilio a
quella centrale
• Caratteristiche memoria secondaria:
– molto più ampia della memoria centrale
– molto più lenta della memoria centrale
24
25. Gestione della memoria secondaria
• Tipicamente, la memoria secondaria
viene fornita da un disco
– dispositivo di massa
– memorizza codice e dati indifferentemente
• I programmi rimangono sul disco fino a
quando non vengono eseguiti
• Quando un programma deve essere
eseguito, viene caricato in memoria
25
26. Gestione della memoria secondaria
• Responsabilità del SO:
– gestione dello spazio libero su disco
– allocazione di spazio su disco
– scheduling/riordino delle richieste per il
disco
26
27. Gestione del sistema di I/O
• SCOPI del sistema di I/O:
– mascherare le differenze tra i vari dispositivi
di I/O
– presentare all'utente una visione omogenea
dei dispositivi
– concetti di:
♦ File
♦ Directory
♦ File system
27
28. Gestione del sistema di I/O
• Responsabilità del SO:
– gestire un sistema di buffer caching
♦ memorizzazione preventiva di dati non
ancora letti dai programmi
♦ scrittura dei dati a buffer riempito
– fornire un'interfaccia generica di uso per i
device driver
28
29. Gestione dei file
• Le informazioni possono essere
memorizzate sui supporti fisici più
disparati
– nastro magnetico
– disco magnetico
– disco ottico
• Il SO maschera le differenze fra device e
fornisce una visione unica ad alto livello
– file
29
30. Gestione dei file
• FILE: raccolta di informazioni definite dal
loro creatore
– sequenza di bit, byte, righe o record
– significato di tale sequenza definito dal
programmatore
– contengono codice di programmi oppure dati
• L'organizzazione dei file è gerarchica
– organizzazione per cartelle (directory)
– rappresentazione ad albero
30
31. Gestione dei file
• Responsabilità del SO:
– creare e cancellare file
– creare e cancellare directory
– supportare primitive per la manipolazione di
file e directory
– mappare file su memoria secondaria
31
32. Sistema di protezione
• I diversi processi di un SO devono
essere protetti contro le attività di altri
processi
– attività involontarie o maliziose
• PROTEZIONE: meccanismo che controlla
l'accesso alle risorse di calcolo da parte
di:
– programmi
– processi
– utenti
32
33. Sistema di protezione
• ESEMPI DI MECCANISMI:
– il SO sfrutta l'hardware di indirizzamento
della memoria per impedire che un processo
possa accedere ad aree non di sua
competenza
– il timer di sistema assicura che nessun
processo possa acquisire il controllo
indefinito della CPU
– esecuzione di istruzioni di I/O diretto solo
tramite interfaccia privilegiata (system call)
– classificazione degli utenti e schema di
permessi per accesso alle risorse
33