Process & Thread Model

Originally, Bern RTOS was meant to isolate every thread. Communication was only possible through system calls. The disadvantage was inefficient messaging with a high kernel involvement. But more importantly, an issue emerged from the memory protection in use. The memory protection unit (MPU) on Armv7E-M Cores (Cortex-M3/M4/M7) requires memory regions to follow $2^n$ byte size and alignment rule. For example, if 8 kB of Stack is not enough, the next larger size would be 16 kB. Some finer granularity can be achieved using subregion disable bits [24, pp. 373]. However, that would increase the complexity of the alignment.

Instead, it was decided that multiple threads interacting with each other should share a common memory region. In accordance with general purpose operating systems, the naming adapted to processes and threads. The issue of memory size granularity still exists. However, as there are just a few processes instead of many threads, mitigating the effect of the issue.