Sponsored Content
Top Forums Programming Shared memory in shared library Post 302118964 by DreamWarrior on Friday 25th of May 2007 01:36:05 PM
Old 05-25-2007
Quote:
Originally Posted by porter
1. Understand the process memory map on a particular OS.

2. attach the shared memory as early as possible in the process startup to prevent that memories use by other later activities.

3. if you fork, you will have two processes using the shared memory at the same address, I can't confirm if when you exec() the shared-memory actually gets detached. Would be worth finding out?
It is the 2 part that worries me. Writing a shared library that "insists" that it gets a certain region of memory to attach to seems prone to issue. However, writing it to attach to various different regions seems prone to issue too because all applications must attach to the same region if pointers are to be valid across them.

Humm...maybe it should be configurable...doesn't seem fair, however, to make the user set a value. Grrrrrrrr... Always a trade-off...make it fast, or make it reliable.... The reliable route would be to store all "pointers" as offsets...or page/offset pair. But, that means that the application must always translate my pointer type into the actual pointer.... Slow...tedious, error-prone. Grrrrrrrrrrrrr!!!!!!!!!
 

10 More Discussions You Might Find Interesting

1. Programming

Shared Library

hello all I want to work in shared libraries how can i work in Linux Environment ? (2 Replies)
Discussion started by: rajashekaran
2 Replies

2. HP-UX

Shared Library Problem

I have this error when I try to do check on the oracle database... Can you help me figure out whats the problem? Thanks for all the help! /usr/lib/pa20_64/dld.sl: Unable to find library 'libjox8.sl'. /usr/lib/pa20_64/dld.sl: Unable to find library 'libjox8.sl'. ... (1 Reply)
Discussion started by: vinz
1 Replies

3. UNIX for Advanced & Expert Users

Shared memory shortage but lots of unused memory

I am running HP-UX B.11.11. I'm increasing a parameter for a database engine so that it uses more memory to buffer the disk drive (to speed up performance). I have over 5GB of memory not being used. But when I try to start the DB with the increased buffer parameter I get told. "Not... (1 Reply)
Discussion started by: cjcamaro
1 Replies

4. UNIX for Advanced & Expert Users

shared library

What is the primary difference between static library and dynamic library? and how to write static shared library? (1 Reply)
Discussion started by: areef4u
1 Replies

5. Programming

Shared memory for shared library

I am writing a shared library in Linux (but compatible with other UNIXes) and I want to allow multiple instances to share a piece of memory -- 1 byte is enough. What's the "best" way to do this? I want to optimize for speed and portability. Obviously, I'll have to worry about mutual exclusion. (0 Replies)
Discussion started by: otheus
0 Replies

6. Shell Programming and Scripting

How to change a Makefile from building static library to shared library?

Hi: I have a library that it only offers Makefile for building static library. It built libxxx.a file. How do I in any way build a shared library? (either changin the Makefile or direct script or command to build shared library) Thanks. (1 Reply)
Discussion started by: cpthk
1 Replies

7. UNIX for Dummies Questions & Answers

Which sections of a shared library should be loaded in the physical memory?

Each shared library may contain sections with allocatable flag as below: ... .hash .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_d .rel.dyn .rel.plt .plt ... My questions is that: among above sections, which of them should be loaded in the physical memory by run-time linker... (3 Replies)
Discussion started by: Dongping84
3 Replies

8. OS X (Apple)

Linking to a shared library

I'm trying to get Valgrind to work with an openmpi application in OS X. However I want to hardcode the path to a shared library called libmpiwrap-amd64-darwin.so into my application so that it is available at runtime. In Linux this is relatively simple, I would just add the option... (0 Replies)
Discussion started by: Valgrinder
0 Replies

9. Programming

Shared library with acces to shared memory.

Hello. I am new to this forum and I would like to ask for advice about low level POSIX programming. I have to implement a POSIX compliant C shared library. A file will have some variables and the shared library will have some functions which need those variables. There is one special... (5 Replies)
Discussion started by: iamjag
5 Replies

10. AIX

Add shared members from library to same library in a different directory

I'm trying to install libiconv to AIX 7.1 from an rpm off of the perzl site. The rpm appears to install but I get this error message. add shr4.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a add shr.o shared members from /usr/lib/libiconv.a to ... (5 Replies)
Discussion started by: kneemoe
5 Replies
shmid_ds(4)						     Kernel Interfaces Manual						       shmid_ds(4)

NAME
shmid_ds - Defines a shared memory region SYNOPSIS
#include <sys/shm.h> struct shmid_ds{ struct ipc_perm shm_perm; int shm_segsz; u_short shm_lpid; u_short shm_cpid; u_short shm_nattch; time_t shm_atime; time_t shm_dtime; time_t shm_ctime; }; DESCRIPTION
The shmid_ds structure defines a shared memory region associated with a shared memory region ID. There is one shared memory region per ID. Collectively, the shared memory regions are maintained in a shared memory table, with the shared memory region IDs identifying the entries in the table. The IPC permissions for the shared memory regions are implemented in a separate, but associated, ipc_perm structure. A shared memory region is created indirectly via the shmget() call. If shmget() is called with a non-existent shared memory region ID, the kernel allocates a new shmid_ds structure, initializes it, and returns the ID that is to be associated with the region. The kernel allocates actual memory of shm_segsz bytes only when a process attaches a region to its address space. Attached regions are maintained in a separate region table. The entries in the shared memory table point to the associated attached regions in the region ta- ble. The same shared memory region can be attached multiple times, by the same or different processes. Each attachment of the region cre- ates a new entry in the region table. After a process attaches a shared memory region, the region becomes part of the process's virtual address space. Processes access shared memory regions by using the same machine instructions used to access any virtual address. FIELDS
The ipc_perm structure that defines permissions for shared memory operations. See NOTES. The size of the shared memory region, in bytes. The process ID of the process that created the shared memory region ID. The process ID of the last process that performed a shmat() or shmdt() operation on the shared memory region. The number of processes that currently have this region attached. The time of the last shmat() operation. The time of the last shmdt() operation. The time of the last shmctl() operation that changed a member of the shmid_ds structure. NOTES
The shm_perm field identifies the associated ipc_perm structure that defines the permissions for operations on the shared memory region. The ipc_perm structure (from the sys/ipc.h header file) is shown here. struct ipc_perm { ushort uid; /* owner's user id */ ushort gid; /* owner's group id */ ushort cuid; /* creator's user id */ ushort cgid; /* creator's group id */ ushort mode; /* access modes */ ushort seq; /* slot usage sequence number */ key_t key; /* key */ }; The mode field is a nine-bit field that contains the permissions for shared memory operations. The first three bits identify owner permis- sions; the second three bits identify group permissions; and the last three bits identify other permissions. In each group, the first bit indicates read permission; the second bit indicates write permission; and the third bit is not used. RELATED INFORMATION
Functions: shmat(2), shmdt(2), shmctl(2), shmget(2) delim off shmid_ds(4)
All times are GMT -4. The time now is 10:22 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy