Linux:简介(进程间通信一)

从现在开始,我们开始学习进程间通信,这也是一个很重要的话题,话不多说,我们正式开始~~

我们之前学过,进程是独立的,就连父进程与子进程,都是独立的,但是凡事有利有弊,进程之间不能只有独立,也应该有协作,就比方说进程A处理某个数据给进程B,进程B分析这个数据给进程C,这些进程此时不应该相互独立,而应该互相协作,那么该怎么办呢??下面为你解答!!

1.理解层面

1.为什么要进程间通信

数据传输:⼀个进程需要将它的数据发送给另⼀个进程

资源共享:多个进程之间共享同样的资源

通知事件:⼀个进程需要向另⼀个或⼀组进程发送消息,通知它(它们)发⽣了某种事件(如进

程终⽌时要通知⽗进程)

进程控制:有些进程希望完全控制另⼀个进程的执⾏(如Debug进程),此时控制进程希望能够

拦截另⼀个进程的所有陷⼊和异常,并能够及时知道它的状态改变

举一个例子

考虑一个典型的多核处理器环境,在这个环境下,多个进程并行执行任务。如果这些进程要处理的数据量非常庞大,且每个进程只处理数据的其中一部分,那么如何让这些进程之间共享数据就变得非常关键。

场景:图像处理中的并行计算

假设我们要处理一个非常大的图像,需要进行复杂的图像滤波操作。假设有四个进程,分别处理图像的四个不同区域。每个进程会对自己的区域进行滤波处理,处理完成后,需要将处理结果汇总到一起生成最终的图像。

在这种情况下,进程间共享数据(通过IPC技术如共享内存)能够显著提高性能。每个进程不需要从磁盘中读取完整图像的每一部分,只需要处理自己负责的区域并与其他进程共享中间数据。使用共享内存机制,多个进程可以直接访问相同的内存区域,从而避免了数据复制的开销,减少了不必要的磁盘I/O操作。通过这种方式,进程间的高效数据共享能够显著提高整体图像处理速度。

2.什么是通信

进程间通信(IPC,Inter-Process Communication)指的是:不同进程之间为了交换数据、同步执行、协调资源而使用的一整套机制/技术。因为进程彼此隔离、地址空间独立,不能像同一进程里的线程那样直接共享变量,所以需要 IPC 来"搭桥"

3.怎么通信

我们先要知道通信本质是什么,后续的通信方法都离不开这个本质:

让不同的进程看到同一块资源【某种内存】,然后能进行通信!!

这个资源不可能由进程提供(就算最亲近的父子进程,也会发生写实拷贝),只能由操作系统(OS)提供->系统调用->OS的接口->设计统一的通信接口->设计出不同的通信方案

举个例子,在现实生活中,AB是两个陌生人,A与B想成为朋友,只能由C搭桥认识,不然两个人必定没有交集

注意:早期本机 IPC 各家 OS 各做各的;网络普及后,为了跨主机、跨系统互联,行业逐步形成并推广了以 TCP/IP 为代表的通用网络协议标准(以及以 socket 为代表的编程接口)

2.进程间通信的发展脉络

  • 早期(单机批处理):几乎不需要复杂 IPC,更多是"顺序执行 + 文件交换"

  • 分时/多任务出现 :进程并发增多,出现 信号 (通知)与 管道(父子进程字节流)

  • 系统化 IPC(Unix/System V 等) :为更通用场景引入 消息队列 (按消息)、共享内存 (高性能)、信号量(同步互斥)

  • 图形界面与桌面系统:更强调跨进程服务与安全隔离,出现更工程化的本机 IPC(如 Windows 的机制等)

  • 网络化/分布式时代Socket 成为事实标准,IPC 从"进程间"扩展到"主机间"

  • 服务化/云原生 :在 socket 之上封装 RPC/gRPC/HTTP ,并配合 消息中间(Kafka/RabbitMQ 等)实现解耦、可靠与可扩展

3.进程间通信分类

1.管道

匿名管道pipe
命名管道

2.System V IPC

System V 消息队列
System V 共享内存
System V 信号量

3.POSIX IPC

消息队列
共享内存
信号量
互斥量
条件变量
读写锁

本篇博客主要是简绍,我们下一篇博客将会正式开始管道学习哦~~(我们环境正式切换为ubuntu + vscode + c++)

相关推荐
huaxiu520 分钟前
ubuntu下应用打不开
linux·运维·ubuntu
m0_6831247925 分钟前
Ubuntu服务设置开机自启
linux·运维·ubuntu
BestOrNothing_201528 分钟前
(1)双系统中Ubuntu22.04启动盘制作与启动盘恢复全过程
linux·ubuntu·双系统·启动盘制作·启动盘恢复
AI成长日志33 分钟前
【实用工具教程】Linux常用命令速查与实战场景:文件操作、进程管理与网络调试高频命令解析
linux·php
落叶花开又一年37 分钟前
检验检测机构资质认定远程评审工作程序
linux·运维·服务器
wanhengidc38 分钟前
《三国志异闻录》搬砖新游戏 云手机
运维·服务器·数据库·游戏·智能手机
idolao44 分钟前
CentOS 7 安装 jdk-7u25-linux-x64.tar.gz 详细步骤(解压配置环境变量)
linux
i建模1 小时前
通过命令行使用密钥登录远程SSH主机
运维·ssh
旺仔.2911 小时前
僵死进程及Linux文件操作 详解
linux·运维·服务器
IMPYLH2 小时前
Linux 的 comm 命令
linux·运维·算法