In the previous log (3. The cellular allegory), we find that there is some degree of similarity between eukaryote cells and the model I'm describing in this project.
Differences are :
- Binary coding is used, instead of quaternary (i'm nitpicking, I know)
- Programs communicate with direct calls, register values and transient memory blocks, instead of mRNA
- fine-grained rights are enforced by an extra sub-level, under control of a specific promgram that enforces protections, as well as housekeeping for the thread ID and other essential features (like allowing code to load in the executable area)
- Programs are inherently parallel and can be executed by any number of threads simultaneously (whereas DNA transcription of one gene can only be physically performed once at a time, as in the following GIF
Obviously a RNA or DNA strand can only be "sensed" by a single molecule at a time).
I will now try to describe the elements of the programming model :
- The rights
- The programs
- The threads
- The data memory
are properties and/or credentials that enable or inhibit access to a critical resource, such as
- the input-output ports, or communications outside de execution context
- the paging mechanism
- the program memory (loading and/or reading the code of programs)
- the properties of the programs
There is one rule here, inspired by other OSes : it is only possible to drop/lose rights ! Otherwise, any program could get access to resources it shouldn't, by mistake and/or malevolently. So the whole system is designed in a "top-down" fashion where a first/initial program starts with all the possible rights, dispatches them to other sub-programs, with each of them having only the minimum required rights to perform their job.
Surrogate programs can serve as gatekeepers : they perform the I/O taks for example while filtering data and enforcing protocols. They have their own filters for who can use which provided service. This allows dynamic, fine-grained access to necessary features, and even cascading "server programs" while keeping the system "flat" (no "privileged program" because no program has all the rights).