进程间通信(一)
这一节讲共享内存
内存大家都知道是什么东东,那共享内存是什么东东呢?很简单嘛,内核专
门留出了一块内存,这段内存呢,可以由需要访问的进程将其映射到自己的私有
地址空间,不同进程可以及时看到某进程对共享内存的数据进行更新。采用内存
共享通信机制的好处是什么呢?很明显,就是效率非常高,为什么?因为进程可
以直接读写内存,不再需要进行数据的拷贝。当然了,由于多个进程都可以对共
享内存进行读写数据,自然地,要引进某种同步机制,如互斥锁和信号量等。
如何实现共享内存
共享内存的实现分为两个步骤,第一步是创建共享内存,这里用到的函数是
shmget,也就是从内存中获得一段共享内存区域。第二步映射共享内存,也就
是把这段刚创建的共享内存映射到具体的进程空间去,这里使用的函数是 shmat。
完成这二步后,就可以使用不带缓存的 I/O 读写命令对其进行操作啦。如果要撤
销映射,那么使用函数 shmdt 来实现。