Linux进程间几种通信机制

news2024/12/28 2:52:14

一.  简介

经过前一篇文章的学习, 我们知道Linux下有两种标准:system V标准和 Posix标准。

System V 和 POSIX 标准是操作系统提供的接口标准,它们规定了操作系统应该如何实现一些基本功能,比如线程、进程间通信、文件处理等。

本文简单学习一下,进程之间的几种通信机制。

二.  Linux进程间的几种通信机制

Linux下进程间有五种通信机制,具体如下图:

可以看出,Linux下进程间通信包括:

管道:分为无名管道和有名管道。

无名管道:用于实现父子进程之间的通信。

有名管道:有名管道允许无亲缘关系的进程之间进行通信。

消息队列:消息队列是消息的链接表,它允许进程之间通过发送和接收消息来进行通信。消息队列被内核维护,保证了消息的独立性和安全性。

消息队列不适合比较大数据的传输,因为在内核中每个消息体都有一个最大长度限制,同时所有消息队列包含的全部消息体的总长度也有上限。在Linux内核中,宏定义MSGMAX以字节为单位定义了一条消息的最大长度,宏定义MSGMNB以字节为单位定义了一个队列的最大长度。

消息队列通信过程中,存在用户态与内核态之间的数据拷贝开销(通信不及时)。进程在写入数据到内核中的消息队列时,会发生从用户态拷贝数据到内核态的过程,同理,另一进程读取信息时会发生从内核态拷贝到用户态的过程。

共享内存:在共享内存区中交换信息(用于共享大量数据)。

使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低设计的。往往与其它通信机制,如信号量结合使用, 来达到进程间的同步及互斥。

套接字:例如网络通信,TCP/UDP通信。可用于不同机器之间的进程间通信。

信号:信号是在软件层次上对中断机制的一种模拟,用于通知接收进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身。

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

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

相关文章

MySQL————创建存储过程函数 有参数传递

存储过程使用大纲 有参数传递 delimiter $$ 声明一个名称为get_student_introduce CREATE PROCEDURE gei_student_introduce(in p_name VARCHAR(20)) 开始操作 BEGIN 撰写真正在操作DMLDQL都行 select introduce 简介 from student WHERE userNamep_name; end $$ delimite…

[muduo网络库]——muduo库TimeStamp类(剖析muduo网络库核心部分、设计思想)

接着之前我们[muduo网络库]——muduo库logger类(剖析muduo网络库核心部分、设计思想),我们接下来继续看muduo库中的TimeStamp类,这也是每一个类几乎都能用到的非常简单的类。 TimeStamp类 Timestamp类主要用于日志、定时器模块中…

C语言指针详解(三)

目录 前言 一. 回调函数是什么? 1.定义 2. 代码示例:计数器 2.1 使用回调函数改造前 2.2 使用回调函数改造后 二. qsort使用举例 1. qsort介绍 2. 使用qsort函数排序整型数据 3. 使用qsort排序结构体数据 三. qsort函数的模拟实现 四. sizeo…

单链表经典算法OJ题---力扣21

1.链接:. - 力扣(LeetCode)【点击即可跳转】 思路:创建新的空链表,遍历原链表。将节点值小的节点拿到新链表中进行尾插操作 遍历的结果只有两种情况:n1为空 或 n2为空 注意:链表为空的情况 代…

[力扣题解] 96. 不同的二叉搜索树

题目:96. 不同的二叉搜索树 思路 动态规划 f[i]:有i个结点有多少种二叉搜索树 状态转移方程: 以n3为例: 以1为头节点,左子树有0个结点,右子树有2个结点; 以2为头节点,左子树有1个…

单文件EXE绿色软件制作工具​Enigma Virtual Box​利用 EnigmaVB 打包 Qt 应用程序

功能描述:详细介绍如何利用 EnigmaVB 打包 Qt 应用程序,从 EnigmaVB 软件下载、安装,到如何使用,一步步教你走进 EnigmaVB 软件,最后还介绍了一款针对 Enigma Virtual Box 制作的单文件程序进行解包的工具 EnigmaVBUnp…

git-将本地项目上传到远程仓库

在gitee中新建一个远程仓库。 填写对应内容。 打开你想上传的文件夹,比如我想上传yuanshen 右击,打开git bash 输入git init初始化仓库 git init 添加项目所有文件 git add . 将添加的文件提交到本地仓库(提交说明必填) git …

61、内蒙古工业大学、内蒙科学技术研究院:CBAM-CNN用于SSVEP - BCI的分类方法[脑机二区还是好发的]

前言: 之前写过一篇对CBAM模型改进的博客,在CBAM中引入了ECANet结构,对CBAM中的CAM、SAM模块逐一改进,并提出ECA-CBAM单链双链结构,我的这个小的想法已经被一些同学实现了,并进行了有效的验证,…

3.运算符详解(java)

算术运算符 基本四则运算符:加减乘除模(、-、*、/、%) 注意: 都是二元运算符,使用时必须要有左右两个操作数 int / int 结果还是int类型,而且会向下取整 I.做除法和取模时 右操作数不能为0 II. %不仅可…

福派斯鲜肉狗粮大揭秘,狗狗吃了都说好!

狗粮哪个牌子好?我强烈推荐福派斯鲜肉狗粮!在众多狗粮品牌中,福派斯以其高品质、营养均衡以及独特的产品特点,受到了广大宠物主人的一致好评。 (1) 福派斯鲜肉狗粮的配方表透露出其对于原料选择的严谨和用心。高达75%的鲜肉含量&a…

探索美国动态IP池:技术赋能下的网络安全新篇章

在数字化飞速发展的今天,网络安全成为了各行各业关注的焦点。特别是在跨国业务中,如何保障数据的安全传输和合规性成为了企业面临的重要挑战。美国动态IP池作为一种新兴的网络技术,正逐渐走进人们的视野,为网络安全提供新的解决方…

学习古琴律学的好东西,帮您从基因里学古琴

《从基因里学懂古琴》是一本关于古琴律学的著作,作者通过基因的角度来解读古琴音乐的奥秘和美妙。古琴作为我国传统文化的瑰宝之一,具有悠久的历史和独特的音乐风格,但其律学原理一直以来都是一个谜。本书从基因的角度探讨了古琴音乐的律学特…

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版 Office LTSC 2024 for Mac 请访问原文链接:Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版,查看最新版。原创作品,转载请保留出处。 作者主页&a…

【Spring Boot】 深入理解Spring Boot拦截器:自定义设计与实现全攻略

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】 深入理解Spring Boot拦截器:自定义设计与实现全攻略 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 SpringBoot统⼀功能处理一…

机器学习中表格数据预处理

目录 缺失值处理 在dataframe中进行填补 使用模型填补缺失值(随机森林) 异常值 数据无量纲化 中心化 数据归一化 数据标准化 缩放处理 转换数据类型 文本—>数值preprocessing.LabelEncoder:标签专用,能够将分类转换为…

计算机毕业设计 | SpringBoot健身房管理系统(附源码)

1,项目背景 随着人们生活水平的提高和健康意识的增强,健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求,需要一种更加高效、智能、安全的管理系…

【Vue探索之旅】初识Vue

文章目录 前言 渐进式框架​ 入门案例 完结撒花 前言 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手&#x…

深入了解 MyBatis 插件:定制化你的持久层框架

序言 MyBatis 是一个流行的 Java 持久层框架,它提供了简单而强大的数据库访问功能。然而,有时候我们需要在 MyBatis 中添加一些自定义的功能或行为,来满足特定的需求。这时,MyBatis 插件就发挥了重要作用。本文将深入探讨 MyBati…

Cweek1

C语言学习 一.初识C语言 1.如何写C代码 ①创建工程 ②添加源文件&#xff1a;c文件&#xff1a;源文件&#xff0c;h文件&#xff1a;头文件 代码实例&#xff1a; main函数是程序的入口&#xff0c;有且仅有一个 在C语言中&#xff0c;#include <stdio.h> 是一个预…

Linux进程(一) -- 介绍进程

计算机的系统架构 用户部分 这是用户直接与计算机交互的部分&#xff0c;包括以下三种操作&#xff1a; 指令操作&#xff1a;用户通过命令行界面&#xff08;CLI&#xff09;输入指令来操作计算机。开发操作&#xff1a;开发人员编写和调试程序代码&#xff0c;与计算机系统…