Here's the flame everyone's asking for (was Re: Shared Memory in BSD4.3 is lacking?)

David H. Wolfskill david at dhw68k.cts.com
Fri Mar 4 00:42:32 AEST 1988


Some musings from a non-wizard (meaning me, not Mike Ditto):

In article <43 at kenobi.UUCP> ford at kenobi.UUCP (Mike Ditto) writes:
]....
]Actually, I like System V shared memory.  It has many useful features
]and I have used it very successfully in several projects.  However, I
]do have a few observations about System V IPC in general.

]On Berkeley Unix, the primary IPC mechanism (the socket) is very
]nicely implemented in a way consistent with the previously existing
]I/O facilities.  In particular, it is accessed in the same way as
]files and other I/O: with a "file" descriptor.  In fact, the socket
]completely replaces the less general pipe mechanism.  A socket
]descriptor can be accessed with the "read" and "write" system calls
](although socket-specific calls are also available).  On any
]descriptor (file, device, or socket) the fstat() system call can be
]used to determine what type it is, but few programs need to know.

]With System V IPC (Shared Memory, Semaphores, and Message Queues)
]special system calls are needed not only to create the "ID"s, but also
]to access them.  These special access methods are necessary, of
]course, but why not allow the normal access methods to work as well?
]Why can't you read(2) and write(2) to message queues?  Why can't you
]have a named semaphore or shared memory segment.  Why can't you use
]fcntl(fd, F_SETFD, arg) to specify whether shared memory should be
]inherited by exec(2)'d processes.

]If System V IPC had been done "right":
[several suggestions about how programs could (for example) access IPC
objects as if they had properties like those of files....]

]All the existing capability could have been provided, while giving a
]more consistent view of the IPC mechanisms.  BSD Unix allows normal
]read/write access to sockets, but provides additional system calls
]that allow more detailed and socket specific control over I/O.  All
]the old articles about Unix from Bell Labs in the seventies boasted
]about the revolutionary idea of I/O and pipes that look the same as
]file access.  And yet AT&T didn't live up to that concept in their IPC
]enhancements.

]....

Would it be feasible for some (future) implementation of some sort of
UNIX (or POSIX or GNU or...) to possess system calls with the
capabilities of System V IPC, and also be able to be accessed as Mike
suggests?

After all -- assuming (!) that this is actually something that this is
doable -- this would be making a superset of the System V functionality.
(I'm thinking here about the analogy of pipes being implemented in BSD
via sockets, for example.)

Now, whether or not it would be *worth* the effort is another issue --
possibly with a different answer....  (Probably with different answers
for different situations, for that matter....)

My (admittedly limited) experience with UNIX is with a flavor that is
System V with a fair amount of BSD extension, including sockets.

Naturally, I have no access to source for either BSD socket or System V
IPC kernel support, so I'm not in a position to judge whether or not any
of this really would be feasible....

Does this seem reasonable?

david
-- 
David H. Wolfskill
uucp: ...{trwrb,hplabs}!felix!dhw68k!david	InterNet: david at dhw68k.cts.com



More information about the Comp.unix.wizards mailing list