From RIG to Accent to Mach: The Evolution of A Network Operating System
Rashid (1986)
What kind of paper is this?
- Describes a series of system.
- Puts systems in perspective.
- Unifies several systems.
Mach received a lot more attention than either Accent or RIG. In fact, Mach
was known as having pioneered many things, most of which had actually
been part of the RIG/Accent projects.
- Multiprocessor support (both tightly and loosely coupled).
- Multi-threaded processes.
- General VM model.
- Capability-based IPC.
In the beginning: RIG
- Began in 1975.
- (Does anyone recognize Data General Eclipse? Hint: Soul
of a New Machine) How about Xerox Altos?
- Usable in 1976.
- System structured around IPC.
- Two key abstractions: Messages and Ports
- Ports identified by process/port pair.
- Structured messages; limited data in messages.
- No paged virtual address space.
- Deficiencies:
- Not originally designed for networking, but used
extensively for networking.
- Insufficient protection: anyone can send to any port.
- No way to track dependencies between processes.
- No location transparency.
- Limited message sizes (2 KB).
After RIG: Accent
- Part of the CMU Spice project.
- Began in 1981.
- By 1986, running on 150 machines.
- Define ports to be capabilities.
- Use virtual memory creatively.
- copy-on-write
- large, sparse address space
- System still based on IPC, messages and ports.
- Messages up to 2^32 bytes.
- Data objects in messages are types.
- Processes and OS each have 4 GB VAS.
- Most of kernel is pageable.
- Use memory mapping to move data around.
- Memory objects back main memory.
- Ports provide location transparency.
- Implementation decisions based on experience with RIG.
- IPC
- Few outstanding messages for a process (queue per process)
- Processes may need a few to hundreds of ports (port references are indexes into
global table).
- Most messages are simple (fast-path the common case).
- VM
- VAS maps should make it easy to support sparse address spaces easily (2-level
index table).
- Few mapped regions.
- Could pass messages using copy-on-write (had shadow objects) .
- RPC
- Use stub generator for remote procedure calls (Matchmaker).
- Real measurements - challenging because Accent runs on non-standard
hardware. Do the authors do a good job of making their measurements
relevant?
The End: Mach
- Take what was learned in accent and make it more Unix-like.
- Differences from Accent:
- Multi-threaded address spaces.
- Finer grained sharing.
- Allow external pagers to manage memory objects.
- Other improvements
- Simplified some data structures.
- Heterogeneous hardware.
- Note no mention of microkernel, just a vague reference to removing
"non-Mach UNIX functionality from the kernel."