Jonathan Shapiro called me a few days ago (middle of November, 2003) and told me of an idea a bit like we once considered for Keykos but much more developed and with significant further ideas that might make it more practical and useful. Just as the virtual address of a program can access data from a very large name space, called "virtual memory", so might a system function make available efficiently a large space of capabilities. The memory has been optimized in modern hardware to perform access from a large space typically in a few nanoseconds. I plan to write here those ideas as I understand them and probably warp them.
In Keykos this problem was addressed head on by the super node. It was slow. The two important programs to which the key cache was critical, were not performance ciritical and so we did not invest in other general solutions. Other applications would become cramped by the of 16 conveniently accessible keys but we found in casses other than the binder and debugger, that this forced us into factoring the application into more domains and this nearly always improved the application over and above aleviating the key crunch.
Nonetheless it might be good to consider more general solutions. The general idea is to duplicate the success of fast RAM addressing for data. In Keykos the memory tree