This is the main article describing Mutant OS. Mutant OS is an Event Based Operating System based on Evolutionary Artificial Life. The OS would be self correcting and adapting without human intervention.
- 1 Inspiration
- 2 Documentation
- 3 Biology
- 4 Advantages
- 5 Distributed Systems
- 6 OS Study
- 7 Development
- 8 Problems
- 9 Solutions
- 10 Random Ideas
- 11 Assorted Notes
- 12 Internal Links
In searching for a radically new programming and OS paradigm replacing the kernel with pond scum is the best option. This design emphasizes robustness and adaptability. Speed is not a goal. Ultra reliable performance is.
Mutant OS described in images and words.
Symbols used in Mutant OS Gallery. Starting with the "Happy Mutant" logo.
- Mutant OS - current name
- Rainforest OS - possible future name
- Mutant OS language - looking for a good name.
- Use Swahili words to name elements in the Kiwanja.
- Species Names - Use 3-8x[A-Za-z0-9] format for
Mutant OS Wiki
Documentation will grow into its own wiki at some point.
- Autotroph feeds directly from the environment.
- Heterotroph feeds from the waste produced by Autotrophs.
- Predation feeds directly on other creatures.
Procedural OS Replacement
In multi-core, multi-processor computers the traditional Procedural OS is obsolete. Problem is, there is nothing suitable to replace it. Like the horse for military use. The automobile made the horse obsolete around 1914. But here was no suitable replacement for the horse until the Jeep in 1941.
Wonderful. What do we replace it with? With Living organisms arranged in classes/species hierarchies with each level having increasing rights as you move from the bottom to the top. OS level species at the top. User species that work directly with OS species, the old Kernel modifications, work at a lower level. If they misbehave the OS species terminate them.
Biology will be the natural analog for Mutant OS. Including Digital DNA, breeding, mutation, sex, with variable parents, environments, niches.
Biology as Reactivity ACM October 2011, p. 72 ACM 2011 10 Modeling biological processes requires state-centric and continuous-centric methods. Nature uses multiple inheritance, OO must figure out a good way to do the same thing.
The Clocks Within Us Scientific American February 2015 p. 50. Chronobiology. The clocks in various tissues and organs are not in sync, tick at different rates, but do cooperate.
Why Not Immortality? ACM 2013_12 p. 29 argues that death is natures way to clear out old life that is too expensive to maintain. Applying the same economic logic in buying a new car to replace one that is too expensive to maintain.
Organic Computation software features:
2 self-configuration (auto-configuration)
3 self-optimisation (automated optimization)
5 self-protection (automated computer security)
7 context-awareness - self-aware: Here, the software 'KNOWs' the difference between its memory space and other memory spaces.
Features I added:
8 consume energy - as allocation of computer resources, memory, cycles, etc.
9 Death from starvation from computer resources, memory, cycles, etc.
10 reproduction - produces off-spring
11 mutation - off-spring may or may not differ from the parent.
- Infinite upward scaling.
- Infinite downward scaling. Cloud computing requires upward and downward scaling.
- Adapts to changing conditions without human intervention.
- The harder it works, the stronger it gets.
There Is No Now Communications of the ACM - May 2015 p.36 by Justin Sheehy
The article describes the difficulties in coordinating events in a distributed system using clocks synched together. The problem is that some clocks will drift, thus fouling the coordination. This reminded me about the problems we had synching mechanical watches. Getting two to agree within a minute was impossible. The variance increased with the increase in distance between the clocks. Electronic clocks pushed the variance to within a second. Atomic clocks pushed it many decimal places to the right. But there is always a difference.
The next idea is 'Adversarial', how hostile is the network? From a low with ordinary failures to actively hostile elements wrecking intentional destruction.
How adversarial is Mutant OS? It starts low, then increases when predation appears.
P. Detusch Eight Fallacies of distributed Computing
Fischer, M.J., Lynch, N.A. and Paterson, M.S. Impossibility of distributed consensus with one faulty process. JACM 32, 2 (1985), 374–382;
Rotem-Gal-Oz, A. Fallacies of distributed computing explained
Lamport, L. The part-time parliament. ACM Trans. Computer Systems 16, 2 (1998), 133–169;.
How is the distributed system kept consistent?
You don't. Consistency is not a goal. Therefore order is absent.
Clocks? There are many different kinds, from crude ones that tick four times a year, to atomic ones.
How complex can behavior get without a clock?
This would be a "most calculations are wasted" system. Since most creatures would die without producing a result.
Mutant OS is a distributed system on two levels.
A peer-to-peer system within a computer.
A peer-to-peer system between computers.
- Inside Kernel vs. Outside Kernel
- Operating Systems Courses
- Need a Process centric OS.
- Thread centric model failed for BeOS because it was incompatible with everything.
- Use Erlang as a model for message passing. This means adding an 'email' and mailbox for each pid.
- Message Passing 
This means everything in memory is identifiable with a PID.
Above the kernel is the OS Services layer.
Can we get away without a kernel?
What does a kernel do?
- CPU/Motherboard - environment
- Memory - environment
- Devices - environment(s)
- Inter Process Communication
- Hardware Interrupts
- System Calls - environment
- File System - environment
Boot Process - not environment
Microkernel - that evolves.
Separate mechanism and policy. Mechanism is artificial life. Policy is the environment.
SASOS -- no kernel at all.
Top down design. Bottom up implementation. Descartes Atom. This will require creating at least one new programming language. The first is called Mutant Language
Are there any Event Driven OS or program languages this size? Erlang is a good event driven language.
Data granules as an independent thread. "One's poop is another's food." "One's offspring is another's food."
Mutant OS needs a real-time database with low latency and high throughput that can model the Hardware state, OS state, and Software state.
The programming language and the database schema must use the same type definitions for consistency.
Versioning? Useful, research that.
No-Delete? Not necessary and an extreme time and space hog in a Artificial Living environment.
The DB must hold the OS state at a given time-slice. Continuous isn't a requirement if the time-slices are close enough apart. Now how is close enough? Enough so the OS can recover from a crash after rebooting without compromising application or data integrity.
Everything is 64-bit.
Use IEEE 64-bit float, as used in Erlang.
Smallest time - one clock-tick
Smallest distance - 64-bit float with its smallest positive number. So all distance measurements are signed floats.
The animate software lives in a simulated physical world called Kiwanja. Here, Kiwanja is used in the Earth sense, to mean the entire environment. Swahili words will be used to name features in this environment.
Kiwanja version 1.0 will be a simple Bahari cube. Basically a saltwater fish tank. Each creature will expend energy points to move, capture, and digest food. Starting with fully-formed Bacteria is making a great evolutionary leap, but I need to start with something I can simulate easily and fulfills the Autotroph Phase.
New Problems this creates
- Movement mechanism
- Sensory mechanism
- Digestion mechanism
Less digitalmass, but it moves faster.
The most digitalmass occurs here.
Erlang uses a mailbox system for each process to pass messages. Therefore global variables are not needed. Expand the mailbox system to include a profile for each process that includes species, and other identifiers. May need a separate database just for this.
- How to secure the output?
- Use an encryption key to verify the originator is requesting it. This assumes a Kerberose type soft server integrated with the OS.
The central issue with testing a new OS that displays different behavior every time it runs. Running it in a virtual memory space inside a known-good host OS, Mac 10.x or UNIX, provides a platform. This requires writing interfaces in the host that Mutant OS can interact with.
How is success or failure defined in software that changes every time it runs?
A behavior range must be specified with clear criteria for success or failure.
- Make sure Test and Host OS setting are saved for each test for comparison.
How is a partial OS tested? Being that it is totally different? Create a virtual OS with test code to simulate the missing pieces.
- Atomization Problem What is the atom for this OS? A thread. Everything is a thread as in BeOS.
- The Fission Problem But a single-threaded program can be massive with a millions code lines. In Biology a cell size is limited by how fast diffusion can carry material around. In Software this would be communications within an executing thread. Maybe some speed/access ratio will work. Keep thinking on it.
- Need a word to distinguish Artificially Living Software from Ordinary Software. Inanimate is the best I've come up with so far. But it isn't satisfying at all.
- How to model an OS on a rainforest?
- Communications between Artificial Life Forms (ALF)
- The German Ambassador Problem How to communicate between the conventional environment and the Artificial Life environment? This is called the "German Ambassador Problem." England's King George III experienced dementia spells. Sometimes lasting weeks or months. During one spell he was at a lawn party and addressed an oak tree, thinking the tree was the German Ambassador. Hence, how does anyone ask a rain forest a question, then listen hard enough for a response. Communications between DLFs and ordinary programs. How do DLFs react to and with a PERL script?
- Interface with the hardware and CPU. We'll call these Rocks, immovable with consistant behavior.
- What is the mutation rate?
- Reproduction by Fission
- Reproduction by sex
- Food/Life points for starvation.
- Need Aging points for limiting longevity.
- Better motivators than food and reproduction will be needed to encourage more sophisticated behavior.
- Updating a species. A Virus will be needed. Infecting and changing each species member and dying when no unchanged ones are left.
- How do you apply a patch to a species?
- With a virus.
- By introducing a better species.
- How to purge a species from the OS? Maybe you can't. Like crabgrass it may hang around forever.
- The species must be saved, somewhere, between boots. Search and Delete.
- The Passing an Algorithm Problem How do you express an algorithm, like A*, in biologic terms?
- DLF species in the thousands will be needed. An automated method for producing them is needed.
- A transactional system is needed. For example, a mouse eating cheese does not need to know where the cheese came from, or what it's name is. By name I mean Process Identifier (PID).
- Tracking Fecal Matter through the Rotary Oscillator Problem How to track, or get back, data submitted to the Artificial Life environment? For testing purposes tracking data flow is critical. Once the answer is returned, all redundant copies must be eliminated.
- Configuring a rainforest? Some configuration management is needed. How much and what kind?
- How Many Threads Can Dance on the Head of a PID? Giving each program, object, or process a unique identifier does not scale up infinitely. For example, take a wheat field. Nature does not assign a unique identifier to each seed. Each seed is autonomous and reacts to it's immediate environment. How immediate? Just enough water, soil, and time. Then the immediate grows. Look at The Erlang Programming Language for ideas about spawning processes in great numbers. Solution Use the PID. Since everything is a thread, everything has a PID.
- The Context Problem Software is horrible at determining its context. For D.L. software it is crippling. How can D.L. Software determine what to eat and how to find it?
- The Proximity Problem How can a Digitally Living process explore it's environment when it lives in a one-dimensional memory-stack?
- Solution One solution is physical distance in the memory-stack. But this is one dimensional and requires moving objects from one memory location to another. Very ineffective and very expensive. A better solution uses a map. Erlang uses a messaging service with a global mailbox system for inter-process communications and to replace global variables. Adopt this and expand it into an N-Dimensional map using Samet's Quad-tree algorithm. Each process has a location and a clear spatial relationship with other processes. Then movement is just updating a pointer. Searching is just examining nearby pointers. Call this object Kiwanja, a Swahili word for land. Use Swahili words for geologic objects inside the Kiwanja.
- Geography Problem How to create and describe geography inside the Kiwanja.
- Geography Solution: Create a world with three physical dimensions and one time dimension. Set all physical dimensions equal thus producing a cube. The time dimension advances by clock-ticks.
- Physical Program Solution: Each program has a cube shape based on the memory it uses.
- The Proximity Problem How can a Digitally Living process explore it's environment when it lives in a one-dimensional memory-stack?
- Event driven programming. This is an event oriented OS. Event-Oriented? Hmmm... Living inside the event-loop.
- The Startup Problem How to clearly determine when each program in the startup list has finished its launch.
- How to represent and label a non-executing data and/or code granule?
- How to represent eating?
- How to represent DL waste?
- Mutant OS does not think in the conventional sense. It attacks concrete problems using random variations. But it can make a mistake. No doubt about that.
- When are different communications types used?
- How is proximity determined? 11.8 inches, the distance light travels through a vacuum in one nanosecond. Cut it to 11.8 inch (30 cm) lengths.
- How big is the bucket?
- How big is each program relative to the bucket and the next program?
- Is one OS needed? Or one OS divided into environments?
- Everything is a thread. Like in BeOS. Rewritten as Haiku
- Synchronous and Asynchronous process communication.
- Proximity in the environment.
- Both software can exist in the environment.
- This is a digital stack. The efficient environment will not resemble a natural one at all, or in any aspect.
- The OS must be able to write its own programming languages, not just rewrite itself, to be truly evolutionary.
Nanonetworks: A New Frontier in Communications - ACM November 2011 p. 84 Excellent article about nano scale communications.
philosopher Charles S. Peirce wrote in 1887:
Kolmogorov, A.N. Three approaches to the quantitative
definition of ‘information.’ Problems of Information
Transmission 1:1 (1965), 7.
Object Oriented solutions do not scale up to the size needed. Both the "Banana Problem" and the "Calculus Problem" prevent this. Write it up into a paper.
Parent Article: Main_Page