IL SISTEMA OPERATIVO
(seconda parte)
PROGRAMMI UTENTE
INTERPRETE COMANDI
FILE SYSTEM
GESTIONE DELLE PERIFERICHE
GESTIONE DELLA MEMORIA
GESTIONE DEI PROCESSI (NUCLEO)
HARDWARE
1
●
●
●
●
●
●
IL SISTEMA OPERATIVO
Il sistema operativo gestisce le risorse della
macchina fisica sottostante e fornisce all’utente
l’astrazione di macchina virtuale
lo strato di Gestione dei processi gestisce l’unità di
elaborazione, ossia la CPU
lo strato di Gestione della memoria gestisce la
memoria centrale
lo strato di Gestione delle periferiche gestisce i
dispositivi periferici e le loro connessioni con la CPU
Il file system è l’organizzazione logica dei file sulla
memoria di massa
l’interprete comandi permette di interpretare i
comandi di alto livello
2
La gestione delle periferiche


Funzioni principali:
• Indirizzamento dei segnali da e verso
le periferiche
• Sincronizzazione delle periferiche
Gestione del sistema di Ingresso/Uscita
• Gestione dei flussi di dati (buffer).
• Interfaccia generale per i programmi di
controllo (driver) delle periferiche
(device).
• Collezione di programmi di controllo
(driver) specifici per le varie
periferiche (device) collegabili al
calcolatore.
3
La gestione delle periferiche: i
driver


I driver sono meccanismi software cui è affidato il
compito di comunicare dati da e verso le periferiche
Garantiscono ai programmi che li usano una visione
di alto livello
• E’ possibile leggere o scrivere tramite primitive
indipendenti dalla struttura hardware delle periferiche

Distinguiamo:
• Driver fisici (hardware): vengono attivati direttamente dal
gestore delle interruzioni
• Driver logici (software): fanno parte del sistema operativo
e forniscono una gerarchia di operazioni, con un’
organizzazione a strati
4
Gestione della memoria centrale
• Tutti i programmi che compongono il
SO e i programmi applicativi attivi
usano contemporaneamente la RAM
• Il gestore della memoria si preoccupa di fare
condividere la RAM ai vari processi in esecuzione in
modo che:
 ogni processo abbia il suo spazio privato distinto dagli altri
(e inaccessibile agli altri)
 ogni processo abbia abbastanza memoria per eseguire il
proprio algoritmo e raccogliere i suoi dati
5
Gestione della memoria centrale
• La strategia più semplice (NON VA BENE!)
– ricopiare interamente lo spazio di indirizzamento di un
processo P dalla memoria secondaria alla RAM quando P
va in esecuzione
AmpiezzaRAM - 1
RAM vuota
Spazio Indirizzamento processo 2
Spazio Indirizzamento processo 1
Sistema Operativo
Area riservata, non accessibile
in modalità utente
0
6
La memoria virtuale




La memoria però deve essere gestita con molta
attenzione ed efficienza caricando solo i dati e le
istruzioni che devono essere modificate ed eseguite.
Le altre parti devono essere spostate sul disco per
poter essere caricate quando necessario.
La memoria virtuale è un sistema per aumentare lo
spazio di memoria disponibile.
La memoria virtuale è maggiore di quella fisica.
La gestione della memoria è coordinata con la
gestione dei processi.
7
Partizione della memoria


La strategia adottata: partizionamento della memoria e del
suo spazio di indirizzi mediante paginazione e/o
segmentazione (implementate anche contemporaneamente).
Tecniche di partizionamento:
•
•

Segmentazione: suddivide la memoria centrale in segmenti di
lunghezza variabili contenenti parti di un programma logicamente
correlati tra di loro
Paginazione: suddivide memoria e programmi in pagine di lunghezza
fissa
Sia nel caso della partizione, sia in quello della
segmentazione, il gestore della memoria offre al programma
applicativo la visione di una memoria virtuale
8
Tabella delle pagine


A ogni processo viene assegnata nella fase di partenza una
tabella detta tabella delle pagine dove per ogni pagina usata
dal processo viene scritto dove si trova la pagina fisica.
Se viene richiesto un indirizzo NON in memoria, si genera un
fault di pagina che provoca il caricamento di una nuova
pagina
TABELLA DELLE PAGINE
PAGINA VIRTUALE
PAGINA FISICA
TIPO PAGINA
Pagina 0
Pagina 3
RAM
Pagina 1
Pagina 20
DISCO
Pagina 2
Pagina 1
DISCO
Pagina 3
Pagina 2
RAM
9
Gestione dei processi: richiami
sulla classificazione dei S.O.

In base alla modalità di gestione dei programmi:



Monoprogrammazione: esegue un solo programma alla
volta)
Multiprogrammazione: esegue più programmi
apparentemente conteporaneamente, in time-sharing,
suddividendo il tempo di esecuzione in intervalli molto
piccoli e assegnando a turno le risorse ai diversi
programmi)
In base al tipo di accesso fornito agli utenti:


Monoutente: un solo utente può usare la macchina
Multiutente: più utenti possono contemporaneamente
interagire con la stessa macchina
10
Multiprogrammazione:
time-sharing



I concetti di mono e multi-programmazione sono
indipendenti da quelli di SO mono e multi-utente
I SO attuali operano tutti in multiprogrammazione
Quando si parla di multiprogrammazione si parla
anche di time-sharing: il sistema operativo che fa sì
che le risorse del calcolatore siano assegnate per
prefissati intervalli di tempo, in successione, ai
diversi programmi: gli intervalli di tempo possono
essere più o meno lunghi l’uno rispetto all’altro, a
seconda della priorità di cui gode il programma che
l'utente utilizza.
11
Sistema operativo in time
sharing


Permette la condivisione della CPU tra più processi
Ogni processo in esecuzione ha a disposizione un quanto di
tempo di utilizzo della CPU, al termine del quale viene
sospeso per lasciare il posto ad un altro processo in attesa
di esecuzione.
Processo 1
Processo 2
Processo 3
tempo
Fase di elaborazione
Attesa per quanto di tempo
scaduto o per operazioni di
I/O
12
Coda di scheduling
• In un sistema con un singolo processore e più processi non è
possibile avere più di un processo attivo in ogni istante di
tempo.
• È necessario eseguire i processi a per quanti di tempo e
prevedere un sistema di riordinamento (scheduling) delle
loro esecuzioni, che assegni loro tempo di esecuzione in
modo equo.
• I processi vengono fatti avanzare a turno, assegnando loro
un quanto di tempo per portarsi avanti nell’esecuzione.
• Si ottiene lo scheduling dei processi mediante una (o anche
più di una) coda di scheduling, in cui vengono inseriti i
processi che devono essere fatti aspettare.
13
Sistema operativo e macchine virtuali

In una macchina multiprogrammata il sistema operativo
gestisce più processi contemporaneamente, rendendo
visibile ad ogni processo una macchina “virtuale” ad esso
interamente dedicata e quindi con risorse proprie.
14
Sistema operativo e macchine reali

In una macchina multiprogrammata il sistema operativo
condivide le risorse tra processi.
15
Lo scheduler

Lo schedulatore (scheduler) è la componente del sistema
operativo che si occupa di spostare i processi tra le varie
code di attesa.
coda dei processi
in stato pronto
I/O
CPU
coda di I/O
richiesta di I/O
quanto di tempo esaurito
fine esecuzione
processo figlio
processo figlio
in esecuzione
fork di un
processo figlio
arrivo dell’interruzione
attesa di
un’interruzione
16
Sincronizzazione dei processi



A volte, i processi devono sincronizzarsi,
ovvero coordinare le loro attività
Il coordinamento sequenziale: un
processo termina invocando l’attivazione
di un altro processo
La competizione: due processi vogliono
accedere simultaneamente a una
medesima risorsa (risorsa critica)
17