目录
1.管道
1.1匿名管道
简介:管道是一个在内核内存中维护的缓冲器,这个缓冲器的存储能力是有限的。
特点
1.拥有读、写操作的能力,匿名管道没有文件实体,有名管道有文件实体,但不存储数据。
2.一个管道是一个字节流,使用管道时不存在消息或者消息边界的概念,从管道读取数据的进程可以读取任意大小的数据块。
3.单工
4.只能用在公共祖先的进程
1.2有名管道
简介:克服匿名管道只能用于亲缘关系的进程间通信,提出了有名管道(FIFO)。提供了一个路径名与之关联,以FIFO的文件形式存在于文件系统中,但FIFO的内容保存在内存中,
特点:
1.当使用FIFO的进程退出后,FIFO文件将继续保存在文件系统中以便以后使用
2.FIFO有文件名,不相关的进程可以通过打开有名管道进行通信
2.信号
简介:是事件发生时对进程的通知机制,有时也称之为软中断,是一种异步通信的方式,信号可以导致一个正在运行的几次呢被另一个正在运行的异步进程中断,转而处理某个突发事件。
特点:
1.不能携带大量信息
2.满足某个特定条件才发送
3.优先级高
3.消息队列
简介:异步通信的方式,有三个内容组成,product消息的发起方,broker消息的服务端,customer消息的消费。
应用场景:
1.异步处理:并行提高处理的效率
2.应用解耦:整合不同系统之间的通信
3.流量削峰:如果消息队列长度超过最大数量,则直接抛弃用户请求或者跳转错误页面
4.共享内存
简介:共享内存允许两个或者多个进程共享物理内存的同一块区域(通常称为段)。由于一个共享内存段会成为一个进程用户空间的一部分,所以这种通信无需内核介入,所有需要做的就是让一个进程将数据赋值进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。
特点:速度快
5.信号量
简介:用户进程可以通过操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。信号量是一个变量来表示系统中某种资源的数量。
原语:是一种特殊的程序段,其执行只能一气呵成,不可被中断。
p、v操作
p:
1.s-1
2. s-1>=0进程继续执行
3.s-1<0,进程阻塞进入等待队列,转进程调度
v
1.s+1
2.s+1>0进程继续执行
3.s+1<=0,则从该信号的等待队列中唤醒一等待进程,然后在返回原进程继续执行或转进程调度
6.Socket
简介:socket可以看作是网络中不同主机上的应用进程之间进行双向通信的端口的抽象,是应用程序通过网络协议进行通信的接口。Linux环境下,socket用于表示进程间通信的特殊文件类型。本质位内核借助缓冲区形成的伪文件。可以用文件描述符来引用套接字。