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);