5. Node n will receive the resource r if n′ can send the resource. In this case, n needs to schedule the continuation c that was awaiting r, so that c can be resumed.
TidalTree Root
In some embodiments, one physical node of the set of nodes in the system is designated as a “master node.” This node has the responsibility at boot time for building the initial virtual resource map and other data structures, replicating them to the other nodes, and booting the operating system (e.g., Linux). The master node can be just like any other node after the system is booted up, with one exception. At least one physical node needs to store the root of the TidalTree. The master node is one example of a place where the root can be placed. Updates to the event queue of the TidalTree root scheduling object are handled in each node by sending a message to the master node to perform the update.
Over time, the hyper-kernel will adapt and locality will continually improve if resource access patterns of the operating system and the application permit.
Continuations
As explained above, physical memory addresses across all nodes are not unique. In some embodiments, the inclusion of physical memory addresses in continuations can be avoided by using partitioned integer indices to designate important data structures in the hyper-kernel. In the event an addresses needs to be put into a continuation, care is taken in the move, since the address is a physical address of the source, and bears no relationship with the physical address in the destination. Moving a continuation means copying its contents to the destination node as discussed above, and remapping any physical addresses from the source to the target.
Timestamps