mercoledì 17 febbraio 2010

Perche' Linux non e' hard real time

Prima di tutto, bisogna convincersi che Linus Torvalds non e' un coglione: dietro ogni singola linea di codice ci sono profonde considerazioni; considerazioni sue, e di chi e' venuto prima di lui.

Avere un sistema operativo con funzionalita' hard real time vuol dire essere in grado di fornire delle garanzie dure sulla tempistica di esecuzione di uno o piu' processi.
Quindi si deve per forza accettare che le risorse di sistema possano essere monopolizzate da uno o piu' processi che hanno elevate priorita' di esecuzione. Tali processi hanno una priorita' elevata perche' si vuole dare delle garazie della loro completa esecuzione in tempi prestabiliti.

Il determinismo nell'esecuzione e' indispensabile per poter applicare le moderne teorie di controllo digitale. Esse si basano su di un assioma semplice quanto "duro": il processo sara' eseguito con una certa cadenza periodica (fissa o variabile) e avra' una durata predeterminata.

Accettare queste specifiche significa accettare la possibilita' che qualche processo, con priorita' bassa, non vada MAI in esecuzione, perche' la CPU risulta sempre occupata con i processi ad alta priorita'.

Questo e' esattamente quello che Linus non vuole! Lo scheduler di Linux funziona con un sistema di priorita' dinamiche ("the elevator" , l'ascensore) che assicurano l'esecuzione (prima o poi) anche dei processi a priorita' bassa.

Per cercare di spiegare meglio la cosa bisogna capire che esistono due tipi di attivita' che richiedono due diversi approcci:

1. Non ci sono deadline (limiti temporali invalicabili). Se la Moglie arriva tardi all'appuntamento, non e' che ci scappa il morto (di solito).

2. Se un sistema di controllo di una centrale nucleare non reagisce in tempi prestabiliti, il reattore fonde. In questo caso di morti ce sono. E tanti.

L'attivita' (1) e' tipica del mondo civile, mentre la (2) e' tipica di quello militare. Infatti il compito dei militari e' difendere la democrazia, non applicarla. Una organizzazione che richiede - per sua natura - una risposta in tempi prestabiliti, deve essere necessariamente piramidale e non democratica (al suo interno).

Linus, che e' un ex militare pure lui, ha capito bene questa cosa ed e' per questo che si e' sempre opposto all'introduzione di funzionalita' hard real time nel kernel. Inoltre, la presenza di funzionalita' hard real time implica un ulteriore - potenziale - enorme falla di sicurezza.

Ma non per questo Linus ha impedito ad altri di fare delle patch hard real time per Linux.

Volete l'hard real time per forza? Con RTAI potete averlo :-).

Nessun commento:

Posta un commento