shared memory: a poll

John Rose rose at think.ARPA
Wed Mar 5 01:22:36 AEST 1986


The "4.2BSD System Manual", in the section on memory management
(/usr/doc/sysman/1.2.t), sketches out a future extension to Unix*
called "mmap()".  This feature allows an "object" represented by
a file-descriptor to be mapped into the per-process address space;
there is provision for modifications made to the "object" to be
shared by more than one process.

I haven't seen much discussion of this kind of memory management
on the net, but I have heard of vendors implementing it.  So
there must be people out there who have used it in interesting ways.
This poll is for those folks, and for those of us who've used
memory-mapping on other OS's, and for thoses who've just wanted
it and thought carefully about it.  "It" == "this kind of MM" ==
(a) mapping of "objects"--whatever that means--and (b) shared access
to same.

Below are four questions.  Please mail replies directly to me.
My ARPA address is "rose at think.com".  I will summarize and post to
net.unix-wizards in a week or so, and later on if necessary.
				-- John

Questions:

	(1) What advantage does object-mapping (per se) give
	    to applications you have written?  What problem does
	    it solve?  How is it used?

	    [Notes:  Reply for applications you are very familiar with;
	     preferably one you've written.  If your Unix lacks mmap(),
	     well-considered hypothetical replies are welcome; after
	     all this is a new facility.
	     Example:  "My WzBng-4 editor starts up real fast because
	     it maps the file directly instead of copying into a buffer".]

	(2) Same question for *shared* mapping:  What problems does it
	    solve?  How does it compare with packet- or stream-based IPC
	    for your application?

	    [Note:  Again, hypothetical cases are welcome.
	     Example:  "Our Hyper-Common-Lisp supports multiprogramming
	     and process migration by sharing the entire heap among
	     several Lisp stack groups implemented as Unix processes".]

	(3) What techniques are used for synchronization of the
	    shared access?  What granularity of locking is helpful
	    or is possible?

	    [Example:  "The Vax bbssi instruction serializes access to
	     individual nodes of the shared semantic network".]

	(4) Exactly which "objects" can be mapped on your system?
	    What does "mapping" mean?  What does modification mean?
	    And/or:  What *should* it mean?

	    [Note:  To avoid a deluge of equivalent replies, please
	     answer (4) only if you have a special familiarity with
	     the implementation, or if you gave detailed responses to
	     the previous questions.
	     Example:  "Mapping the Ethernet device gets you a window
	     on the raw device registers."]

-- 
----------------------------------------------------------
John R. Rose, Thinking Machines Corporation, Cambridge, MA
245 First St., Cambridge, MA  02142  (617) 876-1111 X270
rose at think.arpa				ihnp4!think!rose



More information about the Comp.unix.wizards mailing list