Unified I/O namespace: what's the point?
Chip Salzenberg
chip at tct.uucp
Wed Oct 10 00:22:19 AEST 1990
Submitted-by: chip at tct.uucp (Chip Salzenberg)
According to ok at goanna.cs.rmit.OZ.AU (Richard A. O'Keefe):
>My program *can't* know what's available. If someone comes along
>with a special "open hyperspace shunt" function; my program can't
>benefit from it. If hyperspace shunts are in the global name space
>and posix_open() understands their name syntax, my program will work
>just fine.
Thank you, Richard, for stating well what I have intuitively felt.
(Dan, you wanted a reasoned rebuttal. Very well: here it is.)
It is true that interactive use of UNIX, especially by programmers,
puts a lot of emphasis on the shell interface. If such an environment
were all there were to Unix, then Dan's fd-centric view of the world
could possibly be useful. To use Richard's example: when a hyperspace
shunt became available, its use would require only a change to the
shell source code and a recompilation.
However, the reality of modern Unix use is something else entirely:
pre-packaged utilities, usually available only as binaries, that for
practical purposes *cannot* be changed or replaced. In this
environment, kernel features that require program customization are
unwieldy at best, useless at worst. As long as shells fall into this
category -- "programs usually distributed as binaries" -- fd-centric
UNIX will never be practical.
One could argue that binary-only distribution is evil and should be
stopped. I can agree that binaries are less useful than source code;
in fact, my personal motto is, "Unless you have source code, it isn't
software." Nevertheless, copyright and trade secret law being what
they are, we will continue to see binary-only distributions for the
indefinite future.
Even if source code were for all UNIX programs were freely available,
I doubt that anyone would seriously propose modifying *all* of them
each time a new kind of fd-accessible object were added to the kernel.
Finally, filenames often are stored in places where no shell will ever
see them, such as program-specific configuration files. So in Dan's
hypothetical fd-centric UNIX, we would have to either (1) pass such
filenames to the shell for interpretation, thus incurring a possibly
substantial performance hit; or (2) modify each program to understand
all the names the shell would understand. In my opinion, neither of
these alternatives is viable.
To summarize:
A unified namespace has one great advantage: new types of objects are
immediately available to all programs -- even the programs for which
you do not have the means or the desire to modify and recompile.
--
Chip Salzenberg at Teltronics/TCT <chip at tct.uucp>, <uunet!pdn!tct!chip>
"I've been cranky ever since my comp.unix.wizards was removed
by that evil Chip Salzenberg." -- John F. Haugh II
Volume-Number: Volume 21, Number 194
More information about the Comp.std.unix
mailing list