当前位置: 首页 > article >正文

IPC机制总结笔记

IPC(Inter - Process Communication)机制即进程间通信机制,是指在不同进程之间传播或交换信息。以下是详细介绍:

1. 主要的 IPC 机制类型

  • 管道(Pipe)
    • 匿名管道:是一种半双工的通信方式,通常用于具有亲缘关系(如父子进程)的进程间通信。数据只能单向流动,一端用于写入数据,另一端用于读取数据。例如,在 Linux 系统中,通过pipe()系统调用创建匿名管道。当一个父进程创建一个管道后,再创建一个子进程,父子进程就可以通过管道进行通信。
    • 命名管道(FIFO):也是半双工通信方式,但克服了匿名管道只能用于亲缘关系进程通信的限制。它有一个路径名与之相关联,允许无亲缘关系的进程通过打开同一个命名管道进行通信。
  • 消息队列(Message Queue)
    消息队列是一个由内核创建的、在内存中的链表,用于存放消息。不同进程可以通过向消息队列中添加消息或者读取消息来实现通信。每个消息都有特定的类型,接收进程可以根据消息类型有选择地接收消息。这种方式可以实现多对多的进程间通信,比如在一个网络服务器程序中,不同的处理模块(进程)可以通过消息队列传递网络请求、处理结果等信息。
  • 共享内存(Shared Memory)
    • 是最快的一种 IPC 机制,因为它直接在内存中开辟一块空间,多个进程可以将其映射到自己的虚拟地址空间,对这块共享内存区域进行读写操作来实现通信。不过,这种方式需要进程之间进行同步,以避免同时对共享内存的访问冲突。例如,多个数据库查询进程可以共享一块内存区域来存储查询结果数据,通过合适的同步机制保证数据的一致性。
  • 信号量(Semaphore)
    信号量主要用于进程间的同步和互斥。它是一个计数器,用于控制多个进程对共享资源的访问。当一个进程要访问共享资源时,需要先获取信号量,如果信号量的值大于 0,则将其减 1,表示资源可用,进程可以访问;如果信号量的值为 0,则进程需要等待。通过这种方式,可以保证在同一时刻只有一定数量的进程能够访问特定的共享资源,防止出现冲突。例如,在一个多线程的文件写入系统中,通过信号量控制同时只有一个线程可以对文件进行写入操作。
  • 信号(Signal)
    信号是一种异步的通信方式,用于通知进程某个事件的发生。进程可以针对不同的信号设置相应的处理函数。比如,当一个进程接收到SIGINT信号(通常由用户在终端按下Ctrl + C产生)时,可以执行清理资源、保存数据等操作后再退出。信号可以用于内核向进程发送一些紧急事件的通知,如硬件故障、内存异常等。

2. IPC 机制的应用场景

  • 操作系统资源管理:在操作系统中,多个进程可能需要访问和使用有限的系统资源,如磁盘、打印机等。通过 IPC 机制(如信号量)可以协调这些进程对资源的有序使用,避免冲突。
  • 分布式系统通信:在分布式计算环境中,不同节点上的进程需要相互协作完成任务。消息队列、套接字等 IPC 机制可以实现跨网络的进程通信,使分布式系统正常运行。
  • 多线程应用程序:在一个应用程序内部,如果采用多线程设计,线程之间也需要通信和同步。共享内存、信号量等 IPC 方法可以用于线程间的协调,提高程序的运行效率和稳定性。

http://www.kler.cn/a/379384.html

相关文章:

  • SpringCloud Alibaba-05 Seata分布式事务处理
  • 【案例】旗帜飘动
  • 解决wsl重启后debian配置vm.max_map_count不生效问题以及设置docker开机自启
  • 交换机如何实现2.5G网络传输速率和网络变压器有关吗
  • OpenCV视觉分析之目标跟踪(7)目标跟踪器类TrackerVit的使用
  • 基于MATLAB的战术手势识别
  • 关于电脑蓝屏的那些解决方案--总有一款适合你
  • Leetcode 合并两个数组
  • mysql JSON字段使用
  • Gitlab-runner running on Kubernetes - hostAliases
  • 深度学习笔记7-最小二乘法
  • 享元模式-实现大颗粒度对象缓存机制
  • Cesium移动3D模型位置
  • docker desktop使用ubuntu18.04带图形化+运行qemu
  • 划界与分类的艺术:支持向量机(SVM)的深度解析
  • metasploit/modules/evasion 有哪些模块,以及具体使用案例
  • WebService详解
  • 服务器数据恢复—SAN环境中LUN映射错误导致文件系统一致性出错的数据恢复案例
  • 【neo4j】 图数据库neo4j cypher单一语句 optional 可选操作的技巧
  • “代码世界的必修课:Git完整指南“(3)
  • JVM基本结构和垃圾回收机制
  • 小白从零开始学c++之继承对象的内存空间
  • nodejs入门教程8:nodejs EventEmitter
  • 《Java 实现希尔排序:原理剖析与代码详解》
  • 三维测量与建模笔记 - 2.2 射影几何
  • Hive数据库操作语法