Linux进程间通信-几种通信方式的比较
2017-10-27 21:38
323 查看
前面几篇关于Linux进程间通信(单机通信)差不多就告一段落,以后有什么需要补充的再补充。既然写了几篇进程间通信,那么今天我们就来总结总结,比较一下这几种通信方式,看看在什么样的情况下适用于什么样的通信方式。这篇就不具体写函数实现和具体的参数了,大家可以在前面几篇看。
第一种通讯方式:管道
在内存中创建一个管道,它不属于任何区域或进程。
有名管道:应用于任意两个进程之间数据的单向传递。
无名管道:相对于有名管道而言的,无名管道在使用时产生,不使用后释放,并不会在系统上留下痕迹。无名管道因其使用前没有任何标识,所以它只能应用于父子进程之间。
注:因为管道是半双工通讯,而无名管道创建后,父进程在fork产生子进程后,两个进程分别有一对读写,所以要在父子进程中分别关闭读或写。
第二种通讯方式:信号量
信号量作用:进程间同步控制(用于多进程访问临界资源)
信号量相当于记录资源能同时被多少个进程访问。函数semctl中第四个参数(union semun arg 它是可选的参数)是一个联合体,里面的对象val的值,0表示a和b是服务关系(比如a进程执行完b进程再开始执行),1表示a和b是竞争关系(a,b进程抢占一个资源)。
第三种通讯方式:消息队列
消息:数据&类型
消息队列:是一种临时存储消息的队列,完成进程间数据传递,不过它不同于普通的队列(先进先出),它是一种优先级队列,根据用户选择的数据类型,优先获取对应数据类型的数据。
与信号量对比:都以内核对象来确保多进程访问同一个消息队列,信号量进行进程同步控制,而消息队列发送实际数据。
与管道对比:管道发送的数据没有类型,读取数据端无差别从管道中按照数据的前后顺序读取数据,消息队列数据有类型,读端可以根据数据类型读取特定数据。
第四种通讯方式:共享内存
共享内存也有内核对象来管理共享内存区域
共享内存是最快的一种IPC,在各个进程都有指针直接指向开辟内存区域。访问时当做本进程中的内存控制直接操作。
共享内存是两个以上的进程能够操作同一块物理空间的内存区域,所以共享的区域就成了临界资源,所以对于共享区域的访问必须做同步控制。(通常使用信号量)
第一种通讯方式:管道
在内存中创建一个管道,它不属于任何区域或进程。
有名管道:应用于任意两个进程之间数据的单向传递。
无名管道:相对于有名管道而言的,无名管道在使用时产生,不使用后释放,并不会在系统上留下痕迹。无名管道因其使用前没有任何标识,所以它只能应用于父子进程之间。
注:因为管道是半双工通讯,而无名管道创建后,父进程在fork产生子进程后,两个进程分别有一对读写,所以要在父子进程中分别关闭读或写。
第二种通讯方式:信号量
信号量作用:进程间同步控制(用于多进程访问临界资源)
信号量相当于记录资源能同时被多少个进程访问。函数semctl中第四个参数(union semun arg 它是可选的参数)是一个联合体,里面的对象val的值,0表示a和b是服务关系(比如a进程执行完b进程再开始执行),1表示a和b是竞争关系(a,b进程抢占一个资源)。
第三种通讯方式:消息队列
消息:数据&类型
消息队列:是一种临时存储消息的队列,完成进程间数据传递,不过它不同于普通的队列(先进先出),它是一种优先级队列,根据用户选择的数据类型,优先获取对应数据类型的数据。
与信号量对比:都以内核对象来确保多进程访问同一个消息队列,信号量进行进程同步控制,而消息队列发送实际数据。
与管道对比:管道发送的数据没有类型,读取数据端无差别从管道中按照数据的前后顺序读取数据,消息队列数据有类型,读端可以根据数据类型读取特定数据。
第四种通讯方式:共享内存
共享内存也有内核对象来管理共享内存区域
共享内存是最快的一种IPC,在各个进程都有指针直接指向开辟内存区域。访问时当做本进程中的内存控制直接操作。
共享内存是两个以上的进程能够操作同一块物理空间的内存区域,所以共享的区域就成了临界资源,所以对于共享区域的访问必须做同步控制。(通常使用信号量)
相关文章推荐
- 【Linux】几种进程间通信方式的清晰比较
- linux几种进程间通信方式比较
- linux下进程间通信IPC几种方式性能比较
- Linux进程通信总结(linux进程间通信的几种机制的比较及适用场合)
- Linux进程间通信IPC的几种方式简介
- linux系统的进程间通信有哪几种方式,及优劣?
- 常用的几种进程通信方式的比较
- Linux进程间通信的各种方式及其比较
- linux下进程间通信的几种主要方式简介
- 【转】 Linux/Unix 进程间通信的各种方式及其比较
- Linux进程间通信(IPC)的几种方式
- 转:linux进程间通信的几种机制的比较及适用场合
- linux进程间通信的几种机制的比较及适用场合
- linux进程间通信(IPC)几种方式
- linux下几种IPC通行方式比较
- linux 进程间通信的几种方式
- 进程间通信——几种方式的比较和详细实例
- linux下几种IPC通行方式比较
- linux 进程间通信的几种方式
- Linux几种内核配置方式的比较