Linux给我们提供了丰富的内部进程通信机制,包括共享内存、内存映射文件、先入先出(FIFO)、接口(sockets)以及多种用于同步的标识。在本文中,我们主要讨论一下共享内存和内存映射文件技术。
一般来说,内部进程通信(interprocess communication)也就是IPC,是指两个或两个以上进程以及两个或者两个以上线程之间进行通信联系。每个IPC机制都有不同的强项或者弱点,不过没有一个IPC机制包含内建的同步方法。因此程序员不但需要自己在程序中实现同步,而且还需要为了利用IPC机制而自己开发通信协议。
共享内存
使用共享内存和使用malloc来分配内存区域很相似。使用共享内存的方法是:
1.对一个进程/线程使用shmget分配内存区域。
2.使用shmat放置一个或多个进程/线程在共享内存中,你也可以用shmctl来获取信息或者控制共享区域。
3.使用shmdt从共享区域中分离。
4.使用shmctl解除分配空间
下面是个例子:
|
共享内存是Linux中最快速的IPC方法。他也是一个双向过程,共享区域内的任何进程都可以读写内存。这个机制的不利方面是其同步和协议都不受程序员控制,你必须确保将句柄传递给了子进程和线程。
内存映射文件
内存映射文件不仅仅用于IPC,在其他进程中它也有很大作用。如果你需要将一个分配的缓冲区初始化为零,只要记住/dev/zero 。你也可以通过将文件映射到内存中以提高其性能。它使你可以像读写字符串一样读写文件。下面是个例子:
|
利用内存映射来处理IPC的好处是在整个过程中你不需要处理句柄:只要打开文件并把它映射在合适的位置就行了。你可以在两个不相关的进程间使用内存映射文件。
使用内存映射的缺点是速度不如共享内存快。如果凑巧文件很大,所需要的虚拟内存就会很大,这样会造成整体性能下降。
浏览URL http://www.qqread.com/linux/2007/01/y295483.html相关专题
- 共享上网专题 (2204篇文章)
- 三机互联与共享专题 (2289篇文章)
- 局域网共享专题 (2650篇文章)
- Adsl共享上网 (2242篇文章)
- Linux集群技术 (8384篇文章)
- 体验Linux的音影世界 (8056篇文章)
- Linux驱动大全 (8856篇文章)
- Linux下的路由的配置与应用 (11856篇文章)
- Linux命令简介 (9916篇文章)
- Linux防火墙 (9736篇文章)
- 安装qmail全套功略 (18次浏览)
- TurboLinux 入门教程:第七课 TurboLinux简介 (18次浏览)
- Linux系统管理员秘技:用快捷命令一招制胜 (18次浏览)
- Linux系统命令分类详解 (1) (18次浏览)
- Linux下使用aMsn详解 (18次浏览)
- 你会在Linux下用POP3收Web电子邮箱吗? (18次浏览)
- 在Linux中用三款工具轻松制作网页 (18次浏览)
- Linux上的偷窺裝置 (1394的使用) (18次浏览)
- 深入浅出分析Linux内核漏洞的问题 (18次浏览)
- Linux内核调试工具:Kdb应用指南(4) (18次浏览)



