Notes on "Linda Meets Unix", Wm Leler, IEEE Computer, February 1990
This article is behind a paywall. I have a copy but cannot share it publicly. I'll provide some notes here and link to open access articles that fill in some of the details. I can dig in deeper if you leave a note in the comments.
Some people may know Wm from his PhD research on implementing constraints in the Bertrand programming language. (Published as "Constraint Programming Languages: Their Specification and Generation", Addison-Wesley, 1988) Wm later worked a couple miles down the street from me at Tektronix. More recently he worked on Flutter and Dart at Google. Now he's somewhere between Portland and the Puget Sound area. https://leler.com/wm/
When Wm authored this article he was at a Portland startup called Cogent Research. The product was a Transputer-based network of workstations. See more about the hardware. The article "Linda Meets Unix" describes the operating system, especially the use of "Kernel Linda" which is a pared-down implementation of Linda and tuple spaces. The aim of Kernel Linda is to be applicable to systems programming.
The article describes shared-memory multiprocessing, message-passing multiprocessing, and the Linda coordination model which is considered "generative" and can be used to approximate either shared-memory or message-passing, as well as a range of coordination patterns.
The operating system described in this article is QIX ("quicks").
To the user, QIX appears almost identical to Unix but, below the surface, it is considerably different. In terms of existing versions of Unix, QIX is most like Mach, except that Mach is based on a message-passing model, while QIX uses Kernel Linda. Like Mach, QIX has a small operating system kernel that is replicated on each processor.
Each process in QIX has a tuple space that provides the "global" environment for that process. That tuple space is the only means of communication between the process and the rest of the system. A QIX process can be lightweight with few entries in the environment tuple space. A Unix-compatible process has a more complete Unix environment in its tuple space.
All processes communicate by reading a "Services" entry from the tuple space. The value is another tuple space of all the external services available to that process. For example:
- File: the file system
- Pipe: Unix pipe service
- TTY: serial ports
- Execute: the execution service
- Console: the system error console
- PIX: the parallel interactive executive
- Graphics: the graphics server
- Window: terminal emulator windows
- FTP: file transfer service
- Tape: file backup
- Null: the null device (like/dev/null)
// the new environment dictionaryVal new_env = createdict();// the value of x is the integer 5new_env.out("x", (Val) 5);// the value of y is the integer 20new_env.out("y", (Val) 20);// read the executable file from diskVal proc = createblockfromfile("foo");// create a new processint pid = new_env.execute(proc);// collect resultsVal result;// read the value of znew_env.in("z", result);printf("z = %d", (int) result);
The code for corresponding communication in the new process:
void main()
{
// access my environment
Val env = environment();
Val x, y;
// read the value of x and y
env.rd("x", x);
env.rd("y", y);
int z = (int) x + (int) y;
// set the value of z
env.out("z", (Val) z);
}
The article goes on to illustrate the use of Linda to implement flow control, dynamic load balancing, and server farms. One of the most interesting aspects of QIX is PIX, a parallel, interactive Postscript interpreter implementing the Sun NeWS window system.
The original implementation of NeWS implements "green threads" and coordination within the Unix process applies a combination of shared memory with mutexes and message passing. PIX is a true parallel program with coordination using Linda operations.
QIX provides a big lesson for today by illustrating how an innovative substrate can be used to provide an all new operating environment while maintaining a significant level of compatibility with the current world.
No comments:
Post a Comment