-
Real-Time Model and Service Map in RK0
Recently, the real-time model used in RK0 and how it is reflected in the design choices was written down. RK0 is centred on the idea that concurrency needs are the unique commonality preserved across real-time systems, and therefore the kernel provides generic services that are just enough for the application to compose for its demands,…
-
Transitive Priority Inheritance on RK0 Mutexes
Priority inversion is a killer in real-time systems. It happens when a (TL) less-urgent task acquires a critical region before a more urgent one (TH). Any task more urgent than TL that does not need to acquire that critical region preempts TL. TH waiting time is now unbounded. That is a critical failure. The Priority…
-
RK0 V0.8.0 – A Message-Passing kernel, if you want.
NOTE: In version V0.16.0, the approach depicted here has changed. For procedure calls, the concept of CHANNEL has been implemented, and PORTS are no longer primitives in their own right. A PORT still can be seen as a Message Queue with ownership, but stops there, not advancing for Procedure Calls, the unique concern of CHANNELS.…
-
RFC: About Real-Time, Responsiveness and Throughput
I was reading a book provided by a mainstream real-time kernel (which I acknowledge as high-quality). When discussing time-slicing and periodic tasks, the book notes that not using time-slicing would result in decreased fairness for tasks with the same priority, and therefore, it is an ‘advanced technique’. I disagree with the term ‘advanced‘; I would…
-
About the Building System: How RK0 Gets Up and Running
This blog complements the earlier post âAbout Processes,âŻTasksâŻandâŻThreadsâ. That explained what runs in RK0; this one explains how the toolchain arranges it. In constrained systems such as those targeted by RK0, the boundary between software and hardware is blurry. The linker decides exactly where every byte of code or data will reside, and the startâup…
-
About Processes, Tasks and Threads
This blog provides a clear distinction on these terms often used interchangeably. Execution Image An execution image generated after compiling, assembling, and linking a C program has the following sections: These sections are statically allocatedâthat is, after creating the image, the addresses for the objects contained in the text, data, and bss sections are already…
