【操作系统】进程通信

article/2025/9/14 10:18:24

  1. 什么是进程通信?进程为什么需要通信?

  • 进程通信:进程通信就是进程之间的信息交换。

  • 进程通信的目的:

    •  数据传输:一个进程需要将它的数据发送给另一个进程。
    • 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
    • 资源共享:多个进程之间共享同样的资源。为了做到这一点,需要内核提供互斥和同步机制。
    • 进程控制:有些进程希望完全控制另一个进程的执行(如 Debug 进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

  1. OS一般包括哪些进程通信方式?

  • 共享存储器系统:

相互通信的进程共享某些数据结构或共享存储区。进程之间能够通过这些空间进行通信,需要使用互斥机制(P、V)。

  • 管道通信系统:

所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。输入进程向管道中以字符流的形式输入,输出进程以字符流的形式从管道取出。

管道机制必须提供三种协调能力:互斥、同步和确定对方的存在。其中的,同步:读进程要求读,但管道为空,则等待写进程写入数据。互斥:读写进程不能同时进行。

注意:从管道读数据是一次性操作,数据一旦被读取,就从管道中被抛弃,释放空间以便写更多的数据。管道只能采用半双工通信,即某一时刻只能单向传输。要实现父子进程双向互动通信,需要定义两个管道。

  • 消息传递系统:

  1. 直接通信方式:进程以格式化的消息(message)为单位,将通信的数据封装在消息中,利用OS提供的一组通信命令(原语),在进程之间直接进行消息传递。

  1. 间接通信方式(信箱通信):发送进程把消息发送到某个中间实体中,接收进程从中间实体(信箱)中取得消息。该通信方式广泛应用与计算机网络中。

  • 客户机—服务器系统:

主要应用于计算机网络中,主要的实现方法分为三种:套接字、远程过程调用和远程方法调用。

  1. 用自己的话解释“管道通信”原理?
  1. 管道:也是文件,可以用于有血缘关系的进程间的通信。
  2. 实现机制:

两个或多个进程之间想要通信由于他们各拥有自己的地址空间所以必须有一块公共的空间,而这块空间就需要内核为他们提供,也就是缓冲区。

管道有两端一端负责输入,一端负责输出,所以两端就分别连接两个进程。进程1负责将数据输入到缓冲区,进程2将缓冲区的数据拿出来,这样就实现了两个进程的通信。

管道被设计成为环形的数据结构,以便管道可以被循环利用。当管道中没有信息的话,从管道中读取的进程会等待,直到另一端的进程放入信息。当管道被放满信息的时候,尝试放入信息的进程会等待,直到另一端的进程取出信息。当两个进程都终结的时候,管道也自动消失。

  1. 用自己的话解释“内存共享通信”原理?

  1. 共享内存的通信原理示意图:

对于上图的理解:当两个进程通过页表将虚拟地址映射到物理地址时,在物理地址中有一块共同的内存区,即共享内存,这块内存可以被两个进程同时看到。这样当一个进程进行写操作,另一个进程读操作就可以实现进程间通信。但是,我们要确保一个进程在写的时候不能被读,因此我们使用信号量来实现同步与互斥。

  1. 用自己的话解释“消息缓冲通信”原理?

  1. 利用内存中公用消息缓冲区实现进程间的信息交换。

在这种通信机制中,首先需要在内存中开辟若干空闲消息缓冲区,用以存放要通信的消息。每当一个进程需要向另一个进程发送消息时,便向系统申请一个空闲消息缓冲区,并把已准备好的消息复制到该缓冲区,然后把该消息缓冲区插入到接收进程的消息队列中,最后通知接收进程。接收进程接收到发送进程发来的通知后,从本进程的消息队列中摘下一消息缓冲区,取出其中的信息,然后把消息缓冲区作为空闲消息缓冲区归还给系统。系统负责管理公用消息缓冲区以及消息的传递。

  1. 在Linux下实践云班课资源“Linux进程间通信三 消息队列以及实例(可实现简单聊天)”中实例1和实例2,并截图。

  1. 实例1:

  1. 运行结果1:

  1. 案例2:

  1. 运行结果2:


http://chatgpt.dhexx.cn/article/gAGojCQh.shtml

相关文章

【Linux】进程通信之管道通信详解

🍎作者:阿润菜菜 📖专栏:Linux系统编程 文章目录 一、什么是管道通信1. 管道通信是一种在进程间传递数据的方法2.看看接口:匿名管道和命名管道3. 管道通信的本质是什么? 二、管道通信的实现和深入理解1.如何…

进程通信方式总结与盘点

​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到…

《操作系统》实验报告——进程通信

理论知识 Linux——Linux C语言编程基础知识 Linux——进程通信 一、实验目的 (1) 熟悉并掌握管道机制,并实现进程间通信 (2) 熟悉并掌握共享内存机制,并实现进程间通信 二、实验内容 任务一: (1)阅读以上父子…

多进程通信

多进程: 首先,先来讲一下fork之后,发生了什么事情。 由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则…

进程间通信详解

目录 一.进程间通信介绍 1.进程间通信的目的 2.进程间通信的本质 3.进程间通信分类 二.什么是管道 三.匿名管道 1. 匿名管道只能用于具有亲缘关系的进程之间进行通信,常用于父子。 2.pipe函数 3. 匿名管道的使用 4.管道的读写…

QProcess实现进程通信

QProcess实现进程通信的方式有点类似于管道。 QProcess父进程通过write来写入标准输入stdin,通过ReadyRead信号来接收子进程的消息。 QProcess子进程通过QFile来读取标准输入来接收父进程信息。通过QFile绑定QSocketNotifier来接收标准输入的实时信号,…

进程通信原理

目录 进程通信原理 1、同主机间的消息通讯机制 1.1 管道(pipe),流管道(s_pipe)和有名管道(FIFO) 1.2 信号(signal) 1.3 消息队列 1.4 共享内存 信号量 套接字(socket) 进程间通信各种方式效率比…

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:价值驱动,认知智能走向开源共创

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