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