进程通信--共享内存

来源:互联网 发布:js代码封装 编辑:程序博客网 时间:2024/05/05 14:46


定义:
共享内存,就是通过内核操作,在内存上开辟一块供多个进程共同访问的内存块。这块内存块的创建和

销毁是由内核来控制(当然,也可以在进程内部调用系统库函数来创建和销毁,类似于消息机制和信号

量机制)。在这个内存块上,进程可以像操作内存一样操作共享区内存。
作用:
第一个,就是提供进程间大信息量,而且快速的通信。这点也是大家第一反应想得到的。
第二个,除了提供最快速的进程间通信外,共享内存还有一个作用就是保存关键数据。在服务器设计时

,为了保证数据的不因为进程的崩溃而跟着丢失,就可以用共享内存的方法,将数据保存在共享内存里

面。这样,服务器程序重新启动后,还可以继续处理该部分数据。
操作函数:
三个基本的操作shmget、shmat、shmctl,有关函数的具体意义,参看Linux man帮助。
应用:
父子进程:父进程创建后,子进程直接共享。
不相关进程:通过shmid标识和函数shmat来共同访问。

查看和销毁共享内存情况:
查看命令:ipcs -m
销毁命令:ipcrm shm shmid

 

修改系统内核对共享内存的限制:/proc/sys/kernel/shmX 相关文件。

 

为了能在程序重启后,重新读取共享内存数据,需要在共享内存上保存一定的数据结构信息,记录共享

内存上的数据的信息,能够正确读取其含义。

原创粉丝点击