曲径通幽论坛

标题: 共享内存及相关数据结构 [打印本页]

作者: beyes    时间: 2009-9-5 16:41
标题: 共享内存及相关数据结构
共享内存就是分配一块能被其他进程访问的内存。它允许两个并无关联的进程访问同一块逻辑内存区。两个进程利用共享内存传送数据是一种比较有效的方法之一。其实,在不同的进程间所共享的内存区往往指向的是同一块物理内存区域。

每个共享内存段在内核中维护着一个内部结构 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 */
};
代码中主要字段含义如下:





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2