tech-embed archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Quick and dirty embedded OS

Hash: SHA1


the issue with not having (1), i.e. page tables via MMU, is threefold. First, one obviously loses memory protection. With well-written and reviewed code, this should not be impossible to overcome (to sufficient degree, depending on your application).

Second, all application code you run must be (statically linked, which I'll ignore as impractical for most purposes, or) relocatable - because the different instances cannot obviously see the same start address when memory is not mappable. Regular unix binaries by default aren't relocatable, but .so's are. Theoretically a single address space solution could be devised with proper compilation flags, and potentially modifications to the program loader. You can simulate this by writing a process which loads executable code dynamically from shared object files - into a single shared address space.

The third, and a much more complex issue, is the in-kernel memory management, such as allocating (and managing) the buffer cache memory. All such code relying on page mapping capabilities will need to be reimplemented for an MMU-less environment.


On Oct 19, 2004, at 20:50, Brian Rose wrote:

My understanding is that the MMU serves two functions.
(1) To provide the system processes with their own view of memory, such that each process feels that it has access to the entire address space.

(2) To provide an apparant memory greater than the installed physical RAM.

For embedded devices, (2) could be solved by not making a swap partition and essentially setting it to 0 (like a boot floppy image), correct? As for (1), is there any way to work around this? My guess is that emulating an MMU in software would eat up so much of the processor's time, that performance would be killed (if it is possible at all).

If (1) is discarded is it possible to still have multiple threads in the single process address space?
- --
Juha-Matti Liukkonen - Systems Architect, Cubical Solutions Ltd
tel: +358-40-5280142

Version: GnuPG v1.2.4 (Darwin)


Home | Main Index | Thread Index | Old Index