In modern operating systems running on hardware that supports an MMU (short for memory management unit), each application runs as a process and has its memory isolated from other applications.
Such isolation brings important reliability benefits. An application cannot accidentally corrupt the memory of another application. Similarly, an application that accidentally corrupts its own memory and crashes can be shut down by the operating system without affecting other applications in the system. Decoupling the functionality of the embedded system into several isolated applications that communicate with each other over a well-defined API significantly decreases the complexity of the implementation, resulting in improved stability.
The isolation, however, incurs costs. Since each process has its own isolated address space, data exchange between two applications...