RTEMS: Open-source real time operating system
rtems.org
rtems.org
RTEMS Real Time Operating System - https://news.ycombinator.com/item?id=32327518 - Aug 2022 (48 comments)
Thoughts on Supporting Rump Kernels on RTEMS - https://news.ycombinator.com/item?id=9086016 - Feb 2015 (1 comment)
Back then, I worked on porting it to some proprietary hardware. Was definitely an adventure!
I’d previously ported pSOS to a proprietary 68k board (different company) and that was a walk in the park by comparison.
One thing I like about RTEMS is the BSD affinity, https://gitlab.rtems.org/rtems/pkg/rtems-libbsd it seems like a pragmatic way to get some of the desired features.
0. https://sel4.systems/Foundation/Summit/2024/abstracts2024
- Real-time is about guaranteed response times
- What are the guarantees of real-time Linux?
I don't think I have ever read about the latter. Maybe because real-time Linux is barely used where real-time behavior has more important consequences than audio dropouts. And it's difficult on PC hardware with stuff like surprise system management mode intervention, various hardware probably hogging some bus sometimes...
A concrete example: if you're in a car (an embedded system doing many things at once) and press the brakes, you want the car to be as responsive as possible. A real-time operating system will sacrifice other features of a general purpose OS to guarantee that the brakes are applied within a specified time interval after you press them.
Also, there are responses to a similar comment from when this was previously posted: https://news.ycombinator.com/item?id=32329499
A realtime OS makes some guarantees about the timeliness of things like interrupt service routines, and that necessarily excludes unbounded and unknown workloads from getting in the way -- something that every general purpose or soft realtime OS struggles with as the lack of determinism can improve throughput and scalability.
Whereas in non-RT systems, a process may «overstay the welcome», and the time slot it has been allotted may lengthen (e.g. due to a computationally intensive unit of work or a blocking I/O operation) at the expense of other processes waiting in the scheduler run queue.
So non-RT kernels operate on the best effort basis («I will try my best to ensure each time slot has the same duration») vs guaranteed preemption in RT kernels («I hereby underwrite a guarantee that each time slot has the same duration and pledge that offending squatters will be evicted»).
Other than an example with the car, real-time processing is important in the audio engineering or processing where an audio stream will stutter in a non-RT operating system. There are other similar scenarios as well.
They don't care about cache hits and branch predictions, so whatever you do with pulsating fuel pressure or flowing back regen electricity better happen predictably on-time than just ASAP off quuees. RTOS offer you that stability in time direction.