Real-Time Operating Systems: A Primer