进程间的通信方式总结
来源:互联网 发布:理财软件哪个口碑好 编辑:程序博客网 时间:2024/04/30 15:42
进程通信,是指进程之间的信息交换
具体通信方法有以下8种:
(一)低级进程通信
1. 信号量
适用场景:在进程互斥中,进程通过只修改信号量来想其他进程表明临界资源是否可用。
缺点:1)效率低,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲区中取得一个消息。
2)通信对用户不透明,其中共享数据结构的设置、数据的传送、进程的互斥与同步等,都必须有程序员去实现,操作系统只能提供共享存储器。
(二)高级进程通信
2. 共享存储器系统
适用场景:相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。
1)基于共享数据结构的通信方式。(低级通信)
举例:生产者-消费者问题,就是用有界缓冲区这种数据结构来实现通信的。
缺点:低效的,共享数据结构需要程序员设置,只适用于传递相对少量的数据。
2)基于共享存储区的通信方式。(高级通信)
在存储器中划出一块共享存储区,诸进程可通过对共享存储区中数据的读或写来实现通信。
3. 消息队列
适用场景: 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
4. 信号
适用场景:除了系统内核和root之外,只有具备相同id的进程才可以信号进行通信。
用于接受某种事件发生,除了用于进程间通信之外,进程还可以发送信号给进程本身。
5. 管道通信(可以实现一头读一头写)
1)无名管道
适用场景:是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系 通常是指父子进程关系。
2)有名管道
适用场景:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
3)高级管道
适用场景:将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
6. socket通信
套接字( socket ) : 也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
- 进程间的通信方式总结
- 进程间通信的方式总结
- 进程间的通信方式总结
- 总结下进程间通信的方式
- 进程间通信方式总结
- 进程间通信方式总结
- 进程间通信方式总结
- 进程通信方式总结
- 进程通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- Linux的进程/线程间通信方式总结
- 数组、字典转为json字符串
- 接口中去拿到对方的订单号
- STM32单片机中FLASH空间的分配之bootloader
- 安装scp命令
- 在centos7中安装mysql数据库和配置方法
- 进程间的通信方式总结
- C#当窗体大小改变时,窗体中的控件大小也随之改变
- Linux 之文件权限
- 多方位拓展之路:监控平台MongoDB实践
- Android设计-UI设计师不可不知的安卓屏幕知识
- fatal: Not a git repository (or any of the parent directories)
- 解决JQuery checkbox的attr(checked)一直为undefined问题
- Python Intro
- 公司难做的很