进程间通信的“五大武器”

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD

如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。

😊 座右铭:不想当开发的测试,不是一个好测试✌️。

如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

Hello 小伙伴们,我是小曾。

今天我们来聊聊进程间通信。

文章目录

  • [1. 管道(Pipe)和命名管道(Named Pipe)](#1. 管道(Pipe)和命名管道(Named Pipe))
  • [2. 共享内存(Shared Memory)](#2. 共享内存(Shared Memory))
  • [3. 消息队列(Message Queue)](#3. 消息队列(Message Queue))
  • [4. 信号(Signal)与信号量(Semaphore)](#4. 信号(Signal)与信号量(Semaphore))
  • [5. 套接字(Socket)](#5. 套接字(Socket))

进程是操作系统中资源分配的基本单位,是一个正在运行的程序的实例。每个进程都有自己独立的地址空间,包括代码段、数据段和堆栈段。进程之间不共享资源,除非通过进程间通信IPC(Inter-Process Communication)。

进程间通信是指两个或多个进程之间交换数据或信息的方式。常见的 IPC 方式有以下几种:

1. 管道(Pipe)和命名管道(Named Pipe)

  • 管道是一种半双工的通信方式,数据只能单向流动。
  • 命名管道在管道的基础上增加了一个名称,可以实现双向通信。
  • 管道和命名管道适用于亲缘关系的进程间通信。

2. 共享内存(Shared Memory)

  • 共享内存允许多个进程访问同一块内存区域,从而实现高效的数据交换。
  • 共享内存通常配合信号量或互斥锁使用,以解决并发访问的同步问题。
  • 共享内存适用于通信双方数据交换量大,且要求低延迟的场景。

3. 消息队列(Message Queue)

  • 消息队列允许进程间异步、非阻塞地交换数据。
  • 消息队列具有缓存功能,可以暂存未及时处理的消息。
  • 消息队列适用于进程间解耦,异步通信的场景。

4. 信号(Signal)与信号量(Semaphore)

  • 信号是一种异步通信机制,用于通知进程发生某些事件,可用于进程间的简单通知,如中断、终止等。

  • 信号可以用来通知进程信号量的变化。例如,一个进程在获取信号量失败时,可以选择挂起自己,并等待收到一个信号来唤醒。信号通信简单,但功能较为有限,一般作为其他

    IPC 方式的补充。

  • 信号量用于实现进程间的互斥与同步,防止多个进程同时访问共享资源。进程可以通过"P"操作(申请)和"V"操作(释放)来获取和释放信号量。

  • 信号量可以用来实现对信号的处理。例如,可以使用信号量来控制信号处理程序的并发执行,以防止竞态条件的发生。

  • 信号和信号量可以结合使用,形成更加复杂的同步和通信机制。例如,可以使用信号量来控制对共享资源的访问,而使用信号来通知资源状态的变化。

5. 套接字(Socket)

  • 套接字是一种基于网络协议的 IPC 方式,可跨主机进行通信。
  • 套接字支持多种网络协议,如 TCP/IP,UDP 等,适用于复杂的网络环境。
  • 套接字通信灵活,但相对于其他IPC方式,通信开销较大。

> 也许世界上有五千朵,和你一模一样的花,但只有你是我独一无二的玫瑰。

相关推荐
喝养乐多长不高5 分钟前
HTTPS加密原理详解
网络·网络协议·http·https·证书·非对称加密·对称加密
D-river35 分钟前
【Academy】HTTP 请求走私 ------ HTTP request smuggling
网络·网络协议·安全·web安全·http·网络安全
pyliumy1 小时前
在基于Arm架构的华为鲲鹏服务器上,针对openEuler 20.03 LTS操作系统, 安装Ansible 和MySQL
服务器·架构·ansible
努力学习的小廉2 小时前
深入了解Linux —— 调试程序
linux·运维·服务器
SelectDB技术团队2 小时前
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升
大数据·数据库·云原生·doris·存算分离
只做开心事2 小时前
Linux网络之数据链路层协议
linux·服务器·网络
AI学IT2 小时前
(安全防御)旁挂组网双机热备负载分担实验
运维·服务器·网络
已是上好佳3 小时前
介绍一下Qt中的事件过滤
java·服务器·数据库
挣扎与觉醒中的技术人3 小时前
【技术干货】三大常见网络攻击类型详解:DDoS/XSS/中间人攻击,原理、危害及防御方案
前端·网络·ddos·xss
code monkey.3 小时前
【寻找Linux的奥秘】第一章:基础指令
linux·运维·服务器