Question #6

Training

  • Linux
  • Hands-on
  • Embedded
  • Self-reliance
  • Start from scratch
  • Build from source
  • When, where and how to get help

Courses

Registration

Consulting

  • We do Linux
  • We do real-time
  • We document and debug
  • We build embedded systems
  • We do really small PICmicro, too
  • And, we deliver

More Information

What assumptions does Linux implement within its kernel that are violently inappropriate for embedded systems?

Answer

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.



Do you know what's really inside your closed source RTOS?
Linux and open source evolve faster than any other OS in the world.

© Copyright 2003 by RyteTyme
All Rights Reserved
Revised 10-March-2006