Linux进程通信和线程通信

article/2025/9/14 9:36:52

1、进程和线程是什么

     简单的描述:进程好比是工厂,线程是工厂里的生产线,一个进程里面可以包含多个线程。

     专业术语:进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。

     每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一

类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

2、进程间通信

    进程间通信,基于操作系统的支持。不同操作系统中的进程通信,会有区别。以linux操作系统为例:

(1) 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系。又称为无名管道。

   注:无名管道,只适用于关联进程之间通信,parent 进程 和 child进程

(2)有名管道(FIFO):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间通信。

(3)信号(signal):信号是一种比较复杂的通信方式,用于通知接收进程某一事件已经发生。

(4)IPC -> 消息队列(message queue):消息队列是由消息组成的链表,存放在内核中 并由消息队列标识符标识。消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。消息队列容量为1时,有些地方称为消息邮箱。

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

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

(7)套接字(socket):主要指,TCP/IP这块。套接口也是一种进程间的通信机制,与其他通信机制不同的是它可以用于不同及其间的进程通信。

(8)事件标志组:在一些实时操作系统中常用,当所有标识都满足后,继续执行。

3、线程间的通信机制。

(1)、锁机制

     1.1 互斥锁:提供了以排它方式阻止数据结构被并发修改的方法。

     1.2 读写锁:允许多个线程同时读共享数据,而对写操作互斥。

     1.3 条件变量:可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。

(2)、信号量机制:包括无名线程信号量与有名线程信号量

(3)、信号机制:类似于进程间的信号处理。

线程间通信的主要目的是用于线程同步,所以线程没有象进程通信中用于数据交换的通信机制。


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

相关文章

操作系统实验三、进程通信

文章目录 操作系统实验三、进程通信一、实验目的二、实验内容三、设计原理(或方案)及相关算法四、结果分析五、源代码 操作系统实验三、进程通信 一、实验目的 ​ 1、了解和熟悉Linux支持的消息通信机制、管道道通信、共享存储区机制及信息量机制。 2…

C++进程和Python进程通信

项目研发过程中用到了进程通信,由C应用程序创建共享内存及两个同步事件(Event1、Event2),然后阻塞等待外部进程激活事件Event1,Event1激活后,C应用程序读取共享内存中的数据,完成数据解析后执行相应指令,并…

Linux 进程通信

Linux 进程通信 1.传统进程通信 1.1 信号 信号机制是在软件层次上对中断机制的一种模拟。 信号的捕获与处理也成为系统的“软中断”机制。 1.1.1 常用信号 每个信号都有一个编号和宏定义的名称,这些名字都已SIG开头。宏定义在signal.h头文件中。 1.1.2 信号的…

进程间通信

文章目录 前言1、进程间通信的目的2、管道1.1 匿名管道1.2 命名管道 3、共享内存2.1 shmget函数2.2 shmctl函数2.3 shmat函数2.4 shmdt函数 4、消息队列5、信号量 前言 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或…

【操作系统】进程通信

什么是进程通信?进程为什么需要通信? 进程通信:进程通信就是进程之间的信息交换。 进程通信的目的: 数据传输:一个进程需要将它的数据发送给另一个进程。通知事件:一个进程需要向另一个或一组进程发送消息…

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

什么是认知智能?

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

认知智能是什么?

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