Sistemi real-time Sistemi real-time: la loro correttezza di funzionamento dipende dalla consistenza logica delle operazioni eseguite dalla tempestività di produzione dei risultati. I risultati delle elaborazioni svolte in risposta ad un certo evento devono essere prodotti entro un intervallo di tempo determinato, detto deadline. Un risultato prodotto oltre la deadline: inutile o addirittura controproducente per il funzionamento del sistema stesso. Es.: sistemi di controllo del traffico aereo, sottosistemi utilizzati per il controllo di automobili, sistemi di difesa anti-missile, automated manufacturing, etc. Eventi che determinano l'innesco dell'azione: -periodici -aperiodici (occasionali, non previsti) -sporadici (ricorrenti, ma non in modo regolare) 1 Sistemi real-time In base all'effetto del mancato rispetto delle deadline associate alle operazioni i sistemi real-time si classificano in: Sistemi soft real-time: possono tollerare una violazione occasionale di una deadline anche se ciò degrada le prestazioni del sistema. Esempio: sistemi di commutazione telefonica, sistemi di trasmissione video o audio, automated manufacturing , etc. Sistemi hard real-time: le deadline imposte dalle applicazioni supportate devono essere sempre rispettate, pena l’insorgere di situazioni critiche o addirittura pericolose (perdita di vite umane, catastrofi ambientali). Esempio: sistemi di controllo del traffico aereo, dei reattori nucleari, degli impianti industriali; sistemi di difesa, etc. Talvolta i sistemi real-time comprendono sottosistemi hard real-time e sottosistemi soft real-time. L’obiettivo primario nei sistemi real-time è garantire la correttezza temporale di funzionamento (timeliness) del sistema. Nei sistemi convenzionali, invece, si tende in genere alla massimizzazione del throughput. 2 Sistemi real-time In un sistema real-time, accanto alle attività caratterizzate da un vincolo temporale (sia hard che soft) esistono anche altre attività non tempo-critiche. Un sistema real-time ideale dovrebbe: • garantire che tutti i processi tempo critici rispettino le loro deadline • minimizzare il tempo di risposta medio dei processi non tempo-critici. Real-time computing is not fast computing!! 1. il concetto di tempo reale è relativo alla dinamica dell'applicazione controllata e non tutte le applicazioni richiedono elevate velocità di esecuzione. 2. Un’elevata velocità di esecuzione non basta da sola a garantire il rispetto delle deadline → nel progetto dei sistemi real-time è necessario rivedere le strategie di schedulazione e di gestione delle risorse adottate nei sistemi di elaborazione convenzionali ed introdurre nuovi concetti e paradigmi. 3 Problematiche di progetto e di ricerca nei sistemi real-time: Progetto di sistemi operativi in grado di garantire un’esecuzione prevedibile in ambienti sia paralleli che distribuiti. predicibilità: caratteristica fondamentale che un sistema operativo real-time dovrebbe possedere. Nei sistemi operativi convenzionali le attese (wait) su risorse o eventi possono essere arbitrariamente lunghe. Un sistema operativo real-time deve esibire un comportamento predicibile → eseguire le primitive di sistema entro dei ben specificati limiti temporali. 4 Problematiche di progetto e di ricerca nei sistemi real-time L’ambiente real-time necessita di funzionalità per realizzare: - cambiamenti di contesto (context switch) veloci -una gestione degli interrupt rapida e predicibile - un’efficiente schedulazione in presenza di vincoli sul tempo e sull’affidabilità. Obiettivo di un sistema operativo real-time: gestire ed assegnare le risorse in modo da rispettare i vincoli temporali delle applicazioni real-time. Vanno definite politiche di allocazione delle risorse e schedulazione dei processi tali da assicurare il rispetto dei vincoli temporali. Si cerca di determinare in anticipo tutte le risorse di cui il processo avrà bisogno nel corso della sua esecuzione, non solo in termini di CPU (worst case execution time), ma anche di I/O, file, etc. 5 Caratteristiche dei task nei sistemi real-time I task real-time • • sono attivati da eventi che possono essere: • periodici • sporadici (esiste un minimo tempo di interarrivo) • aperiodici (occasionali) sono caratterizzati da: • deadline d: di tipo • hard • firm • soft • tempo di arrivo a: t. in cui diventa ready to run (chiamato tempo di richiesta per le istanze di task periodici) • tempo di esecuzione C: t. necessario alla CPU per eseguirlo completamente senza interruzioni • start time s: t. in cui va in run per la prima volta • finishing time f: t. in cui termina la sua esecuzione • laxity (slack time) LX: LX=d-a-C ritardo di attivazione max che un task attivo può subire nella ready queue per non violare la sua deadline • value: importanza relativa del task all'interno di una classe di criticità 6 Ad ogni task value_function real-time è associata una Value function: esprime il l’andamento del beneficio che il sistema trae dal completamento del task in funzione del tempo. Il value di un task completato all’istante t è dato dalla sua value_function calcolata a quell’istante. hard real-time tasks value value d d time time soft real-time tasks value d time firm real-time tasks value d time 7 Schedulazione dei task nei sistemi real-time Definizioni Processo (task): sequenza di istruzioni che, in assenza di altre attività, viene eseguita dal processore in modo continuativo fino al suo completamento. Processo attivo: potenzialmente in grado di eseguire su un processore. Se può usare il processore va in esecuzione Se deve attendere viene accodato nella ready queue Schedulazione: processore assegnamento dei task al Gli algoritmi di schedulazione real-time possono essere classificati in: - preemptive o non-preemptive - statici o dinamici - off-line o on-line - best-effort o guaranteed Hp. ad ogni task real-time è assegnata una priorità. 8 Schedulazione dei task nei sistemi real-time Preemptive: un task T1 in run può essere sospeso temporaneamente in seguito all'arrivo di un altro task T2 a priorità maggiore, e la sua esecuzione potrà riprendere solo quando non ci saranno task a priorità maggiore pronti per l'esecuzione Non-preemptive: una volta che un task T1 è andato in run, continua a tenere il processore per tutta la durata dell'esecuzione Problema: inversione di priorità On-line: la schedulazione viene decisa durante l'esecuzione. All'occorrenza di un evento: un algoritmo on-line preemptive decide "al volo", cioe’ a run-time, se eseguire il primo task associato all'evento occorso o continuare l'esecuzione del task corrente; un algoritmo on-line e non-preemptive registra il fatto che un nuovo task (quello associato all'evento) è runnable, e deciderà quale task mandare in esecuzione solo dopo la terminazione del task corrente. Off-line: la schedulazione (preemptive o nonpreemptive) viene decisa prima dell'attivazione dei processi, sulla base di informazioni note a priori, e memorizzata in una tabella di schedulazione, che a run-time viene eseguita da un dispatcher. 9 Schedulazione dei task nei sistemi real-time Statici: la schedulazione viene decisa in base a parametri fissi, che sono assegnati ai processi una volta per tutte prima della loro attivazione Dinamici: la schedulazione viene decisa in base a parametri dinamici, che possono variare durante l’esecuzione dei processi. Best-effort: la schedulazione viene decisa in base ad una funzione di costo definita globalmente su tutto l’insieme di task. Privilegia le prestazioni medie dell’insieme, piuttosto che garantire i vincoli temporali di ogni singolo task. Guaranteed: la schedulazione viene decisa in modo da garantire individualmente il rispetto dei vincoli temporali di ogni singolo task. Utilizza un test di garanzia, che viene eseguito sull’insieme ogni volta che un nuovo processo entra nel sistema. 10 Test di schedulabilità Obiettivo degli algoritmi di schedulazione nei sistemi real-time è garantire il rispetto delle deadline dei task Occorre un test di schedulabilità per stabilire se possa esistere o meno una schedulazione che raggiunga tale obiettivo. Hp. In un sistema real-time periodico costituito da m task ed N processori Pi: periodo del task i Ci : il tempo di computazione del task i L'insieme di task è schedulabile nel sistema in esame se risulta verificata la seguente condizione: m Ci µ=∑ ≤N i =1 Pi µ è l'utilizzazione del sistema. Es. 1 task con Ci=10 ms, Pi=20 ms → µi=0.5 CPUs 5 task del genere richiedono un sistema con 3 CPU. Il valore 3 ottenuto dalla condizione è un lower bound sul numero di CPU necessarie, perché non tiene conto del tempo di commutazione tra i task e di altre possibili fonti di overhead. 11 Schedulabilità nei sistemi real-time Un insieme di task è schedulabile se per esso esiste una schedulazione fattibile, cioè se esiste un assegnamento di task ai processori tale che tutti i task dell'insieme terminano entro le deadline. Algoritmo ottimo (in generale): massimizza o minimizza una data funzione di costo definita sull'insieme di task Algoritmo ottimo (nel senso della schedulabilità): Se un insieme di task è schedulabile con un generico algoritmo A, allora lo sarà sicuramente anche con l'algoritmo ottimo. Viceversa, se un insieme di task non è schedulabile con l'algoritmo ottimo, tale insieme non sarà schedulabile con nessun'altro algoritmo. 12 Test di schedulabilità Fattore di utilizzazione U di un insieme di task periodici: frazione di tempo utilizzata dalla CPU per eseguire l'insieme di task. Se i task sono n, n U= ∑ i =1 Ci Ti Dato un insieme di task periodici da schedulare e un algoritmo di schedulazione, è possibile calcolare il limite superiore Uub (upper bound), oltre il quale U non può più crescere, altrimenti la schedulazione di quell'insieme diventa non fattibile. Per un dato algoritmo A si definisce limite superiore minimo (least upper bound) Ulub(A) del fattore di utilizzazione il minimo tra i fattori di utilizzazione calcolati su tutti gli insiemi di task che utilizzano pienamente il processore. Dato un algoritmo di schedulazione su un set di task il processore è pienamente utilizzato dall' insieme se la schedulazione è fattibile e un aumento comunque piccolo del tempo di calcolo di un qualsiasi task rende la schedulazione non fattibile. Un insieme di task periodici è sicuramente schedulabile con un algoritmo A se risulta verificata la seguente condizione: U≤Ulub(A) Un insieme di task periodici non è schedulabile se U>1 13 Algoritmi di schedulazione task periodici Ipotesi: 1. periodo costante nel tempo, 2. tempo di esecuzione costante da istanza ad istanza, 3. deadline = fine del periodo corrente, 4. task indipendenti. Rate-Monotonic (RM) usato solo per la schedulazione di task periodici assegna le priorità in modo direttamente proporzionale alla frequenza di arrivo (1/T) essendo il periodo fisso, la priorità è fissa: alg. statico preemptive 14 RM è un algoritmo ottimo: se un insieme di task non è schedulabile con RM, non sarà schedulabile con nessun'altro algoritmo a priorità fisse.[Liu,Layland,1973] Ulub(RM)= n (21/n - 1) per n=2 Ulub=0.83 n=3 Ulub=0.78 n=4 Ulub=0.76 per grandi valori di n, n→∞ Ulub=ln 2 ≈0.69 Per un generico insieme di task RM garantisce la schedulabilità fino ad un'utilizzazione della CPU del 69%. Per insiemi di task con U maggiori, RM non garantisce una schedulazione fattibile. 15 Earliest Deadline First (EDF) Si utilizza sia con task periodici sia con task non periodici La priorità maggiore è data al task con deadline più imminente Preemptive: se arriva un task con deadline<di quello in run, quest'ultimo viene sospeso. Altrimenti lo scheduler aggiunge il nuovo task alla lista dei processi pronti. Conviene tenere tale lista ordinata per deadline. Se la lista dei processi pronti non è ordinata per deadline la complessità è O(n) Se le lista dei processi pronti è ordinata per deadline la complessità è O(n/2). EDF è un algoritmo ottimo tra tutti gli algoritmi ad assegnazione dinamica [Liu e Layland, 1973]. Un insieme di task periodici con periodo fisso è schedulabile con EDF se e solo se: n U= ∑ i =1 Ci ≤1 Ti 16 Esempio Dato il sistema di task periodici Ci Ti τ1 1 5 τ2 2 7 τ3 4 9 il fattore di utilizzazione U = 1/5 + 2/7+ 4/9 = 0.93 (93%) La schedulabilità dell'insieme di task non è garantita con l'algoritmo RM (U>0.78), mentre è sicuramenrte fattibile con EDF (U<1). Ciò perché EDF è dinamico. 17