进程通信原理

article/2025/9/13 14:23:40
  • 目录

    进程通信原理

    1、同主机间的消息通讯机制

    1.1 管道(pipe),流管道(s_pipe)和有名管道(FIFO)

    1.2 信号(signal)

    1.3 消息队列

    1.4 共享内存

    信号量

    套接字(socket)

    进程间通信各种方式效率比较

    不同主机间的消息通讯机制


    1、同主机间的消息通讯机制

    • 1.1 管道(pipe),流管道(s_pipe)和有名管道(FIFO)

    • 1.2 信号(signal)

    • 1.3 消息队列

    • 1.4 共享内存

    • 1.5 信号量

    • 1.6 套接字(socket)

    • 1.7 进程间通信各种方式效率比较

  • 2、不同主机间的消息通讯机制

进程通信原理

我们每天使用互联网,你是否想过,它是如何实现的?

全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?

互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。

为了让互联网安全且可靠,人们发明了著名的OSI七层模型、TCP/IP四(五)层模型和种类繁杂的加解密算法,但这些均不是本次要介绍的内容。我们这次要聊的是进程数据通信

1、同主机间的消息通讯机制

进程间的通讯机制有如下6种方式,其它哪些属于主机间进程通信,哪些属于同主机上的进程间通信呢。我们分别来看。

  • (1) 管道(pipe),流管道(s_pipe)和有名管道(FIFO)

  • (2) 信号(signal)

  • (3) 消息队列

  • (4) 共享内存

  • (5) 信号量

  • (6) 套接字(socket)

1.1 管道(pipe),流管道(s_pipe)和有名管道(FIFO)

pwd|ls

如上大家经常用到的命令就使用管道

管道这种通讯方式有两种限制:

  • 半双工的通信,数据只能单向流动;

  • 只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

流管道s_pipe ,去除了第一种限制,可以双向传输。命名管道:name_pipe,克服了管道没有名字的限制,因此,即具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;

1.2 信号(signal)

信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;

linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);

1.3 消息队列

消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。

1.4 共享内存

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

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

信号量

信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

套接字(socket)

套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信

更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:LinuxSystem V的变种都支持套接字。

进程间通信各种方式效率比较

效率比较

各种通信方式的比较和优缺点

  • 管道:速度慢,容量有限,只有父子进程能通讯

  • FIFO:任何进程间都能通讯,但速度慢

  • 消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

  • 信号量:不能传递复杂消息,只能用来同步

  • 共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

不同主机间的消息通讯机制

每个网络应用都是基于Client/Server架构。这种模型下,一个应用是由一个服务器进程和一个或多个客户端进程组成。服务器管理某种资源,并且通过操作这些资源为客户端提供服务。

ClientServer之间是如何通信呢?对的,Socket。只有这种方式,且前提是通信主机提前知道服务器端的监听端口。即Server监听DIP+DPORT,Client发起SIP+SPORT

DPORT必须始终处于监听状态,随时供Client来连接。这里延伸两个知道点,始终监听有2种方式:瞬时Daemon和长驻Daemon进程。如ftp就是瞬间Daemon进程,在CentOS6中由xinetd统一维护,在CentOS7中由systemd统一管理。

端口如何让别人知道呢,由互联网机构统一管理,为某些众所周知的应用分配好一些固定的端口,这些特定应用只能使用这些端口,通过这些默认端口访问是无需单独跟上端口号,如http可通过协议来判断端口号。如非要指定其它端口,则需额外指定。

这些端口是独占模式,在使用的过程,其它服务是不可使用的。

进程间通信

(转载与:开源Linux)


http://chatgpt.dhexx.cn/article/7Ao6Uiva.shtml

相关文章

Linux进程通信

笔者在学习linux的过程中对linux进程通信进行记录学习。现在在 Linux 中使用较多的进程间通信方式主要有以下几种。 (1)管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信…

【Linux】进程间通信

目录 1. 进程间通信 1.1. 进程间通信的目的 1.2. 如何实现进程间通信 2. 管道通信 2.1. 匿名管道 2.1.1 创建匿名管道 2.1.2 . 深入理解匿名管道 2.2. 命名管道 2.2.1. 创建命名管道 3. system V 标准进程间通信 3.1. 共享内存 3.1.1. 实现原理 3.1.2. 代码实现 3…

认知智能理论三体论介绍简介

三体论是探索研究宇宙,信息和人类大脑三者关系的理论体系。是认知智能的奠基理论体系之一。宇宙和信息,信息和人类大脑,人类大脑和宇宙,三者之间存在着某种未被完全揭示的奥秘。三体论的核心思想体系就是基于宇宙,信息…

认知智能三大技术体系之类脑模型简介

认知智能三大技术体系之类脑模型简介 类脑模型是认知智能核心三大技术体系之一,类脑结构,功能机制的总称。类脑模型技术体系核心指导思想来自认知智能三大奠基理论,脑科学,心理学,逻辑学,情感学&#xff0c…

认知智能CI和人工智能AI的区别介绍简介

认知智能CI和人工智能AI的区别 人工智能和认知智能都是计算机科学的分支学科之一。人工智能是智能时代的第二个阶段,认知智能是智能时代的第三个阶段。认知智能也并不是智能时代发展的最终阶段,最终阶段应该是通用智能强智能时代。 本文主要就人工智能和…

什么是认知智能?

认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息的理解、存储、应用为研究方向,以感知信息的深度理解和自然语言信息的深度理解为突破口&#…

认知智能是什么?

认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息的理解、存储、应用为研究方向,以感知信息的深度理解和自然语言信息的深度理解为突破口&#…

人工智能导论

目录 1.1 人工智能导论 1.2 人工智能应用 1.3 人工智能产业发展 1.4 人工智能发展的成功因素 1.5 人工智能迅速发展的技术领域 1.6人工智能的基础知识 1.1 人工智能导论 人工智能的三个层面: 计算智能:能算能存 感知智能:能听会说&…

如何用AI技术增强企业认知智能?超详细架构解读

认知的高度决定了创造价值的高度。 企业在从创办、发展、竞争、成功到衰亡的全生命周期中,会面临复杂多样的决策场景。 然而,时代演变产生的海量、分散、实时的信息,仅靠人类个体是难以高效、准确地感知、认知和决策的。 因此,企…

深度KWeaver:价值驱动,认知智能走向开源共创

文|智能相对论 作者|叶远风 在底层硬件创新之外,软件创新对提升中国前沿科技竞争力同样重要,这其中,开源的必要性毋庸置疑。但是,在全球范围内开源项目硕果累累的大背景下,中国开源过去的发展却不够快,直…

AI的下一个战场:认知智能的突围

2020-01-20 14:32 导语:AI的下一种可能 “深度学习的钥匙丢在了黑暗角落。”张钹院士不止一次提出这个论点。深度学习方法易受欺骗、易受攻击已经是研究者们达成的共识,追其根本原因,张钹归结为:大家只是在灯亮的方向对模型修修补…

认知智能介绍发展道翰天琼

计算智能、感知智能和认知智能,是探索人工智能道路上的三个台阶。 在计算智能方面,机器早已远远超过人类。而在感知智能方面,机器也已达到可媲美人类的水平。科大讯飞在语音识别错误率上每年相对下降30%以上。在2018年CHiME-5国际多通道语音分…

【干货】认知智能时代:知识图谱实践案例集.pdf(附下载链接)

大家好,我是文文(微信号:sscbg2020),今天给大家分享中国电子技术标准化研究院于2021年1月份发布的干货报告《认知智能时代:知识图谱实践案例集.pdf》,关注知识图谱及人工智能伙伴们别错过了&…

肖仰华:知识图谱与认知智能

今天跟大家分享的主题是《知识图谱与认知智能》。 知识图谱自2012年提出至今,发展迅速,如今已经成为人工智能领域的热门问题之一,吸引了来自学术界和工业界的广泛关注,在一系列实际应用中取得了较好的落地效果,产生了巨…

【认知智能】邓志东教授:如何迈向认知智能与通用人工智能

中国金融信息网讯 9月10日-13日,2017世界物联网博览会在无锡召开,清华大学计算机科学与技术系教授邓志东在网易AI公开课上介绍了人工智能现状和复兴原因,及其商业价值和中国人工智能产业发展的优势和短板,以及如何迈向认知智能与通…

智能发展的四个层次:运算智能,感知智能,认知智能,强智能。道翰天琼认知智能。

2016年,人工智能成为产业界和学术界的大热词。年初,李世石与Alpha Go的人机围棋大战吸睛无数,人工智能的话题始料未及地席卷了世界每处。此外,今年也恰逢人工智能学科诞生一甲子,Alpha Go再一次打败人类,受…

知识图谱认知智能理论与实战----------第一章 知识图谱概述

文章目录 一. 什么是知识图谱二. DIKW模型三. 知识图谱技术体系四. 知识图谱辨析I. 知识图谱与自然语言处理II. 知识图谱与图数据库III. 知识图谱与语义网络IV. 知识图谱与搜索引擎 一. 什么是知识图谱 知识图谱:是一种对知识间的关联进行建模的方法,目…