The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com



High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
ELF format shared library? wntrmead High Level Programming 11 11-16-2007 02:19 PM
shared library areef4u UNIX for Advanced & Expert Users 1 08-01-2006 03:14 AM
Shared memory shortage but lots of unused memory cjcamaro UNIX for Advanced & Expert Users 1 10-13-2004 06:10 PM
Shared Library Problem vinz HP-UX 1 08-27-2004 11:57 AM
Shared Library rajashekaran High Level Programming 2 08-03-2002 02:59 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #1 (permalink)  
Old 05-21-2007
DreamWarrior DreamWarrior is offline
Registered User
  
 

Join Date: Oct 2003
Posts: 70
Shared memory in shared library

I need to create a shared library to access an in memory DB. The DB is not huge, but big enough to make it cumbersome to carry around in every single process using the shared library. Luckily, it is pretty static information, so I don't need to worry much about synchronizing the data between instances of the shared library. However, what I do need to worry about is initializing the memory once and never again.

I would love all the shared libraries to have a library scoped variable, but I don't think that's possible. If it is, let me know...but I know normally each process gets its own copy of the shared library's data segment. I don't think there is a way to flag a portion of that data segment as shared across all instances of the library.

So, I guess I'll need to have the library access the DB in shared memory. However, the first instance of the library to be started up needs to create the shared memory, attach to it, and load it all before any other possible instances can use it. How do I guarentee that this create/initialize happens once before the shared memory is used?

At first, I thought the non-existance of the shared memory segment would do it...but there exists a race condition between create and initialize where-in another instance of the library would see the shared memory but not be able to access it because it has not yet been inited. I know I can store posix mutex's in shared memory...so I guess I can use one of them. However, the other problem exists when the shared memory segment is "left over" from previous runs.

What happens then? So...all library's "detach" from the segment, but none of them destroy it. Now what...the next time the library starts fresh it should re-init the shared memory, but won't.

Hummm...any ideas? Some direction? What is the common method of providing shared memory syncronization? Should I use a system semaphore? Wouldn't it suffer from the same "warm" start problem (detached processes from shared library but memory/semaphores still resident).

This will be written for AIX 5, BTW, for those interested.
 

Bookmarks

Tags
linux

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 09:24 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0