Progettare software affidabile sotto Linux PREEMPT_RT o RTOS richiede estrema precisione nei thread. Una singola inversione di priorità o page fault può ritardare lo sterzo di decine di millisecondi. Questa guida illustra le regole per priorità, locking e CPU pinning.
Le allocazioni dinamiche (malloc) in esecuzione generano page fault che bloccano i thread real-time per diversi millisecondi. In ambito automotive è d'obbligo invocare mlockall(MCL_CURRENT | MCL_FUTURE) prima di creare thread e preallocare stack e pool statici.
L'inversione di priorità incontrollata si verifica quando un thread di log tiene un mutex e viene interrotto da un task intermedio, bloccando il freno ad alta priorità. Lo standard POSIX risolve questo con PTHREAD_PRIO_INHERIT, elevando temporaneamente la priorità del thread.