The (possibly apocryphal) story of System V IPC's origins

August 6, 2012

Back in SystemVSHMLimits I mentioned in passing that I don't have a high opinion of System V IPC in general. This goes back to the general attitude to it from (some) old Unix hands that I absorbed as a young Unix person (I'm not entirely sure where from by now), and especially the story of its origins. Unfortunately I don't have handy access to the necessary research materials right now, so let's call the following story folklore.

(The interesting thing about Unix folklore is that it continues influencing people whether or not it is actually true. This case is one example of that, where a possibly apocryphal story has shaped my dismissive attitude towards a Unix feature.)

If you've looked at System V IPC, you may have scratched your head a bit over it. What we call 'System V IPC' is actually three separate IPC mechanisms which seem barely related to each other, and none of them are very Unixy. The story I heard starts when Bell Labs released V7 Unix. One of the things that happened with V7 is that various groups inside AT&T picked it up for their projects and, in the way of things at the time (especially given V7's not entirely finished state), each of them modified the system a bit to meet their local needs (thus spawning a constellation of internal AT&T Unix versions). As part of this fragmentation, three of the groups doing things with Unix all decided that they needed an IPC mechanism. Working independently, each came up with something that was more or less like one of the current System V IPC systems, implemented it in their version, and was happy.

(Many of these AT&T modifications were not very Unixy because they were often designed by people who just wanted to get something done with the system and who had not really absorbed the Unix philosophy. Of course this was not unique to AT&T; many groups made not-very-Unixy changes to V7. Some would say that this included UC Berkeley when they made BSD Unix.)

Then AT&T management showed up; someone decreed that AT&T was spending too much effort maintaining too many different versions of Unix. All of the AT&T Unixes were to be unified into one, managed and maintained by a single group. Of course, as part of this all of the changes that all of the groups had made needed to be merged back into a common version. This was, shall we say, a somewhat political process; many groups were not happy at the thought of losing 'their' features and so pushed for them to be included in the official AT&T Unix, no matter how well they fit. This included all three groups that had invented their own IPC mechanism; none of them were willing to compromise and each of them insisted that their mechanism just had to be included. In the end the gatekeepers for AT&T Unix threw up their hands and said 'okay, you win, we'll support all three different IPC mechanisms'.

And that, so the story goes, is what gave us System V IPC. Because of a political compromise we got stuck with three different and partially overlapping IPC mechanisms, all of them not very Unixy and all of them with oddities. Is it any wonder that old Unix hands look down on the whole mess?

(Or at least that one can make a story where old Unix hands look down on the mess.)

Written on 06 August 2012.
« Reasoning backwards (a story about what can happen to SATA disks)
The theoretical legality of shadowing builtins in Python »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Aug 6 00:09:04 2012
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.