『 Linux 』 进程间通信概述

文章目录

    • 什么是进程间通信
    • 为什么要有进程间通信
    • 如何进行进程间通信


什么是进程间通信

请添加图片描述

进程间通信(IPC)指的是在操作系统重,允许两个或者多个进程之间传递信息或者数据的机制;

进程是操作系统重独立运行的实体,即进程间具有独立性,存在自己的地址空间;

因此进程间默认无法直接访问彼此的内存空间,其通信成本会较高;

IPC提供一种方式使得互相独立的进程能够交换数据并进行通信和数据共享;


为什么要有进程间通信

请添加图片描述

  • 基本数据交换

    进程间通信允许不同的进程交换基本的数据信息,例如用户输入,计算结果等;

  • 发送命令

    通过IPC,一个进程可以向另一个进程发送命令或请求知道其执行特定操作;

  • 某种协同

    多个进程通过IPC机制协同工作可以完成独立进程无法完成的复杂工作;

  • 数据传输

    IPC提供了一种机制使得进程可以安全有效的进行数据传输;

  • 资源共享

    多个进程可能需要访问和修改同一份资源;

  • 通知事件

    进程间通信允许进程相互通知重要的事件发生,如系统错误,任务完成等;

  • 进程控制

    IPC机制可以用于控制其他进程的行为,例如启动或停止某个进程或者调整其执行的优先级;


如何进行进程间通信

请添加图片描述

  • 进程间通信的本质

    进程间通信的本质是必须让不同的进程看到同一份"资源";

    这里的"资源"通常指数据或者信息,在操作系统中,数据和信息的存储和交换的媒介一般是内存空间;

    而这个内存空间不一定是直接的物理内存访问;

    IPC机制通过多种形式使得进程间可以共享和传递信息,这包括但不限于直接的内存共享;

进程间通信的内存空间的提供者必须是操作系统而不能是进程,原因主要为以下几点:

  • 安全性

    进程通常在操作系统分配的隔离环境中运行,可以防止一个进程访问或修改另一个进程的代码数据;

  • 隔离性

    操作系统为每个进程提供了一个独立的地址空间,以保证进程间的独立性和稳定性;

    如果进程间通信的内存空间由进程自身提供则可能打破这种隔离性;

  • 资源管理

    操作系统负责管理所有的软硬件资源,拥有全局的视角和控制权;

    而单个进程并不具备这种特性,操作系统数据进程的上级所以操作系统能观察到所有的进程的当前状态但进程无法观察到操作系统的状态;

  • 独立性

    进程间是相互独立的,每个进程存在自己独有的进程地址空间;

    如果这块公共区域是由进程自行提供,那么将会破坏进程间的独立性;

操作系统所提供的资源的媒介(空间)可以被视作一种"第三方空间";

而这种第三方空间是由操作系统提供的,当进程要对这个"第三方空间"进行写入或是读取数据时本质上是在访问操作系统;

进程为用户层的结构,为了保证安全,用户无法直接访问操作系统,即进程无法直接访问操作系统;

故操作系统必须提供一种机制即系统调用(System Calls)来允许用户层的进程与"第三方空间"中的资源进行安全互动;

即进程对这个媒介的 创建 - 使用(一般情况下) - 释放 都是利用系统调用接口;

  • 资源的管理

    当存在大量进程且进程与进程间都需要通信时将会存在大量这样的 “第三方空间” ;

    操作系统将会对这些资源进行管理 —— “先描述,再组织” ;

在操作系统中进程间通信(IPC)被作为一个独立的通信模块并挂接在文件系统当中;

  • 进程间通信的标准

    进程间通信作为一种模块同样也存在标准;

    常用的标准有:

    • POSIX IPC标准
    • System V IPC标准
    • 文件系统IPC标准

操作系统提供了多种IPC机制,包括但不限于:

  • 管道(Pipes)

    允许一个进程与另一个进程直接通信,数据流是单向的;

  • 消息队列(Message Queues)

    允许不同的进程发送和接收消息,是一种异步通信方式;

  • 信号(Signals)

    一种用于通知接收进程某个事件已经发生的简单方式;

  • 共享内存(Shared Memory)

    通过映射一段能被多个进程访问的内存区域以时间线进程间的数据共享;

  • 套字节(Sockets)

    主要用于不同主机上的进程间通信,支持TCP/IP等网络协议;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728435.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql8.0找不到my.ini

报错问题解释: MySQL 8.0 在Windows系统中通常不需要 my.ini 文件,因为安装程序会在 %PROGRAMDATA%\MySQL\MySQL Server 8.0\ (通常是 C:\ProgramData\MySQL\MySQL Server 8.0\)创建默认的配置文件。如果你的系统中找不到 my.ini…

oracle 数据库导入dmp文件

荆轲刺秦王 从线上正式环境导出的 dmp 文件,导入到本地 oracle 数据库。 1. 创建用户: CREATE USER hf_chip IDENTIFIED BY hf_chip; 2. 授予 CONNECT 和 RESOURCE 基本权限给新用户。 GRANT CONNECT, RESOURCE TO hf_chip; 3. 创建表空间 CREATE TABLESPACE…

qt界面开发-01我的第一个qt程序

Qt 是一个跨平台的 C开发库。主要用来开发图形用户界面(Graphical User Interface,简 称 GUI)程序。 Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部; Qt 除了可以绘制漂亮的…

Mac磁盘满了去哪里删 Mac清理了回收站还是空间不足怎么办

在使用Mac电脑的过程中,我们经常会遇到磁盘空间不足的问题。尤其是当我们清理了回收站之后,发现剩余空间依然不足。如何有效解决Mac磁盘空间不足的问题,以及当清理回收站后空间仍然不足时应怎么办呢?本文将为大家介绍Mac磁盘满了去…

搭建预约咨询小程序,高效便捷新选择

一、预约咨询小程序是什么? 预约咨询小程序是一款适用于各种生活场景包括医疗、保洁、宠物护理、法律等方面的预约咨询类小程序。 二、这款小程序有什么亮点优势? 预约咨询小程序适用场景广泛,无论是心理咨询、法律咨询,还是宠物…

INFINI Labs 助力开源与教育:免费许可证计划全面升级

在数字化浪潮席卷全球的今天,INFINI Labs 深刻认识到开源项目和教育机构在技术创新与人才培养中的核心作用。因此,我们郑重推出全新升级的免费许可证计划,旨在全球范围内为开源社区和教育界提供有力支持,共同推动软件生态的繁荣与…

.NET C# 操作Neo4j图数据库

.NET C# 操作Neo4j图数据库 目录 .NET C# 操作Neo4j图数据库环境Code 环境 VisualStudio2022 .NET 6 Neo4j.Driver 5.21 Code // 连接设置 var uri "bolt://localhost:7687"; var user "neo4j"; var password "password"; // 请替换为你的…

React+TS前台项目实战(十三)-- 全局常用响应式加载动画Loading组件封装

文章目录 前言Loading组件1. 功能分析2. 代码详细注释3. 使用方式4. 不同尺寸loading动画效果展示 总结 前言 高阶组件有几大优点,其中一个就是渲染劫持,如懒加载,是否显示该元素loading,这在项目中我们经常用到。毫无疑问&#…

无人机校企合作

有没有想过,无人机和校企合作能碰撞出怎样的火花?🔥今天就来给大家揭秘一下这个神秘组合! 无人机,作为现代科技的代表,已经渗透到我们生活的方方面面。而校企合作,更是推动科技创新、培养人才的…

武汉工程大学24计算机考研数据,有学硕招收调剂,而专硕不招收调剂!

武汉工程大学是一所以工为主,覆盖工、理、管、经、文、法、艺术、医学、教育学等九大学科门类的多科性教学研究型大学,是湖北省重点建设高校、湖北省国内一流学科建设高校,入选卓越工程师教育培养计划、中西部高校基础能力建设工程、“新工科…

从零开始:使用ChatGPT快速创作引人入胜的博客内容

随着科技的飞速发展,人工智能逐渐渗透到我们生活的各个领域。无论是商业、教育还是娱乐,AI技术都在以惊人的速度改变着我们。特别是在内容创作领域,人工智能正发挥着越来越重要的作用。今天,我将和大家分享如何从零开始&#xff0…

微软Azure AI更新视频翻译和语音翻译 API 功能!企业适用TTS文本转语音

很高兴与大家分享 Azure AI 语音翻译产品套件的两个重大更新! 分别是视频翻译和增强的实时语音翻译 API。 视频翻译(批量) 微软宣布推出视频翻译预览版,这是一项突破性的服务,旨在改变企业本地化视频内容的方式。 随着…

天润融通CEO吴强:把简单留给客户,复杂留给自己丨数据猿专访

大数据产业创新服务媒体 ——聚焦数据 改变商业 “这是一种‘无奈’,但更是一种责任”。 这句话听起来似乎有点悲情,但用来形容一家技术服务提供商,似乎也在情理之中。细想,实则充满商业智慧。 这句感慨,缘于数据猿专…

养车小程序系统源码,汽修源码,仿途虎养车系统源码,车辆保养小程序系统

用户端+商家端+师傅端 功能介绍: 支持下单上门服务、到店核销,支持单独选择项目、 也支持选择服务人员、和选择门店多种下单方式, 支持上门服务和到店核销两种服务方式,支持自营和多商家联营两种运营模式&#xff…

前端:Element UI 与 Vuetify 的选择

vuetify优势 1、多端适配,Vuetify完全按照Material设计规范进行开发,每一个组件都经过精心设计,具有模块化、响应式和优秀的性能。 使用独特和动态的 布局 自定义您的应用程序,并使用 SASS 变量 自定义您的组件的样式。只需要做下…

八大经典排序算法

前言 本片博客主要讲解一下八大排序算法的思想和排序的代码 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:排序_普通young man的博客-CSDN博客 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 …

昇思25天学习打卡营第3天|数据集 Dataset|数据变换 Transforms

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) 数据集 Dataset 数据是深度学习的基础,高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset&am…

PPT可以转换成Word吗?归纳了三种转换方式

PPT可以转换成Word吗?在当今快节奏的工作和学习环境中,不同格式文件之间的转换变得日益重要。PPT作为演示文稿制作的首选工具,广泛应用于会议演讲、教育培训等多个场景,而Word则是文档编辑与编排的基石。为了便于进一步编辑、分享…

Tomcat部署和优化

一、Tomcat概述 1.1 Tomcat介绍 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,具备Web服务器的所有功能,在中小型系统和并发访问用户不是很多的场合下被普遍使用。实际上Tomcat是Apache服务器的扩展&#xff0c…

多智能体强化学习算法MA-POCA

论文原文:On the Use and Misuse of Absorbing States in Multi-agent Reinforcement Learning 预备知识参考: 强化学习纲要(周博磊课程) 强化学习实践教学 多智能体强化学习入门 MA-POCA是Unity官方2021年11月推出的多智能体…