[comp.unix.wizards] Parcelling out shared memory

lonhyn@eniac.seas.upenn.edu (Lonhyn Jasinsky) (12/03/88)

Has anyone out there ever needed/implemented some nifty
scheme for managing shared memory?  I have a program 
that currently malloc's all of its structures and whatnot.
I would like to change it so that it instead keeps all of
the data in shared memory.  I therefore need something to
carve up and manage chunks of shared memory in a sane
manner. Of course I need to attach it at the same addresses
in each process so that pointers in linked lists and that
kind of stuff continues working, however I have a number
of problems:

	1) I don't want to rewrite malloc, although this
             might be what I end up doing.
        2) Malloc as it is will not cooperate because of
             obvious dependencies on brk and sbrk.
        3) Shared memory itself appears difficult to grow
             although a bunch of chunks could be attached
             contiguously in each processes address space.

Has anyone seen some public domain piece of code to do this
or have some code they would not mind sharing?  Being able
to free memory that has been "shmalloc()'ed" is not overly
important as this is to store an environment that is not
going to do much shrinking.

Any help someone could give me would be appreciated.
Either e-mail me (I'll summarize) or post direct.

Thanks,
Lonnie

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Email to: lonhyn@eniac.seas.upenn.edu    Smail To: /dev/null

Disclaimer: All views and opinions expressed here belong
   entirely to the organization mentioned above.  They
   have sole rights to my every waking thought.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

crossgl@ingr.UUCP (Gordon Cross) (12/05/88)

In article <6490@netnews.upenn.edu>, lonhyn@eniac.seas.upenn.edu (Lonhyn Jasinsky) writes:
> 
> Has anyone out there ever needed/implemented some nifty
> scheme for managing shared memory?  I have a program 
> that currently malloc's all of its structures and whatnot.
> I would like to change it so that it instead keeps all of
> the data in shared memory.  I therefore need something to

Yes I have a general memory manager that allows you to define address ranges
to be carved up.  It also has facilities for growing sizes (defined by a user
routine) and trapping out-of-memory conditions.  And I also have a version of
"malloc" which is built on this algorithm.  It is designed to be VERY fast
especially on paging systems by managing internal data structures in such a
way as to avoid "memory wandering" to find available chunks.  There is even
a "stackalloc" to allocate TEMPORARY memory from your stack [this one could
in general be difficult to port if the compiler tries to get too smart about
the stack -- assuming you have a stack :-)].  If you want to have a go at it,
just let me know (I have not been in the habit of trying to write "portable"
code but it should port without too much difficulty).


Gordon Cross
Intergraph Corp.  Huntsville, AL
...uunet!ingr!crossgl

crossgl@ingr.UUCP (Gordon Cross) (12/05/88)

In article <6490@netnews.upenn.edu>, lonhyn@eniac.seas.upenn.edu (Lo> 
> Has anyone out there ever needed/implemented some nifty
> scheme for managing shared memory?  I have a program 
> that currently malloc's all of its structures and whatnot.
> I would like to change it so that it instead keeps all of
> the data in shared memory.  I therefore need something to

Yes I have a general memory manager that allows you to defineax
ress ranges
to be carved up.  It also has facilities for growing sizes (defined by a user
routine) and trapping out-of-memory conditions.  And I also have a version of
"malloc" which is built on this algorithm.  It is designed to be VERY fast
especially on paging systems by managing internal data structures in such a
way as to avoid "memory wandering" to find available chunks.  There is even
a "stackalloc" to allocate TEMPORARY memory from your stack [this one could
in general be difficult to port if the compiler tries to get too smart about
the stack -- assuming you have a stack :-)].  If you want to have a go at it,
just let me know (I have not been in the habit of trying to write "portable"
code but it should port without too much difficulty).


Gordon Cross
Intergraph Corp.  Huntsville, AL
...uunet!ingr!crossgl
#! rnews 1602Fr