【操作系统】聊聊进程间通信方式

news/2024/10/18 9:23:04/

作为操作系统软件治理的核心 进程,那么进程间通信的方式就非常重要,常见的比如管道、消息队列、共享内存、信号量、信号、Socket等。本篇主要简单介绍下

我们知道每个进程都有自己独立的用户空间,而内核空间是共享的。
在这里插入图片描述

管道

ps -ef | grep mysql 其中的 | 就是一个管道符,只能进行单向传输数据。

mkfifo myPipe  创建一个管道
echo "hello" > myPipe   写入
cat < myPipe 读取

管道通信效率低,不适合进程间频繁的交换数据。
创建一个匿名管道,一个是管道的读取端描述符fd[0],另一个是管道的写入端描述符fd[1],只存在内存中。
在这里插入图片描述
管道就是内核里的一串缓存,写入的数据存储在内核中,另一个进程读取数据也是从内核中读取。只能在父子进程或者兄弟进程中使用。

消息队列

管道的通信方式效率比较低,管道不适合进程间频繁交换数据,消息队列可以解决这个问题。通过进程A写入消息队列后,B异步的进行读取。
但是消息队列本身是保存在内核中的消息链表中,主要有几点,消息的数据格式,消息序列化、反序列化等。

消息队列本身通信不及时,附件也有大小限制,并且不适合传输较大的文件,需要在内核态和用户态之间来回数据拷贝。这个比较耗费资源。而零拷贝本质就是为了减少这种开销。

共享内存

消息队列本身有内核态到用户态的开销,共享内存可以解决,不同的进程通过虚拟内存映射到不同的物理地址上,那么开通一块公共区域,进程时间可以通过直接访问,就可以减少这种开销,提升通信速度。

在这里插入图片描述

信号

在这里插入图片描述
我们知道 结束一个进程通过可以kill -9 pid,但是为什么就可以呢,其实就是通过信号给进程发送一个结束该进程的通知。
而ctrl+c sigint 终止进程 、ctrl+z 停止进程。

信号是进程间通信机制中唯一的异步通信机制

socket

以上介绍的其实只局限于本机进程通信,但是想要实现不同机器之间通信 可以使用socket套接字。主流的两种其实就是UDP和TCP。

在这里插入图片描述
这里简单说以下TCP的方式

1.客户端和服务端都进行创建socket
2.服务端调用bind,将绑定在IP和端口上
3.服务端调用listen,进行监听
4.服务端调用accept,等得客户端连接。
5.客户端调用connect 建立连接
6.客户端写入数据,服务端读取数据
7.断开连接,调用close,服务端读取到EOF,处理完毕后,服务端调用close,表示连接关闭。


http://www.ppmy.cn/news/1115777.html

相关文章

初识软件工程

软件工程是一门涵盖软件开发、维护和管理的学科&#xff0c;它通过应用工程化的原则和方法来提高软件系统的质量和可靠性。在当今数字化和信息化的时代&#xff0c;软件工程对于现代社会的各个领域都具有至关重要的作用。 基本概念&#xff1f; 计算机系统中与硬件相互依存的一…

通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中&#xff0c;Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面&#xff1a; 反射&#xff1a;Metadata可以用于在运行时获取类的信息&#xff0c;包括类的名称、属性、函数等。通过反射&…

沃通SSL证书、国密SSL证书、IPSSL证书,2023中秋国庆双节钜惠

2023中秋国庆喜相逢&#xff0c;沃通CA特此推出“迎中秋、庆国庆&#xff0c;沃通SSL证书双节钜惠”活动&#xff0c;即日起至2023年10月18日&#xff0c;沃通SSL证书、国密SSL证书、IP SSL证书等多款热销SSL证书产品优惠来袭。 沃通全球信任SSL证书&#xff0c;助力数据安全保…

终于搞清了:SPI、UART、I2C通信的区别与应用!

电子设备之间的通信就像人类之间的交流&#xff0c;双方都需要说相同的语言。在电子产品中&#xff0c;这些语言称为通信协议。 之前有单独地分享了SPI、UART、I2C通信的文章&#xff0c;这篇对它们做一些对比。 串行 VS 并行 电子设备通过发送数据位从而实现相互交谈。位是…

PCA9306——I2C电平转换模块

PCA930——I2C电平转换 PCA9306是双向I2C总线和SMBus电压电平转换器&#xff0c;具有启用&#xff08;EN&#xff09;输入&#xff0c;可从1.0 V到3.6 V和1.8 V到5.5V的电平转换。 PCA9306允许在1.0 V和5V之间的双向电压转换&#xff0c;而不使用方向引脚。开关的低接通状态电…

为什么用IP访问网站也要使用SSL证书

IP地址SSL证书是一种专门用于公网IP地址验证的数字证书。它可以为公网IP地址提供安全的数据传输保障&#xff0c;解决了IP地址明文传输的安全隐患&#xff0c;保护了IP地址的数据传输安全。 与普通的SSL证书不同&#xff0c;IP地址SSL证书是基于IP地址进行验证的。在申请IP地址…

路由器PLC接入和多链路组网的区别?

路由器PLC接入和多链路组网都是现代网络技术中的重要概念&#xff0c;但它们在实现方式和应用场景上存在明显的区别。 路由器PLC接入&#xff1a; 路由器PLC接入是一种通过电力线通信&#xff08;PLC&#xff09;技术实现的网络接入方式。它将PLC模块与路由器连接&#xff0c…

亚马逊跟卖是什么意思?怎么做才能防跟卖?

亚马逊上的"跟卖"&#xff08;也称为"跟卖者"&#xff09;是指其他卖家在同一产品列表上销售相同的商品&#xff0c;与主要卖家&#xff08;通常是品牌或官方授权卖家&#xff09;竞争销售。这是亚马逊平台的一个常见现象&#xff0c;但是很多卖家朋友并不…