当前位置:网站首页>进程间的通信方式简介
进程间的通信方式简介
2022-07-30 05:39:00 【l_ethan】
目录
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用于表示进程间通信的特殊文件类型。本质位内核借助缓冲区形成的伪文件。可以用文件描述符来引用套接字。
边栏推荐
- cnpm安装步骤
- 2022年SQL经典面试题总结(带解析)
- 【图像检测】基于灰度图像的积累加权边缘检测方法研究附matlab代码
- optimizer.zero_grad()
- MySQL的 DDL和DML和DQL的基本语法
- 453.最小操作数使数组元素相等
- 2022 SQL big factory high-frequency practical interview questions (detailed analysis)
- 质数(清华大学机试题)(DAY 86)
- create-nuxt-app创建出来的项目没有server
- My first understanding of MySql, and the basic syntax of DDL and DML and DQL in sql statements
猜你喜欢
![[GO Language Basics] 1. Why do I want to learn Golang and the popularization of GO language entry](/img/ac/80ab67505f7df52d92a206bc3dd50e.png)
[GO Language Basics] 1. Why do I want to learn Golang and the popularization of GO language entry

idea 编译protobuf 文件的设置使用

453.最小操作数使数组元素相等

解决没有配置本地nacos但是一直发生localhost8848连接异常的问题

MySQL 灵魂 16 问,你能撑到第几问?

net start mysql MySQL service is starting. MySQL service failed to start.The service did not report any errors.

JVM之GC 调优工具 Arthas 实战使用(二)

It is enough for MySQL to have this article (37k words, just like Bojun!!!)

cmd(命令行)操作或连接mysql数据库,以及创建数据库与表

4、nerf(pytorch)
随机推荐
质数(清华大学机试题)(DAY 86)
2022年SQL经典面试题总结(带解析)
MySQL模糊查询性能优化
[Image processing] Image skeleton extraction based on central axis transformation with matlab code
Anaconda安装教程
MySQL (2)
Prime numbers (Tsinghua University computer test questions) (DAY 86)
Navicat cannot connect to mysql super detailed processing method
Numpy 中 np.vstack() 和 np.hstack() 简单解析
破纪录者(Google Kickstart2020 Round D Problem A)
navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)
[详解C语言]一文带你玩转数组
81.搜索旋转排序数组II(数组旋转后二分查找)
MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法
[Koltin Flow (1)] Five ways to create flow
【图像处理】基于中轴变换实现图像骨架提取附matlab代码
asyncawait和promise的区别
cross_val_score的用法
微信小程序开发学习
MySQL database basics (a systematic introduction)