rose@think.ARPA (John Rose) (03/04/86)
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@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@think.arpa ihnp4!think!rose