Micrium, the company that sells the very popular µC/OS-II real-time operating system, now has versions of that RTOS for many processors that have either a memory management unit (MMU) or a memory protection unit (MPU).
I'll get to some details about MMUs and MPUs shortly. But first let me paraphrase an interesting conversion I had with Jean Labrosse, Micrium's president, about his philosophy about the use of a memory manager.
Jean feels that the primary reason to use an MMU is so separate multiple applications running on one CPU. If you have, say, a safety-critical controller and an entertainment system, using an MMU means one can certify the controller's code, and not have to re-certify it if the entertainment component gets changed. He complained that some (he was kind enough not to point the finger at me, but he could have) advocate using the MMU to save a system when it crashes. The MMU prevents a rogue task from overwriting any other task's memory space. There's a good chance that when things go wrong, the task will try to wander off to another space and the MMU can trap the problem and initiate recovery.
Jean is an old friend, so I could give him some amiable abuse. "You're just showing your philosophy about software," I railed. "You're totally intolerant of bugs. Your standard is perfection. That's unheard of in this industry."
In IEEE Computer in January, 2004, Jesse Poore wrote: "Theoretically, Software is the only component that can be perfect, and this should always be our starting point." Software is an odd thing. It's not real; it has no form. Everything in the physical world is full of flaws. Bearings wear, people age, bulbs burn out, and plastic deteriorates. But software, if created perfectly, never wears out.
In general, software isn't perfect, of course. It's created by those aging human beings who make mistakes. Programming requires enormous skills. Programs are some of the most complex of all inventions. The field is young and there's much we have yet to learn.
Perfection is penalized. Windows is hardly ideal, yet Microsoft is by any measure the most successful software company of all time. Capitalism doesn't, it seems, reward getting it right. Profits seem to come from "good enough."
Of course, that's not completely true. The avionics on a commercial airliner better be really good or the vendor won't survive the onslaught of lawsuits.