Thursday, January 10, 2019

Using the packed char symbol table

I have posted my stable copy of the thing.  The one I posted has eigh char names, reversed, silly me.

In the finality of it, here are the characteristics:

For a name space of 16 unique names, finding any name will ultimately be a four step march through the symbol tree.  If the names are equally likely, then the symbol tree is optimally queue for you interface, there is no other way to put it, TOE and all.

If the unique names are not equally probable, but the data manager knows their relative probability, then using prefixes on your names set the step length.  Rarely used command are unique along their sequence, and and will compete with each other for paths through the tree, actually. When we have a group of commands used frequently,  give them a two step, course grain you name space, such that eight of your commands take three steps and eight take 5 steps, unbalanced to matching arrival probabilities, you are doing relativity calculations.

Tagging a name with a pid is fine, used a double word, and search the name part first and you will usually find a unique path before using the pid as  LSB.  Keys are really identifies by their unique path, in the suggested applications.

Buffering is a breeze, all your clients share address space. Just set the mutex in and out of your entry space, then callers manage their own congestion. This technique works fine in multi-threaded because you need guarding only at the interface, so race condition do not apply.

Who assigns names? You, me, the data manager? Don't know, don't care. It is entirely reasonable for the data manager to establish a specific names space, in the hardware! (using our metaphor). Snippets can easily allow system wide configuration of the symbol table, the data manager could actually program the curs themselves to respond properly against client calls.  But, individual users, not causing data conflicts, have the complete name space hardware at their finger tips and in their syntax engines.

Maintaining stable state is all about maintaining a stable symbol table.  Key values need a type field to judge their relative dependencies inside the snippet.  It the 'type flow' among the key values is a closed protocol, guaranteed to reach a stable exit under timeout, then your snippet is stable, just keep conflicts out of the table via the mutex and  good namespace partitions.

Ultimately the concept is portable to even today's device drivers, all of whom have enough firmware support for bus/namespace  compatibility. It works, snippet with enterprise namespace and universal interface, the future of computing, seriously..

No comments: