• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Shared Memory and login sessions
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shared Memory and login sessions


  • Subject: Re: Shared Memory and login sessions
  • From: Terry Lambert <email@hidden>
  • Date: Thu, 7 Feb 2008 16:14:31 -0800

On Feb 7, 2008, at 3:23 PM, Andy Klepack wrote:
I’m curious whether there is any guarantee that leaked shared memory is reclaimed when a user logs out.

If a region is opened via shm_open but not closed before the user logs out, is that memory reclaimed by the OS or does it persist until reboot? My suspicion is that it is not reclaimed since there is no assurance that the sharing processes are all running in the user’s session, but a definitive answer would be great.

It is a persistent object, so unless you explicitly destroy it, it will effectively persist forever (or until the next reboot, or until the segment is explicitly deleted by another process).


There is lots of documentation on how to implement shared memory using System V shared memory, POSIX shared memory (which is what you are talking about when you talk about shm_open), and mmap(). I typically suggest using mmap(), since there are no resource tracking cleanup issues with mmap(), as there are with the others. You can also hand around memory maps between processes using Mach primitives, which will be resource tracked and cleaned up when the last reference goes away.

Which method you choose really depends on whether or not your process is intended to be runnning all the time, and if so, whether it is intended to resynchronize or delete and recreate the mapping when it restarts.

Typicially, people who choose to go the POSIX shared memory (shm_open) route register atexit() handlers and signal handlers so that if the process dies, it will clean up after itself. Otherwise they pick some other method of sharing memory.

-- Terry _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Shared Memory and login sessions (From: Andy Klepack <email@hidden>)

  • Prev by Date: Shared Memory and login sessions
  • Next by Date: WARNING: The module QTSSAccessModule is not a compatible QTSS API module.
  • Previous by thread: Shared Memory and login sessions
  • Next by thread: WARNING: The module QTSSAccessModule is not a compatible QTSS API module.
  • Index(es):
    • Date
    • Thread