| OCR Text |
Show 26 processes than alternative clauses, some processes attempt unification with the same clause head, again building identical environments. With sufficient parallelism, all processes are eventually working on d11Terent branches of the search tree. Because all processes have followed one complete path from the root of the tree, each has built a complete environment in which all variable bindings are correct at all times for the current process. In this way, the multiplebinding problem is avoided. 2.3.1.7 Kabu-Wake. The Kabu-Wake method [30], like Ali's method, avoids creating multiple bindings by having each process maintain a complete separate environment into which it can write without conflict. This method creates the separate environment when execution of a new branch is begun. The current environment is copied from the parent and becomes the new environment for the descendant. 2.3.1.8 Closed Environments. A concern for locality and applicability to non-shared memory architectures characterizes a new method due to Conery [12] called closed environments. It has features in common with directory trees, binding tables and variable importation. Instead of locating a variable value by specifying the address of its value cell, this method refers to it by a 3-tuple <L, E, N>. This tuple is called a link. Lis the link ID, E is an environment ID, and N is an offset into an environment. Each process uses the same link for the same variable, but each interprets the link in its own context to find the correct variable binding. To disambiguate a variable, the address of E is found by searching a directory owned by the process accessing the variable, and N is added to the environment address to compute the address of the correct value cell. Since each process may map E into a different address, each may access a different value cell from the same link. Unique to this method is that all disambiguation is local. Locality is enforced by a procedure called environment closing, in which references to variables outside the local frame are replaced by links which reference local value cells. Closing the environment may involve creating new variables to which existing unbound variables are bound, so that variables are never bound across process boundaries. |