进程间通信的方式及其特点

1.管道

在内核内存中维护一个缓冲器,这个缓冲器的存储能力有限的,可以读写操作,有名管道(FIFO)有文件实体,匿名管道(PIPE)没有文件实体。匿名管道只能用于具有公共祖先的进程。半双工,一端用于写入,一端用于读取。(同一个时间只能往同一个方向,方向是可以双向的)

2.信号

简介:是事件发生时的通知机制,有时也可以称之为软件中断,是一种异步通信的方式。

目的:

1.让进程知道已经发生了一个特定的事情

2.强迫进程执行自己代码中的信号处理程序

特点:

1.简单2.不能携带大量信息3.满足某个特定的条件发送4.优先级高

3.信号量

主要用于进程间以及同一进程不同线程之间的同步手段

特点

1.本质是一个计数器,内存中有多少个临界资源,信号量的数字就是多少

2.信号量基于操作系统的pv操作,程序对信号量的操作都是原子操作

3.信号量用于进程间同步,如果要进程间传递数据需要结合共享内存

4.共享内存

共享内存是效率最高的通信方式,允许两个或者多个进程共享物理内存的同一块区域.由于一个共享内存段会成为一个进程用户空间的一部分,所以这种机制无需内核介入

5.消息队列

提供了一种在两个不相关的进程之间传递数据的简单高效的方法。消息发送后可以立刻返回,有消息系统来确保信息的可靠传递,消息发布者只管把消息发布到消息队列中而不管谁来取走,消息使用者只管从消息队列中去消息而不管谁发布的。

解耦:只要保证消息格式不变,发送发和接收方可以不受对方的影响

异步:非核心流程异步化,提高系统响应性能。

削峰:限制用户数量,将接受的用户请求写入消息队列中,然后消息队列长度超过最大数量,直接抛弃用户请求或跳转到错误节目

6.Socket通信

网络中不同主机上的应用进程之间双向通信的端口的抽象。Linux下本质为内核借助缓冲区形成的伪文件。可以用文件描述符来引用套接字。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值