Shared tuple memories, shared memories, buses and lan's--linda implementations across the spectrum of connectivity

Linda is a programming language intended for explicitly parallel programming. It is based on a unique communication mechanism, a high-level shared memory known as tuple space. In this dissertation, we describe a new implementation of Linda based on a two-layer model. One layer is centered on multiple processes, possibly running on multiple processors, sharing a common memory. The second layer coordinates a number of these multiprocessors connected by a relatively slow, somewhat unreliable link. This two layer model corresponds to an increasingly common computing environment: A local area network with workstations and "compute servers." Our implementation is designed to allow sharing of both the computers and the LAN with other user processes, running Linda or anything else. It runs on VAXes connected by an Ethernet and running the VMS operating system. The system we developed supports a new dialect of Linda, L scINDA-C, which extends the C language's type system to allow the programmer to make effective use of tuple space's dependency on types. In this way, the programmer can provide in a natural way information that allows the compiler to generate efficient code. The VAX L scINDA-C compiler also supports separate compilation, maintaining a cross-module set of type definitions so that separately compiled modules can communicate. We report on the results of some experiments in which a group of VAXes operating in parallel were able to attain performance competitive with super-computers on interesting problems. The process of designing and implementing VAX L scINDA-C required us to examine a variety of problems in such areas as optimization, associative data structures, and network algorithms. We present novel approaches to some of these problems.