As an alternative to communication via messages or files, shared memory has the potential to be simpler, faster, and less wasteful of space. Unfortunately, the mechanisms available for sharing in Unix are not very easy to use. As a result, shared memory tends to appear primarily in self-contained parallel applications, where library or compiler support can take care of the messy details. We have developed a system, called Hemlock, for transparent sharing of variables and/or subroutines across application boundaries. Our system is backward compatible with existing versions of Unix. It employs dynamic linking in conjunction with the Unix mmap facility and a kernel-maintained correspondence between virtual addresses and files. It introduces the notion of scoped linking to avoid naming conflicts in the face of extensive sharing.
W. E. Garrett, Michael L. Scott, Ricardo Bianchini