Unified I/O namespace: what's the point?

Kristoffer Eriksson ske at pkmab.se
Tue Oct 9 06:56:03 AEST 1990


Submitted-by: ske at pkmab.se (Kristoffer Eriksson)

In article <13220 at cs.utexas.edu> brnstnd at kramden.acf.nyu.edu (Dan Bernstein) writes:
>Now we're looking at another possible addition to UNIX that hasn't been
>widely tested: a unified namespace for opening all I/O objects.
>
>I propose that we stop discussing this issue in comp.std.unix and start
>implementing real-world solutions.

I am already running a system where a file name can lead to any kind of
I/O object. It works fine, as far as I can judge. What more should I do?

(Not everything that could be is implemented via file names in this system,
but there are networks and databases that are interfaced via this mechanism,
and I like it a lot. Server programs attach themselves to directory or file
names, and will take care of all file operations attempted by clients on
this file or directory.)

> My approach is to separate opening and connecting into special programs,
>and stick to file descriptors for almost all applications.

Doesn't your objection about the semantics of open() on network connections
fall down in that case? Do your special programs for obtaining the file
descriptors make the real semantics of network connections available to
the application any more than open() does?

I think file names are more useful. How do you for instance stick a file
descriptor that you obtained by one of your special programs into the
configuration file for some program? File names are readily suitable for
that. If you just stick the network address into the file, the application
will be restricted to network connections (maybe only one type of network,
at that), and the application will have to know how to access that kind of
connection.

> If you have a different solution, such as
>overloading open(), why don't you start playing with your library and
>seeing what works? 

Too static. You will in practice be conserving the top level of the name
space inside your library routines. With non-shared libraries this would
mean you'ld have to recompile all your programs if you need to change
what kind of objects you can access or how they are accessed. With chared
libraries this only requires recompiling the libraries, but still isn't
something you'ld like to do every day. With the entire name space available
through the filesystem, you can change the entire hierarchy dynamically,
and starting the server for some kind of objects may as part of that same
operation establish the access path (just a file name) through which it is
accessed.
-- 
Kristoffer Eriksson, Peridot Konsult AB, Hagagatan 6, S-703 40 Oerebro, Sweden
Phone: +46 19-13 03 60  !  e-mail: ske at pkmab.se
Fax:   +46 19-11 51 03  !  or ...!{uunet,mcsun}!sunic.sunet.se!kullmar!pkmab!ske


Volume-Number: Volume 21, Number 193



More information about the Comp.std.unix mailing list