Historically, Linux comes from a desktop and server background. As such,
it assumes that in dire circumstances, it should do whatever is necessary
to preserve the integrity of the system. Linux assumes that individual processes
may be sacrificed for the good of the whole.
For example, when memory is over-committed (which more easily happens
if there is no paging device -- a common embedded configuration), Linux will
terminate user processes, particularly those with large amounts of memory,
in an effort to regain balance. In many embedded systems, however, these
are often the very processes that define the very purpose of the system.
Without them, there is no reason for the operating system to survive.
This feature in Linux is known as the Out Of Memory Killer
and is implemented in the kernel in the oom_kill() function. It is
one of several inappropriate assumptions that embedded system developers
1) should be aware of, and 2) modify to get a more appropriate behavior for
their embedded application.
Employing Linux in an embedded environment exposes your system to these
deep assumptions that are built into the kernel. Engineers who are unaware
of these traps will 1) be unable to avoid them, and 2) not recognize them
when they occur. RyteTyme shows you what and where they
are, and helps you figure out what your embedded system should do
about them.