| 
 | 
 
共享内存就是分配一块能被其他进程访问的内存。它允许两个并无关联的进程访问同一块逻辑内存区。两个进程利用共享内存传送数据是一种比较有效的方法之一。其实,在不同的进程间所共享的内存区往往指向的是同一块物理内存区域。 
 
每个共享内存段在内核中维护着一个内部结构 shmid_ds (和消息队列、信号量一样),该数据结构定义在头文件 linux/shm.h中: 
 /* Obsolete, used only for backwards compatibility and libc5 compiles */ 
 struct shmid_ds { 
         struct ipc_perm         shm_perm;       /* operation perms */ 
         int                     shm_segsz;      /* size of segment (bytes) */ 
         __kernel_time_t         shm_atime;      /* last attach time */ 
         __kernel_time_t         shm_dtime;      /* last detach time */ 
         __kernel_time_t         shm_ctime;      /* last change time */ 
         __kernel_ipc_pid_t      shm_cpid;       /* pid of creator */ 
         __kernel_ipc_pid_t      shm_lpid;       /* pid of last operator */ 
         unsigned short          shm_nattch;     /* no. of current attaches */ 
         unsigned short          shm_unused;     /* compatibility */ 
         void                    *shm_unused2;   /* ditto - used by DIPC */ 
         void                    *shm_unused3;   /* unused */ 
 };  代码中主要字段含义如下: 
shm_perm : 操作许可,里面包含共享内存的用户 ID 、组 ID 等信息。 shm_segsz : 共享内存段的大小,以字节为单位。 shm_atime : 最后一个进程访问共享内存的时间。 shm_dtime : 最后一个进程离开共享内存的时间。 shm_ctime : 最后一次修改共享内存的时间。 shm_cpid : 创建共享内存的进程 ID 。 shm_lpid : 最后操作共享内存的进程 ID 。 shm_nattch : 当前使用该共享内存段的进程数量。 
 
  |   
 
 
 
 |