Loose end. Why not allow reading the limit of (p2,sblimit)?
It might seem strange to specify range limits for bank calls, since it is possible to transform a bank into a range limited bank. These limits are supported in the bank call because it is this mechanism that allows transformers to be constructed that are not integrated with the bank.
Half Baked Ideas
Solutions {we will get to the problems later}
This might be brought about by having an operation on a range key that produced a subrange key. Note, however, that range keys are not rescindable!
A related idea is to have a variant of the kernel range key that is for a limited block of allocation counts, perhaps just one. This could be directly used by a high performance untrusted data base scheme (perhaps hash organized) and yet provide a form of rescinding.
Such banks might have provisions for sending stuff back to the upper bank in case the upper bank needed the storage.
Such banks would tend to solve both the reference locality problem and the speed problem.
Such banks would need a relationship with their parent bank that has not yet been designed.
If we had a space bank that tended to give out pages at successive CDA's we would have solved part of the problem.
The other part of the problem would be largely solved if page faults caused a bit of introspection:
A similar idea of broader impact and easier implementation might be to notice upon page fault a pattern in the page table indicating sequential access. Such a pattern might be several valid page table entries adjacent to the faulting entry. It would be important to ensure that speculative reads be optimized in case of consecutive CDA's.
Objects sharing a bank could share a meter {and would not have to make their own}.
In detail, there would be a bank command to buy a priority node, return its node key, create a meter key to that node and keep the meter key. Another bank command would be to return that meter key.
This scheme seems as if it would usually not require an extra meter since a sub-environment normally entails both a new bank and meter anyway.
I think that this scheme is practical and solves a real problem but it seems ad-hoc and inelegant. There may be problems with priority nodes.
Suppose that there were an operation on a bank passing another bank to inquire whether the latter was as lasting as the former. Some banks will not obey "destroy". "B<=C" means that bank C will not be destroyed before bank B. Here are the axioms concerning "lasting":
If B descends from C and B will not obey "destroy" then B<=C.
...
An individual subscribes to Gnosis under two user names, Jekyll & Hyde, two names that we do not associate.
Hyde buys many pages from his spacebank and passes the keys to Jekyll. Jekyll sells these keys to his own bank and buys new pages and hoards the new page keys.
Hyde now cancels his account and leaves no forwarding address. We zap Hyde's guarded bank but get few pages back because the pages bought from Hyde's bank have already been severed {sold back to Jekyll's bank}.
Jekyll has the use of the pages. We know that someone has the pages but we have no way to find out who.
The guarded bank's mass
There seems to be no feasible way to get the time integral of the mass.
This bank change also might also help solve another bank implementation flaw:
The above program leaves both banks with bad estimates of their own mass.
Bad estimates in one direction lead to wasted storage and in the other direction to wasted CPU cycles.
If we were to enforce this, a few current programs would break but few of them would need to be redesigned.
A few programs that I would like to write would be stymied. These would build an object with one bank and cause the object somehow to be transferred to another bank at some cost much less than building a copy of the object with the new bank.
Let each bank keep a bit map of CDA's of material that it has sold.
Cause its bit map to be or'ed into that of its parent.
Another advantage of this is that the node chain of guarded keys need not be kept since the guarding bank is the only object capable of rescinding access to a page or node. The bit map would thus suffice for the "zap guarded bank" function.
This design can also support an interbank operation wherein one bank transfers its set to another and deletes itself. It must be verified that the first bank not be superior to the second. Under the same circumstances the second bank can increment its limits at the expense of the first bank.
This also fixed the (bflaw) problem.
I {NH} am happy with this approach.
Rules
When a bank provides N {a node or page}, that bank becomes responsible for N. No other bank is responsible for N. If A is the parent bank of B and B is responsible for N and B is deleted then A {and no other bank} becomes responsible for N. A bank will delete and sever only material that it is responsible for.
Question: Has the range specification to banks been useful? Do we anticipate its usefulness?
There is a global bit map {to which all banks have write access}. Here zero means "allocated". The same length call can now be used to quickly find a page of the map with available pages.
I think that a particular bank should stick to one page of the map while it can still find material there.
This would be useful when I want to send you some large mail. I create a bank, create a segment from that bank, write the mail into the segment and send you the keys to both the segment and bank. You transfer the bank to your bank and zap the bank when you are finished reading the mail.
This idea leaves unsolved the problem of how I might abdicate my ability to destroy the mail in a way that would be manifest to you. See (p3,integ-87) for new ideas in this area.
Note that the 940 operating system could do this.
Cached Banks {or hoarding banks}. See (cached-banks,).
Suppose I want to build an object that survives me such as a compiler factory. Compiler users will wish to be assured that the compiler will remain available upon my bankruptcy or merely upon my forgetfulness.
To assure them I buy access to a bank B, newly created for me, that is a sub-bank of an invulnerable bank IB. I pay an amount that is proportional to the limits on B. I then build my object using B and then return B to IB's owner for a refund. IB destroys B and refunds me the amount that I didn't use. My object's bank vulnerability is now only that of IB. That my object is indeed made from B and no more vulnerable is vouched for by the logic described at (p3,vb).
The bank transplant described at (transplant) becomes much more important.
Bank Vulnerability
The ideas described at (p3,bf) achieve this without vulnerability logic in the bank, but then the kt+4 bank order as distinct from the 64 order is required.