服务器技术

 首页 > 服务器技术 > Linux > linux进程间通信综述 - Linux操作系统:Ubuntu_Cento

linux进程间通信综述 - Linux操作系统:Ubuntu_Cento

分享到:
【字体:
导读:
          linux进程间通信主要分为以下4个领域(1)消息传递(管道,FIFO,消息队列)(2)同步(互斥锁,条件变量,读写锁,信号量)(3)共享内存区(匿名共享内存区,有名共享内存区)(...

linux进程间通信主要分为以下4个领域
(1)消息传递(管道,FIFO,消息队列)
(2)同步(互斥锁,条件变量,读写锁,信号量)
(3)共享内存区(匿名共享内存区,有名共享内存区)
(4)过程调用(Solaris门,Sun RPC)


linux进程间的信息共享可以分为
(1) 基于文件系统的共享
(2) 基于内核的共享
(3) 基于共享内存区的共享


IPC对象的持续性
(1)随进程间持续的IPC对象一直存在到打开着该对象的最后一个进程关闭该对象的最后一个进程关闭该对象为止。
(2)随内核持续的IPC对象一直存在到内核重新自举或显式删除该对象为止。
(3)随文件系统持续的IPC对象一直存在到显示删除该对象为止。即使系统自举了,该对象还是存在的。


IPC类型                                       持续性
管道                                           随进程
FIFO                                          随进程

Posix互斥锁                                 随进程
Posix条件变量                              随进程
Posix读写锁                                 随进程
fcntl记录上锁                                随进程

Posix消息队列                              随内核
Posix有名信号量                           随内核
Posix基于内存的信号量                   随进程
Posix共享内存区                           随内核

System V消息队列                        随内核
System V信号量                           随内核
System V共享内存区                     随内核

TCP套接字                                  随进程
UDP套接字                                  随进程
Unix域套接字                               随进程

 

 

 

名字空间:
当两个或多个无亲缘关系的进程使用某种类型的IPC对象来彼此交换信息时,该IPC对象必须有一个某种形式的名字或者标识符,这样其中一个进程(往往是服务器)可以创建该IPC对象,其余进程则可以指定同一个IPC对象。

IPC类型                        用于打开或创建IPC的名字空间                IPC打开后的标识
管道                                     没有名字                                      描述符
FIFO                                    路径名                                         描述符

Posix互斥锁                          没有名字                                      pthread_mutex_t指针
Posix条件变量                       没有名字                                      pthread_cond_t指针
Posix读写锁                          没有名字                                      pthread_rwlock_t指针
fcntl记录上锁                        路径名                                         描述符

Posix消息队列                       Posix IPC名字                              mqd_t值
Posix有名信号量                    Posix IPC名字                              sem_t指针
Posix基于内存的信号量            没有名字                                     sem_t指针
Posix共享内存区                    Posix IPC名字                              描述符


System V消息队列                key_t键                                       System V IPC标识符
System V 信号量                  key_t键                                       System V IPC标识符
System V共享内存区              key_t键                                      System V IPC 标识符

门                                      路径名                                         描述符
sun RPC                             程序/版本                                     RPC句柄

TCP套接字                            IP地址与TCP 端口                         描述符
UDP套接字                           IP地址与UDP端口                          描述符
Unix域套接字                        路径名                                        描述符 

      上一篇:Linux下如何让自己的程序在开机时自动启动 - Li 下一篇:20个你不得不知的Linux服务器性能调优技巧 - Lin
    分享到:
    20个你不得不知的Linux服务器性能调优技...
    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并不是那么重要,相反,能够长时间处理高负载才是最关键的。Linux高可用服务器集群解决方案让IT...
    Linux下如何让自己的程序在开机时自动启...
    系统的服务在开机时一般都可以自动启动,那我们程序自己写的程序呢? windows系统在“开始”——〉“所有程序”——〉“启动”里面放个快捷方式就行,那Linux下呢? 这也是一个比较简单的问题,有不少的方法可以解决,这里介绍三种方法。因为是简单介绍,所以具体细节不是很详细,可以通过man看看相关手册。 一、/etc/rc...
    •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
    • 在这里……