What kinds of things would you want in the GNU OS?

Piercarlo Grandi pcg at aber-cs.UUCP
Sat Jun 17 00:39:23 AEST 1989


In article <13750 at ncoast.ORG> allbery at ncoast.ORG (Brandon S. Allbery) writes:
    
    I still like the FSS.  It would, of course, be nice if the FSS entries
    could be implemented as separate processes, and have the FSS be dynamically
    modifiable; then you could "advertize" (i.e. put into the FSS) a new
    "filesystem" type, whether it be a real filesystem, /proc, or whatever, and
    access it as part of the directory tree.
    
    Isn't Mach supposed to be able to do this to some extent?

Much better than this actually. Briefly, all access to data is thru ports;
you are not allowed to know what is on the other side of the port, and
ports can be transmitted across a port. You can ask the os port for a port
to the filesystem, and the filesystem port for a port to the file. You
can have multiple filesystems running on your machine, and you can even them
use concurrently from the same program. Directories can be ports that look
exactly like filesystem ports, which makes a lot of funny things possible.

This is not a precise description, but gives a gist of the power of having
unrestricted transmissible opaque capabilities. There are several papers
on Mach that describe the idea and its implications.

Historical notes: BSD has *two* similar facilities; one is the unimplemented
used defined domain capability, and the other is the idea tha in the UNIX
domain it is possible (well, it was buggy) to transmit file descriptors.
Using just this, it is possible to have several filesystem processes, a name
service process, with a well known Unix domain socket name. You ask the name
server for a socket/fd to one of the file servers, and then you can send on
this socket an open request for a file, and the filesystem process will
return a socket/fd for the open file, etc... Same for having multiple
TCP/IP, XNS, etc... servers outside the kernel. Like Mach, but without the
careful tuning to make this efficient.

Streams can also pass file descriptors in messages, and thus gain the same
flexibility. You can effectively push user processes on a stream, (above the
stream head, not below it, though) by this technique.
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk at nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg at cs.aber.ac.uk



More information about the Comp.unix.wizards mailing list