Check out the new USENIX Web site. next up previous
Next: Protocol Design Up: Software DSM Previous: Lazy Release Consistency

Basic Programming Model

Typically, software shared memory provides an incomplete shared memory programming model. The execution model is based on multiple threads (one or more on each node) that share static global data in read-only mode, and dynamically allocated data in read-write mode. The coherence applies to the latter exclusively. Static data is usually updated by the main thread before the other threads are spawned. Also, all global shared memory allocations must be performed by the main thread before the other threads are spawned. Since static data cannot be modified once the threads are spawned, it is typically used to maintain pointers to the shared data.

Applications written to use our DSM system make use of the parmacs macros, which were developed at ANL. The macros provide platform independence to the application, enabling it to run on software DSM as well as hardware DSM systems without modification. These macros provide a minimum set of primitives that are necessary in order to program a shared memory application.

The protocol implements the multi-threading model by ``forking'' one process on each node of the cluster. Each process will execute at least one application thread. The threads will share the address space within the process as well as across the forked processes using software DSM. Since Linux doesn't provide a remote fork, we provide the ``illusion'' of this by starting the same executable on each node using rsh. Each remote process executes the same code as the initial process did before spawning, to initialize static data, making it coherent across nodes.


next up previous
Next: Protocol Design Up: Software DSM Previous: Lazy Release Consistency
Murali Rangarajan 2000-08-09