| | | Two staged operating system |
Two staged operating system
Two levels of operating systems are perceived:
- The micro-os, which is located on ROM inside each CPU-core
- The meta-os, which is located in the virtual memory/secondary storage
The former has to be as simple as posible and absolutely identical
on each CPU of the grid to make it possible to be replicated many
times on one chip. The micro-os may have no "awareness" of the
specific array configuration, it has the only function to provide
interaction with the grid (neighbours) and a minimal amount of task
administration.
Although we maintain the notion of inside/outside in the grid, the
only information about the topology a node needs to know is how to
reach it's neighbours. Whence the bootstrapping of the grid is provoced
by an edge node (e.g. the mentioned Boot ROM injector), requireing
maybe to fetch a block of code for a quant from virtual memory, it
would suffice for a node to route the request-messages through the
neighbour from which the (boot) quant has been delivered.
The principal tasks for the micro-os could be the following:
- Inbound comunication:
- wait for a quant. If a quant is received:
- calculate the decay, and decide if the quant has to be forwarded to
some neighbour node(s)
- decide if the quant will be absorbed. Some parameters which decide
about absorbtion are: priority/decay status of the quant, cpu-load,
availability of the code/data in RAM, availability of space to place
aditional code into local RAM
- if the quant is absorbed, schedule the quant for execution
- Execution
- Execute the code of the currently active quant
- If it contains other quants, schedule them for exposición to the grid
- If it requires or modifies virtual memory obtain the respective buffers
by either creating a quant or queuing a message
- if the quant terminates, release resources, if parameters have to
be returned pack them into a message and queue it
- reschedule the present quants
- Outbound comunication
- send queued messages and created quants to the grid (neighbours)
The task queue can be as small as one task, so that cpu-load would
always be 0 or 100%. In dependence of the capabilities of the core
it seems however feasable and desireable that the micro-os contains
a tasking system, which queues/caches quants so that they can be reused/executed
without delay in case a task blocks (creates a quant) or a quant's
code is required by a neighbour or near node.
Messages can be completely emulated by quants or implemented independently.
Quants can also work only with references to virtual memory or completely
without references, consisting only of executable code and data, which
in turn can be pointers and code to retrieve them. However we suppose
that the implementation of both options in either case provides valuable
increase in flexibility and eficiency, of course with the cost of
increasing the complexity of the micro-os.
The meta-os would have to deal with organization of the objects stored
in virtual memory (administration, protection, accounting), bootstrap
and shutdown, collection of routines for interaction with the "outside"
world, and basic user interaction: command-loop, os-shell, console,
and the like. We suspect that a variety of diverging concepts will
be perceived for the meta-os.
Georg Lehner May 14, 2004- Magma Soft
| | | Two staged operating system |