NAME lab 18 - mux DESCRIPTION Much of my recent reading has led me back to various implementations of a multiplexer. This is an important and powerful abstraction and I want to understand it better. I know very little about it now. I'd like to implement one in limbo, for example to multiplex the link between sam and samterm as suggested in the protium paper. Hence my interest in sam in the earlier lab. Here is a some of the things I've been reading recently about multiplexers. See if you see a pattern. J. Hickey's Master thesis at MIT implements mux for plan9 which puts a 9p multiplexer into user space and provides asynchonous IO for user threads. Search 9fans for multiplexing where there is some interesting discussion on the use of multiplexers in plan9. For example, an idea by rog and russ's response And futher proposals by russ proposal for mux, local 9p multiplexing and remote 9p multiplexing. See also an implementation of a generic rpc multiplexer, libmux, in plan9port The various window systems by Rob Pike, mux, 8Â½, and rio are multiplexers for their environment, the screen, mouse and keyboard. The spree game engine is a multiplexer at the application leve for the object hierarchy managed by the server. And in inferno /emu/port/devmnt.c is the multiplexer for 9p. In the original exokernel paper the authors argued the principal function of an operating system is to multiplex access to hardware, and should do nothing else. Multiplexers are vital to providing 9p service and in protium the authors argue they are a vital piece of infrastructure for distributed applications. In summary, this is something I need to learn more about. I'll proceed in these labs with studying the code to libmux and devmnt and try to implement the mux for the sam session.