1. shm_open()
-returns file descriptor
-in *tmpfs*
2. mmap() and unmmap()
– mapping virtual => physical addresses
3. shm_close()
4. shm_unline()
shared memory and synchronization
“like threads accessing shared state in a single address space… but for processes”
synchronization method…
1. mechanisms supported by process threding library
2. os-supported IPC for synchronization
// ... make shm data struct
typedef struct {
pthread_mutex_t mutex;
char *data;
} shm_data_struct, *shm_data_struct_t;
// ...create shm segment
seg = shmget(ftok(arg[0]. 120), 1024, IPC_CREATE|IPC_EXCL);
shm_address = shmat(seg, (void *) 0, 0);
shm_ptr = (shm_data_struct_t_)shm_address;
// ...create and init mutex
pthread_mutexattr_t(&m_attr);
pthread_mutexattr_set_pshared(&m_attr,PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&shm_ptr_putex, &m_attr);