进程通信--共享内存


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

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

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

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

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

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

 

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

 

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值