Che cos’è l’architettura S.Ha.R.K (Soft Hard Real-time Kernel)?
S.Ha.R.K. è l’acronimo di Soft Hard Real-time Kernel. Esso è più precisamente un kernel real-time didattico, sviluppato con l’obiettivo di facilitare l’implementazione e il test di nuovi algoritmi di scheduling, server aperiodici e protocolli di gestione delle risorse.
Nasce nel 2000 all’interno della Scuola Superiore Sant’Anna di Pisa e deriva da un vecchio progetto del medesimo istituto, HaRTiK. Attualmente è alla versione 1.5 ed è rilasciato sotto licenza GPLv2; il kernel supporta i drivers per la maggior parte dei dispositivi hardware, un’interfaccia modulare per la specifica degli algoritmi di scheduling e la gestione avanzata degli eventi temporali.
Si pone i seguenti obiettivi:
- Semplicità nello sviluppo di nuove applicazioni;
- Ampia flessibilità nella modifica delle politiche di scheduling;
- Aderenza allo standard POSIX.
Le principali caratteristiche di S.Ha.R.K. sono:
- Kernel fortemente modulare e leggero;
- Presenza di device drivers per l’hardware più comune;
- Interfaccia modulare per la specifica di politiche di scheduling della CPU;
- Interfaccia modulare per la specifica di politiche di gestione delle risorse condivise.
Architettura di S.Ha.R.K.
In altre parole, S.Ha.R.K. è un kernel ad architettura dinamica e configurabile creato per supportare applicazioni hard, soft e non real-time con algoritmi di scheduling intercambiabili. E’ interamente modulare in termini di politiche di scheduling, server aperiodici e protocolli per il controllo del parallelismo, cosa che in un sistema operativo tradizionale non è invece prevista. Tale modularità è ottenuta con il sistema di partizionamento delle attività tra un kernel generico e una serie di moduli che possono essere registrati in fase di inizializzazione per configurare il kernel in base a specifici requisiti di applicazione. Il maggior beneficio di questa architettura del kernel è che un’applicazione può essere sviluppata indipendentemente da ogni configurazione di sistema, così che nuovi moduli possono essere aggiunti o rimpiazzati nella stessa, in maniera da poter valutare gli effetti di una specifica politica di scheduling in termini di predicibilità, overhead e performance. Inoltre, il sistema è conforme a quasi tutte le specifiche POSIX 1003.13 PSE52.
Programmazione in SHARK
Il sistema SHARK supporta per la compilazione sia la piattaforma Windows con il compilatore DJGPP sia la piattaforma Linux con il compilatore GCC; l’host Windows, per l’esecuzione delle applicazioni realizzate, necessita di un programma di estensione del DOS, mentre Linux utilizza il bootloader GRUB.
La programmazione delle applicazioni viene fatta in linguaggio C; la struttura standard delle applicazioni prevede:
- un file di inizializzazione;
- un task di inizializzazione;
- una funzione principale, main, per la creazione dei vari tasks;
- una serie di tasks per effettuare le varie elaborazioni.