Sistemi real time Linux-based

Pubblichiamo un guest post di Emanuele Rampichini

Ricordando i presupposti di cui abbiamo discusso nel precedente articolo vediamo ora cosa il panorama open source offre nell’ambito dei sistemi operativi in tempo reale.

Possiamo considerare una suddivisione in due macro aree per quanto riguarda questi tipi di sistemi:

  • SISTEMI OPERATIVI ADATTATI A PARTIRE DA PROGETTI NON PENSATI PER IL TEMPO REALE
  • SISTEMI OPERATIVI IN TEMPO REALE DEDICATI SCRITTI DA ZERO

La scelta dell’uno o dell’altro approccio porta ovviamente con se vantaggi e svantaggi che vanno valutati attentamente. Per esempio l’utilizzo di sistemi adattati può permettere di ereditare un supporto hardware e software molto ampio senza troppi sforzi (anche se in realtà spesso la gestione di alcune periferiche necessita di una riscrittura completa dei driver per venire incontro alle esigenze del tempo reale).

D’altro canto sistemi specializzati nascono con in mente ben fissi obbiettivi e vincoli così da incarnare al meglio quello che un sistema operativo del genere dovrebbe essere (pensiamo per esempio a footprint minime nell’ordine dei 2-4 KiB impensabili per sistemi adattati).

Oggi presenteremo alcuni di quelli appartenenti alla prima categoria e nello specifico quelli in qualche modo legati al kernel linux.

Il problema principale che il kernel linux presentava quando è iniziato lo sviluppo di tali sistemi (intorno al 2000, quindi agli albori della serie 2.4 del kernel di Torvalds) era legato al fatto che la maggior parte del codice al suo interno fosse non-preemptive.

In parole povere alcune parti del codice del sistema operativo una volta sulla CPU non potevano essere interrotte in alcun modo. Si capisce come questo tipo di comportamento poteva provocare in alcune situazioni latenze inaccettabili per le problematiche tipiche del tempo reale (in alcuni casi anche di decimi di secondo).
Vediamo ora le soluzioni aperte più conosciute che hanno affrontato questo problema:

RTLINUX
RTLinux nasce presso l’università del New Mexico per mano di Victor Yodaiken. Il problema della preemption in questo caso viene risolto con uno stratagemma molto intelligente: far girare il kernel linux come un semplice processo in background sopra ad un micro kernel realtime. Tecnicamente è stata implementata una emulazione software del controllo delle interruzioni. Quando il kernel linux invierà un comando per disabilitare le interruzioni questo sarà catturato dal sistema operativo real time sottostante che potrà gestire la chiamata senza interferire in maniera non prevedibile con i processi in tempo reale. Nel 2007 il progetto è stato acquistato dalla Wind River ma viene comunque mantenuta una doppia versione free e commerciale.

RTAILINUX – Real Time Application Interface Linux
RTAILinux è un progetto Italiano nato nel Dipartimento di Ingegneria Aerospaziale del Politecnico di Milano per mano di Paolo Mantegazza. Anche in questo caso l’idea alla base è la stessa di RTLinux. Il compito di gestire linux o altri sistemi operativi come task in background è affidato al nanokernel Adeos (anche questo un progetto free e open source). RTAI viene rilasciato sotto forma di patch da integrare nel ramo ufficiale del kernel linux. Da notare anche la presenza di un corredo di librerie e strumenti per l’interfacciamento con l’hardware e con software come simulink, matlab o scilab molto utili per facilitare la vita dei programmatori.

LINUX
“Ma come linux?” vi starete chiedendo “Non eravamo d’accordo sul fatto che non fosse adatto per l’ambito real time?“.Ovviamente negli ultimi 10 anni di evoluzione del kernel linux ufficiale sono stati fatti passi avanti di cui va tenuto conto. A partire dalle patch low-latency di Ingo Molnar e Con Kolivas passando per l’inclusione del Complete Fair Scheduler dalla versione 2.6.23 (sempre da parte di Ingo Molnar) fino ad arrivare alla  recente implementazione sperimentale dell’algoritmo di schedulazione EDF (uno dei più importanti algoritmi di scheduling per sistemi real time). I lettori più attenti avranno notato sbirciando nella pagina su github linkata poco sopra i nomi di chi sta lavorando all’implementazione di EDF come Dario Faggioli dottorando all’Università di Siena, il già citato Ingo Molnar e Linus Torvalds stesso. Nomi che fanno ovviamente ben sperare per una eventuale inclusione futura dell’implementazione nella mainline del kernel linux. Personalmente credo che tale evenienza darebbe senza dubbio un bello scossone a tutto l’ambiente considerando che in moltissimi casi il kernel ufficiale ha saputo essere l’accentratore ideale degli sforzi comuni di aziende e appassionati.

Sperando di aver incuriosito qualche lettore e di non averne fatti addormentare troppi vi do appuntamento alla prossima puntata in cui verranno presentati alcuni tra i sistemi operativi open source in tempo reale scritti da zero.

Press ESC to close