zz关于共享内存DEST状态的说明(转载)

关于共享内存DEST状态的说明(转载)

由 Marchday 在 周三, 2006-05-31 08:38 提交
我们解开util-linux-2.12a-16.EL4.6.src.rpm的源码,在文件sys-utils/ipcs.c中的do_shm函数可以 看到,程序通过调用shmctl的SHM_INFO命令获取共享内存的整体信息,然后逐段调用shmctl的STAT命令,获取该段内存的信息(就是每一 个shmid对应的信息)。当该段内存的mode字段设置了SHM_DEST位时就会显示"dest"字样。

SHM_DEST是内核设置的,接着再看看内核关于实现ipc的源码,在ipc/shm.c中可以看到,当用户调用shmctl的IPC_RMID时,内 核首先看有多少个进程还和这段内存关联着,如果关联数为0,就会销毁(释放)这段内存,否则就设置这段内存的mode位SHM_DEST,并设置它的 key为IPC_PRIVATE,这意味着关联着的进程仍可合法存取这端内存,但是它不能再被新的进程关联了。 

你可能感兴趣的:(zz关于共享内存DEST状态的说明(转载))