[comp.unix] Sharing Memory Between Processes

mbrennan@swift.cs.tcd.ie (11/09/90)

Anyone out there know about sharing large(ish) amounts of data between two 
cooperating processes under ULTRIX 4.0 on a 5820.

I want to modify a LISP interpreter so that the garbage collector
runs in parallel with the mutator process, rather than have the mutator 
stop and wait while the GC is running.  To do this I want to share 
relatively large amounts of data between the two processes.

At the moment I know about:
     1.	ptrace() system call which allows you look at a specific
	word of data in the address space of another process.  For 
	even modest amounts of data the overhead associated with a
	system call per word of data becomes unbearable.

     2. shmat()/shmget()/shmop() which allow the two processes access
	a piece of shared memory.  The problem with this is that one
	is restricted to 24K (6 segments x 4K/seg) of shared memory.  
	I need quite a bit more than this.

Surely there are some operating system primitives to support symmetric 
multiprocessing?  Can anyone help?  Thanks in advance.
-- 
 ,   ,  ,      ,              ,       ,          ,          , ,      ,
Micheal O Braonain     Roinn Riomheolaiochta, Colaiste Na Trinoide, BAC 2.
Email                  mbrennan@cs.tcd.ie

yedinak@motcid.UUCP (Mark A. Yedinak) (11/15/90)

mbrennan@swift.cs.tcd.ie writes:

:At the moment I know about:
:     2. shmat()/shmget()/shmop() which allow the two processes access
:	a piece of shared memory.  The problem with this is that one
:	is restricted to 24K (6 segments x 4K/seg) of shared memory.  
:	I need quite a bit more than this.

This limitation is depndent on the system. It is not imposed directly by the
library calls. Sorry I cannot give you anything more useful, just wanted to
clear this point up.

:-- 
: ,   ,  ,      ,              ,       ,          ,          , ,      ,
:Micheal O Braonain     Roinn Riomheolaiochta, Colaiste Na Trinoide, BAC 2.
:Email                  mbrennan@cs.tcd.ie


-- 
Mark A. Yedinak - uunet!motcid!yedinak 		*  "Don't take life too
Motorola - General Systems Sector		*   seriously, you will
3205 Wilke Road, Arlington Heights, IL 60004	*   never get out of it
708-632-2874  (I said it, not the big M)	*         ALIVE!"

aab@cichlid.com (11/21/90)

In article <2251@megadon.UUCP> you write:
>I want to modify a LISP interpreter so that the garbage collector
>runs in parallel with the mutator process, rather than have the mutator 
>stop and wait while the GC is running.  To do this I want to share 
>relatively large amounts of data between the two processes.
...

If mmap is available (try man mmap) you might want to check it out.
I maintain a LISP system on Suns et al and use mmap (not for
multiprocessing) and it gives you fast startup (no malloc then read
from heap file, just mmap) and automatuc state saving (no explicit
writing the heap to disk).  Good luck
Andy


-- 
Andy Burgess
Independent Consultant
aab@cichlid.com
uunet!silma!cichlid!aab