Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
calcolo
Corso di
Progetto e Sviluppo di
Sistemi in Tempo Reale
Marcello Cinque
1
Fonti di non determinismo nei sistemi
di calcolo
l Sommario della lezione:
l Prevedibilità dell’hardware
l Prevedibilità del sistema operativo
l Riferimenti
l G. Buttazzo – Sistemi in Tempo Reale – Pitagora
Editrice (Cap. 1 – Par. 1.3)
l Ancillotti, Boari – Sistemi Operativi – Mc Graw Hill
(Cap. 1 – Par 1.3 e 1.4, Cap. 3 – Par. 3.4, Cap. 4,
Par. 4.2 e 4.3.3)
2
Prevedibilità
l La capacità di determinare in anticipo se uno o più
processi potranno essere completati entro i propri
vincoli temporali.
3
Fonti di non determinismo
l Dovute a meccanismi interni al processore:
l DMA, cache, MMU, interruzioni, pipelining, esecuzione
speculativa, …
l Sebbene tali meccanismi migliorino le prestazioni medie del
processore, introducono un non determinismo che può
allungare indefinitamente i tempi di risposta dei processi
4
Architettura di un sistema di calcolo
Memoria
Centrale Sensore Rete
RAM
Bus
Input/Output (I/O)
Tecniche di comunicazione di I/O
l I/O programmato
l I/O interrupt driven
P1
I/O controller
Periferica
PN
Polling a livello applicativo
I/O controller
P1
PS Periferica
PN
Polling di sistema
I/O controller
P1
PG Periferica
PN
attiva driver
INT
Driver minimale e processo gestore
IND
CONT
CPU CONT
dispositivo
E’ stato
l Tecnica stimato
motivatachedalcon unache,
fatto RAM di 1 MB e una gli
statisticamente,
chache
accessidi 8
piùKB, le informazioni
frequenti in memoriarichieste
da partedadiun
un
programma
programma sono limitati
vengono trovateadin
uno spazio
cache di delle volte
l’80%
indirizzamento
(hit ratio) ristretto, detto località del programma
Cache: funzionamento
l Ad ogni accesso in memoria, il processore controlla prima
nella cache.
l Se il dato è presente (cache hit), si accede direttamente alla
cache, altrimenti (cache miss), si accede alla memoria
centrale.
l Elemento di cache:
V Tag Contenuto
l Contenuto: blocco di locazioni contigue della memoria
l V: bit di validità, indica se il contenuto è valido
l Tag: identifica il contenuto con la parte comune a tutti gli
indirizzi delle locazioni del contenuto.
l L’accesso alla cache, con verifica della presenza del tag e
della validità, avviene in parallelo (accesso associativo)
Cache e prevedibilità
l Ci possono essere dei casi, non prevedibili, in cui le
prestazioni peggiorano
l Se per una particolare sequenza di istruzioni la
cache fallisce, il tempo di accesso in memoria si
allunga, a causa dei trasferimenti tra RAM e cache
l L’impiego è ancora più gravoso per le operazioni di
scrittura: le modifiche in cache devono essere
riportate in RAM per mantenere la consistenza dei
dati (cache coherence).
Cache: valutazione del WCET
l WCET: Worst Case Execution Time
l Nei processori dotati di cache, la valutazione del
WCET deve essere fatta supponendo che si abbia
un cache miss per ogni accesso in memoria
Al fine di ottenere un elevato grado di prevedibilità,
sarebbe preferibile usare processori senza cache!
27
Funzionalità di un SO
hardware
(CPU, memoria, dischi, terminali, …)
Kernel
Procedure Context_Switch
begin
Salva_stato
Scheduling
Ripristina_stato
end
In un sistema real-time, queste operazioni
vanno realizzate in un tempo stabilito, che non
deve dipendere dal carico del sistema
36
System Call (primitive di nucleo)
l Processi concorrenti
l Insieme di processi la cui esecuzione si
sovrappone nel tempo.
l Più in generale:
l in un sistema monoprocessore due processi si dicono
concorrenti se la prima operazione di uno comincia
prima dell’ultima dell’altro
41
… le problematiche
42
Un semplice Esempio
void incr()
{
a = getA();
a = a + 1;
setA(a);
}
‘a’ è una variabile
condivisa
43
Un semplice Esempio: P1 e P2 invocano
la medesima funzione incr()
Process P1 Process P2
. .
a = getA(); .
. a = getA();
. a = a + 1;
a = a + 1; .
setA(a); .
. setA(a);
45
I semafori
setA(a);
signal(mutex);
}
47
Esecuzione di incr() con semafori
Process P1 Process P2
. .
wait(mutex); .
a = getA(); .
. wait(mutex);
a = a + 1; .
setA(a); .
signal(mutex); .
. a = getA();
. a = a + 1;
. setA(a);
. signal(mutex);
48
Semafori e prevedibilità
S.O.
Processo 1
1000 1000
Registro Base
Processo 2
1120 120
Processo 3 Registro Limite
Hardware di rilocazione e protezione
(MMU)
memoria fisica
MMU
registro limite
6140 immagine processo
10240
indirizzo
eccezione
logico
CPU ≤ no
x = 4112
si indirizzo
fisico
+ y = 14352
14352
16380
10240
registro base
Paginazione
Pag 3 Pag 3
Pag 4 Pag 4 Pag 4
Pag 5 Pag 1
Pag 1
Pag 2
Pag 3
Pag 4
Pag 5
Paginazione: traduzione degli
indirizzi
l La corrispondenza tra pagine logiche e fisiche avviene
attraverso la tabella delle pagine
Pag 2 Pag 2
Pag 5
l Partizionamento statico:
l la quantità di memoria fisica richiesta da ogni processo viene
predeterminata prima dell’esecuzione
l l’immagine rimane allocata nelle stesse locazioni durante tutta
l’esecuzione;
l è realizzabile attraverso tecniche di rilocazione statica (codice
con indirizzi assoluti) che consentono anche di fare a meno
della MMU (sistemi no-MMU)
Prevedibilità e flessibilità