进程间通信简介-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

进程间通信简介

在这里插入图片描述

进程间通信简介

进程间进程简称IPC(interprocess communication),进程间通信就是在不同进程之间传递信息或交换信息

进程间通信的目的

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

资源共享:多个进程之间共享同样的资源(譬如文件共享)

通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件,比如子进程终止时需要通知其父进程

进程控制:有些进程希望完全控制另一个进程的执行(如 Debug进程),此时控制进程希望能够拦截另一个进程的所有异常,并能够及时知道它的状态改变

如何实现进程间通信

由于不同的进程都各自运行在自己的地址空间、这些地址空间相互隔离,一个进程不能直接读取或修改另一个进程的数据(也就是不能直接访问另一个进程的资源),因此不同的进程之间想要实现通信是比较困难的

如果想要实现进程间通信,我们需要借助第三方资源,这个第三方资源其实就是公共资源这个资源不属于任何进程,而是需要进行通信的各个进程之间的公共资源,这些进程都可以去访问这个公共资源,譬如向公共资源写入数据、或者从公共资源读取数据,从而实现进程间通信的目的

因为这个第三方资源是由内核提供,所以进程间通信是需要内核参与的

进程间通信的本质:由OS参与,提供一份所有进程都可以访问的公共资源

公共资源包括:内存块、队列、文件等,所以就出现了多种不同的进程间通信的方法

进程间通信的方法

管道

  • 管道是 linux 系统中最古老的一种进程间通信方法,我们把一个进程连接到另一个进程的数据流称为管道!

  • 普通管道 pipe:通常有两种限制,一是单工,数据只能单向传输;二是只能在父子或者兄弟进程间使用

  • 流管道 s_pipe:去除了普通管道的第一种限制,为半双工,可以双向传输;只能在父子或兄弟进程间使用

  • 有名管道 name_pipe(FIFO):去除了普通管道的第二种限制,并且允许在不相关(不是父子或兄弟关系)的进程间进行通讯

    • 命名管道是有名字的,所以在进行进程间通信之前,需要创建这个管道文件,命名管道文件存在文件系统中,管道文件有自己的名字,只要对这个管道文件进行读写操作,就可以向管道中写入数据或从管道中读取数据。所以,命名管道可以作为同一台主机上的任意进程之间进行通信

信号

  • 信号可以作为进程间的通信手段,譬如用于通知某个进程发生了某事!

内存映射

  • 内存映射就是将文件映射到进程的地址空间,然后直接通过读写地址的方式去访问这个文件的内容。适用于多个进程之间的文件共享

消息队列

  • 消息队列定义:消息队列是存放在内核中的消息链表,由消息队列标识符标识

  • 消息队列的优势:克服了信号传递信息少、管道无格式字节流、缓冲区大小受限等缺陷

  • 消息队列类型:包括POSIX消息队列和System V消息队列

  • 消息队列在UNIX中的应用:UNIX系统中,不同进程通过消息队列共享资源,允许进程发送格式化数据流给任意进程

  • 消息队列操作权限:有足够权限的进程可以向队列添加消息,有读权限的进程可以读取队列中的消息

共享内存

  • 共享内存定义:共享内存是映射到多个进程地址空间的一段内存,由一个进程创建,但多个进程可以访问

  • 共享内存的优势:作为最快的进程间通信(IPC)方式,专门设计来克服其他IPC方式的效率低下问题

  • 共享内存的使用:通常与其他通信机制(如信号量)结合使用,以实现进程间的同步和通信

套接字(Socket)

  • Socket定义:Socket是一种基于网络的进程间通信(IPC)方法,支持同一主机或网络连接的不同主机上的应用程序交换数据

  • Socket在网络通信中的作用:Socket是网络通信的基础

  • 客户端/服务器通信流程

    • 应用程序创建Socket:每个应用程序创建一个Socket,作为通信的“设备”

    • 服务器绑定Socket:服务器将Socket绑定到众所周知的地址,以便客户端能够定位并连接到服务器

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

武汉星起航:一站式服务,助力亚马逊卖家高效运营,实现收益飞跃

在跨境电商的浪潮中,武汉星起航电子商务有限公司以其独特的一站式跨境电商服务,为众多亚马逊卖家提供了强有力的支持,助力他们在不断发展的市场中脱颖而出,实现收益的大幅提升。 武汉星起航的一站式跨境电商服务,以其…

JAVA医院绩效考核系统源码:三级公立医院绩效考核系统源码 可源码交付,支持二开

JAVA医院绩效考核系统源码:三级公立医院绩效考核系统源码 可源码交付,支持二开 医院绩效考核系统是一个集数据采集、分析、评估、反馈于一体的信息化工具,旨在提高医疗服务质量、优化资源配置、促进医院可持续发展。以下是对医院绩效考核系统…

API接口知识小结

应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

Java访问修饰符的区别

public:公开的,任何地方都可以访问。 protected:受保护的,同一个包中的类和所有子类(可跨包)可以访问。 private:私有的,只有在同一个类中可以访问。 默认(无修饰符):包级…

ORBSLAM3_ROS_Ubuntu18_04环境搭建安装

orbslam3安装 ORB-SLAM3配置及安装教程(2023.3)_orbslam3安装-CSDN博客 换源,换成国内的 搜索software 安装工具 sudo apt install git sudo apt update sudo apt install gcc g cmake安装 cmake安装新版本 ubuntu20.04安装cmake详细…

转让无区域商业管理公司基本流程和要求

无区域公司转让的条件和要求取决于您的业务需求和目标。我们的专业团队将与您合作,深入了解您的公司背景、行业情况和发展计划,为您量身定制适合您的转让方案。无论是公司规模、经营期限、资产状况还是法律形式,我们都将综合考虑确保达到您的…

一键掌控,文件格式转换无忧!轻松驾驭各种文件格式,高效管理您的数字世界

信息爆炸的时代,我们每天都会接触到各种各样的文件格式。无论是工作文档、图片、视频还是音频文件,它们都以不同的格式存在于我们的电脑和移动设备中。然而,不同的软件和应用往往只支持特定的文件格式,这给我们的工作和生活带来了…

数据结构历年考研真题对应知识点(树的基本概念)

目录 5.1树的基本概念 5.1.2基本术语 【森林中树的数量、边数和结点数的关系(2016)】 5.1.3树的性质 【树中结点数和度数的关系的应用(2010、2016)】 【指定结点数的三叉树的最小高度分析(2022)】 5.1…

[软件安装]Dev C++

一、下载Dev C软件安装包 1、官网下载官网 2、百度网盘下载压缩包 二、安装Dev C 1、解压Dev C软件安装包 2、找到【Dev-Cpp 5.11…】应用程序,右键选择【以管理员身份运行】它 3、设置语言 回到桌面,右键桌面上的【Dev C 5.11软件图标】&#xff0c…

什么是DEQ?

DEQ (Delivered Ex Quay, Duty Paid) 是指目的港码头交货 (……指定目的港)。 这种术语规定卖方在指定目的港码头将货物交给买方处置,并且不办理进口清关手续。 DEQ适用范围 DEQ术语仅适用于海运、内河运输或多式联运,并且在目的港码头卸货时使用。如…

探索人工智能和LLM对未来就业的影响

近年来,人工智能(AI)迅猛发展,引发了人们的兴奋,同时也引发了人们对就业未来的担忧。大型语言模型(LLM)就是最新的例子。这些强大的人工智能子集经过大量文本数据的训练,以理解和生成…

Python 面试【初级】

欢迎莅临我的博客 💝💝💝,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

安宝特方案 | AR术者培养:AR眼镜如何帮助医生从“看”到“做”?

每一种新药品的上市都需要通过大量的临床试验,而每一种新的手术工具在普及使用之前也需要经过反复的实践和验证。医疗器械公司都面临着这样的挑战:如何促使保守谨慎的医生从仅仅观察新工具在手术中的应用,转变为在实际手术中实操这项工具。安…

011、MongoDB副本集数据同步机制深度解析

目录 MongoDB副本集数据同步机制深度解析 1. 副本集架构概述 1.1 基本组成 1.2 节点角色 2. 数据同步过程详解 2.1 初始同步 2.2 持续复制 2.3 Oplog详解 3. 数据一致性与可用性 3.1 写关注(Write Concern) 3.2 读偏好(Read Preference) 3.3 因果一致性会话 4. 高…

IBCS 虚拟专线——企业网络困境的破局者

企业对于高效、稳定且成本合理的网络解决方案的需求愈发迫切。作为一家企业的技术负责人,我曾深陷于企业网络的种种困境之中,直到 IBCS 虚拟专线的出现,为我们带来了转机。 我们的企业在发展过程中,面临着诸多网络相关的挑战。随…

FPGA开发技能(7)Vivado设置bit文件加密

文章目录 前言1. AES加密原理2.xilinx的AES方案3.加密流程3.1生成加密的bit流3.2将密钥写入eFUSE寄存器 4.验证结论5.传送门 前言 在FPGA的项目发布的时候需要考虑项目工程加密的问题,一方面防止自己的心血被盗,另一方面也保护公司资产,保护知…

少女之妙,妙在微笑

一、妙与不妙,少女与微笑 我们曾经解过汉字“妙”,妙字可以拆分为少女二字,即: 妙 女 少 少女 但这,其实并没有对 “妙”字 完成完整性解析,如果要完成完整性的说明,应当加上微笑&#xff0…

Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析

技术背景 我们在对接Linux平台RTSP播放模块的时候,遇到这样的技术需求,开发者需要把Linux RTSP播放器拉取的数据,除了实时播放外,还要投递给python,用于视觉算法分析。 技术实现 Linux平台RTSP、RTMP直接播放不再赘…

IDM下载器怎么用 IDM下载器使用技巧 idm下载器怎么下载网页视频

IDM总能让新用户们眼前一亮,它不仅是工作学习上的好帮手,更是帮你解锁信息世界的钥匙。下载全程无广告、无弹窗、畅享高速下载,这无疑是下载软件市场中的一股清流。有关IDM下载器怎么用,IDM下载器使用技巧的问题,本文将…

App Inventor 2 列表排序,函数式编程轻松实现高级排序算法

本文主要介绍 列表 的高级用法,即函数式编程,可以按照指定的逻辑进行列表的排序,而无需我们自己写代码实现排序功能。 指定的逻辑也包括很复杂的逻辑,也就是说如果你的排序逻辑很复杂,函数式编程就是最好的使用场景。…