[comp.unix] Interprocess Communication

rich@eddie.mit.edu (Richard Caloggero) (01/14/88)

[Please *reply* to Richard and have him post a *summary* of what he
	gets back to the net.  Double check the address, that you
	aren't mailing a reply to me.  -mod]

     I am curious how people feel about various IPC techniques.  I work
mostly on Apollo workstations, but have recently been asked to play
"god" on an Alliant (it runs Concentrix, which is basically a native
BSD4.X kernel). On the Apollo, under their Aegis operating system,
there isupport for 3 basic models of interprocess communication
available to a user program.
	1). The shared memory facility allows two processes to
	communicate through a common chunk of memory, and support is
provided for mutual-exclusion locking allowing one to implement a
samaphore abstraction.  This method does not work across a network,
only within a single node. It is thus useless for implementing truly
parallel systems on an Apollo ring, but seems to me that it is the
fastest -- requires the least amount of system overhead.

	2). Aegis provides a socket abstraction, similar in spirit (I
	think -- never played with it) to the standard Unix socket
abstraction. Again, this does not work between nodes, although I can
see no reason why this restriction exists (can anyone shed some light
on this point).

	3). The third model is a server-client model. The actual
	communication takes place through a *mailbox* file, located in
a particular place. This abstraction works across nodes.  It assumes
the existance of a filesystem which allows transparent internode file
access (such as the Aegis file system).  Seems to me to be the simplest
to use, and since it works across the net, allows the implementation of
truly parallel applications. It also seems to be the slowest, requiring
the most amount of system overhead of all three methods I've
mentioned.

     Can anyone out there comment on this stuff?  What I'd like to know
(aside from the basic "your totally confused about xxx, it realy is
like this...", is why Unix supports strictly socket-oriented IPC, and
why the formentioned restrictions exist.  It seems to me that even
memory could be shared among nodes -- the network paging software does
something like that doesn't it?  Any comments, flames, "your totaly
confused" responses are quite welcome.  Please, if you intend to post
to one of the indicated newsgroups, send a copy to me directly, for I
don't normaly read all of these!  Thanx a lot (in advance).
-- 
						-- Rich (rich@eddie.mit.edu).
	The circle is open, but unbroken.
	Merry meet, merry part,
	and merry meet again.