进程通信--共享内存
2010-06-22 19:01
295 查看
定义:
共享内存,就是通过内核操作,在内存上开辟一块供多个进程共同访问的内存块。这块内存块的创建和
销毁是由内核来控制(当然,也可以在进程内部调用系统库函数来创建和销毁,类似于消息机制和信号
量机制)。在这个内存块上,进程可以像操作内存一样操作共享区内存。
作用:
第一个,就是提供进程间大信息量,而且快速的通信。这点也是大家第一反应想得到的。
第二个,除了提供最快速的进程间通信外,共享内存还有一个作用就是保存关键数据。在服务器设计时
,为了保证数据的不因为进程的崩溃而跟着丢失,就可以用共享内存的方法,将数据保存在共享内存里
面。这样,服务器程序重新启动后,还可以继续处理该部分数据。
操作函数:
三个基本的操作shmget、shmat、shmctl,有关函数的具体意义,参看Linux man帮助。
应用:
父子进程:父进程创建后,子进程直接共享。
不相关进程:通过shmid标识和函数shmat来共同访问。
查看和销毁共享内存情况:
查看命令:ipcs -m
销毁命令:ipcrm shm shmid
修改系统内核对共享内存的限制:/proc/sys/kernel/shmX 相关文件。
为了能在程序重启后,重新读取共享内存数据,需要在共享内存上保存一定的数据结构信息,记录共享
内存上的数据的信息,能够正确读取其含义。
共享内存,就是通过内核操作,在内存上开辟一块供多个进程共同访问的内存块。这块内存块的创建和
销毁是由内核来控制(当然,也可以在进程内部调用系统库函数来创建和销毁,类似于消息机制和信号
量机制)。在这个内存块上,进程可以像操作内存一样操作共享区内存。
作用:
第一个,就是提供进程间大信息量,而且快速的通信。这点也是大家第一反应想得到的。
第二个,除了提供最快速的进程间通信外,共享内存还有一个作用就是保存关键数据。在服务器设计时
,为了保证数据的不因为进程的崩溃而跟着丢失,就可以用共享内存的方法,将数据保存在共享内存里
面。这样,服务器程序重新启动后,还可以继续处理该部分数据。
操作函数:
三个基本的操作shmget、shmat、shmctl,有关函数的具体意义,参看Linux man帮助。
应用:
父子进程:父进程创建后,子进程直接共享。
不相关进程:通过shmid标识和函数shmat来共同访问。
查看和销毁共享内存情况:
查看命令:ipcs -m
销毁命令:ipcrm shm shmid
修改系统内核对共享内存的限制:/proc/sys/kernel/shmX 相关文件。
为了能在程序重启后,重新读取共享内存数据,需要在共享内存上保存一定的数据结构信息,记录共享
内存上的数据的信息,能够正确读取其含义。
相关文章推荐
- Linux进程通信之共享内存
- Linux进程通信IPC--共享内存SharedMemory
- 共享内存应用于进程通信
- Linux进程通信之共享内存
- 进程之间使用共享内存通信....
- nginx进程间的通信机制源码分析(一)----共享内存
- 进程通信----共享内存以及mmap函数实现共享内存
- 进程通信程序管理---共享内存和信号量(Linux)
- linux进程间的通信(C): 共享内存
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped
- Linux进程通信——共享内存
- php-通过共享内存实现消息队列和进程通信
- linux进程通信IPC之共享内存的IPC_PRIVATE与ftok比较
- linux 进程间的通信(五) 共享内存-2
- LINUX_C编程实战-《进程间的通信》-共享内存
- 【进程】进程通信-共享内存
- 进程间的通信---共享内存
- 进程通信-共享内存-mmap()-code1
- 非亲缘进程间的共享内存与信号通信
- linux进程通信之共享内存高级议题