操作系统:进程和线程+进程的通讯方式

鸿蒙内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽 鸿蒙内核默认支持 64个进程和128个任务,由进程池和任务池统一管理.内核设计尽量不去打扰它们,让各自过好各自的日子, 但大家毕竟在一口锅里吃饭, 不可能不与外界联系 阅读详情

计算机资源=存储资源+计算资源
计算资源:由系统分配,操作系统按照一定的规则来分配什么时候由谁来获得CPU的计算资源(CPU是计算单元,对输入的数据和指令进行计算)
存储资源:就是内存,存储资源是操作系统管理和分配

1.进程

定义:一个程序在一个数据集上的一次运行
/一个程序在多个数据集上/一个程序在同一个数据集上运行多次/是不同的进程

进程的三种基本状态:
1.就绪状态:除CPU外已分配所有资源,等待获得处理机执行
2.执行状态:获得处理机,程序正在执行
3.阻塞状态:因等待而无法执行,放弃处理机,处于等待状态。(等待I/O口完成,申请缓冲区不满足,等待信号等)

2.线程:

定义:进程中的一个实体(进程中一段程序片段)

3.进程和线程的区别:

内存空间:
进程的内存空间是独立的,有独立的地址空间,不允许突破进程边界的存取其他进程的内存空间
线程共享同一进程中的内存空间(共享的是进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID)/(并且每个线程拥有自己的栈内存)

隶属关系:
线程属于进程,进程退出时结束所有线程,线程占用资源少于进程。

多个执行执行:
两个进程不能同时执行
多个线程可以同时执行
多线程程序只要有一个线程死掉,整个进程也死掉

4.进程的通讯方式:5种

管道:
1.无名管道:
数据只能在一个方向上流动
用于具有亲缘关系的进程之间的通信
特殊的文件,存在于内存
这里写图片描述

2.命名管道:
可以在无关的进程之间交换数据
文件形式存在于文件系统

这里写图片描述
write_fifo的作用类似于客户端,可以打开多个客户端向一个服务器发送请求信息,read_fifo类似于服务器,它适时监控着FIFO的读端,当有数据时,读出并进行处理,但是有一个关键的问题是,每一个客户端必须预先知道服务器提供的FIFO接口

3.消息队列:
消息的链表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。
消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
(消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。)

4.信号量:
一个计数器,实现进程间的互斥与同步,而不是用于存储进程间通信数据。
常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。主要作为进程间以及同一进程内不同线程之间的同步手段

5.共享内存:
两个或多个进程共享一个给定的存储区
共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。
因为多个进程可以同时操作,所以需要进行同步。
信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问

五种通讯方式总结
1.管道:速度慢,容量有限,只有父子进程能通讯
2.FIFO:任何进程间都能通讯,但速度慢
3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题 ;信号传递信息较管道多。
4.信号量:不能传递复杂消息,只能用来同步
5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

https://blog.youkuaiyun.com/wh_sjc/article/details/70283843

达梦--利用存储过程与定时任务实现数据自动迁移 本文详细介绍了在达梦数据库中如何结合存储过程与定时任务实现数据自动迁移。通过一个电商订单归档的实战案例,阐述了从设计表结构、编写具备异常处理和幂等性的存储过程,到配置DBMS_SCHEDULER定时任务的全流程。该方法能有效替代手动脚本,确保数据同步任务的稳定、准确与自动化执行,适用于报表准备、数据备份等多种场景。 阅读详情

相关推荐

微信小程序反编译实战:用wxappUnpacker获取他人源码的完整流程(附常见报错解决方案)

本文详细解析了微信小程序反编译的完整流程,从缓存提取到源码重构,使用wxappUnpacker工具链实现逆向工程。涵盖环境配置、解密反编译、项目调试等关键步骤,并提供了常见报错解决方案,帮助开发者学习优秀实现方案或进行安全审计。

weixin_42706667的博客 469

进程间的通信方式(六种)

进程之间的通信 参考文章:https://blog.youkuaiyun.com/qq_34827674/article/details/107678226 前提知识:每个进程都有自己的用户空间,而内核空间是每个进程共享的。因此进程之间想要进行通信,就需要通过内核来实现。 管道: 管道是最简单,效率最差的一种通信方式。 管道本质上就是内核中的一个缓存,当进程创建一个管道后,Linux会返回两个文件描述符,一个是写入端的描述符,一个是输出端的描述符,可以通过这两个描述符往管道写入或者读取数据。 如果想要实现两个进程通过

OYMNCHR的博客 6万+

Docker启动安装nacos(详情讲解,全网最细)

docker安装nacos保姆级教程

ilvjiale的博客 8万+

操作系统——进程间通信

每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。​ 进程间通信目的一般有共享数据,数据传输,消息通知,进程控制等。以 Unix/Linux 为例,介绍几种重要的进程间通信方式:共享内存,管道,消息队列,信号量,信号​ 管道 如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。 $ ps auxf | grep mysql 上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出,作为后一个命令(

zhouhengzhe的博客 9908

别再调参了!用Simulink手把手教你搞定FOC电机速度环PI控制器(附模型下载)

本文详细介绍了如何使用Simulink搭建FOC电机速度环PI控制器,通过模最优准则和系统化调试方法,避免传统手动调参的繁琐过程。文章包含从传递函数推导到参数自动整定的完整流程,并提供了实战调试技巧与异常处理指南,帮助工程师快速实现电机控制系统的稳定运行。

weixin_42519985的博客 412

.ipynb文件深度解析:从JSON结构到Jupyter Notebook高效使用指南

在Python开发与数据处理领域,交互式编程正成为探索数据与验证思路的高效方式。Jupyter Notebook作为最流行的交互式环境之一,其默认文件格式.ipynb本质是一个基于JSON的文本文件,内部通过单元格组织代码、说明文字与运行结果。理解其JSON结构,不仅有助于掌握Notebook的存储原理,更能为文件损坏修复、版本控制与自动化转换提供基础。依托对单元格类型、魔法命令及输出可视化的熟练运用,数据分析和数据可视化流程可以变得更为流畅。同时,借助VS Code、nbconvert等工具,开发者能将.

weixin_28839629的博客 343

【操作系统】进程间通信的五种方式

引言1.进程对白:管道、记名管道、套接字1.1管道1.2虫洞:套接字1.3.信号4.信号旗语:信号量5.进程拥抱:共享内存 引言 进程作为人类的发明,自然免不了脱离人类的习性,也有通信需求。如果进程之间不进行任何通信,那么进程所能完成的任务就要大打折扣。例如,父进程在创建子进程后,通常需要监督子进程的状态,以便在子进程没有完成给定的任务时,可以再创建一个子进程来继续。这就需要父子进程间通信。 进程之间的交互称为进程间通信(Inter-Process Communication, IPC)。那么进程之间的通.

qq_41358574的博客 8793

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 152

进程通信常见方式

进程通信是指进程之间的信息交换。

一个菜鸡的博客 3719

2026.3.9:具身智能之GraspNet:Ubuntu24.04安装GraspNet

本文详细介绍了在Ubuntu24.04系统下安装GraspNet具身智能框架的全过程。主要包括:1) 创建Python3.9虚拟环境;2) 安装CUDA12.8和PyTorch2.7.0等基础依赖;3) 编译安装pointnet2、knn和graspnetAPI三个核心组件;4) 修改源码适配新版PyTorch;5) 下载预训练权重并成功运行demo。安装过程中特别提示了可能遇到的报错处理方案,最终在GPU环境下实现了GraspNet的部署运行。整个流程涵盖了从环境配置到项目运行的完整步骤,为具身智能研究者

拥抱具身智能,昇腾Ascend C 202

手把手教你学Simulink--基于飞行控制与稳定性的场景实例:多旋翼无人机在风扰动下的稳定性分析

本文介绍了使用Simulink仿真多旋翼无人机在风扰动下稳定性的方法。通过构建包含飞行器动力学模型、PID控制系统和环境模拟模块的仿真系统,分析了无人机在不同风速条件下的飞行性能。详细说明了从创建模型、设置动力学方程、设计PID控制器到添加风扰动模型的完整流程,并提供了性能评估指标。该方法可用于验证控制系统有效性,优化飞行稳定性参数,为无人机控制系统的设计和调试提供参考。

MHD0815的博客 327

进程间的5种通信方式详细介绍

进程间的5种通信方式详细介绍一、管道无名管道 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 一、管道 无名管道 特点: 半双工通信,即数据流只能在一个方向上...

不甘平凡的码农 4838

华为OD机试 - 进制转换 - 二进制(Python/JS/C/C++ 2024 B卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题。

学Java,找哪吒 915

多核通讯、线程通讯、进程通讯的区别

多核通讯、线程通讯和进程通讯的主要区别在于它们的通信介质、通信方式和同步机制。多核通讯侧重于硬件层面的优化,线程通讯侧重于同一进程内的高效数据交换,而进程通讯侧重于不同进程间的数据交换,通常需要操作系统提供的通信机制。在实际应用中,选择哪种通信方式取决于具体的应用场景和需求。深入研究多核通信与线程通信在性能上有哪些差异?

icon_sunshine的博客 2154

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java-进程 / 线程间通讯方式

本文主要介绍了Java中进程 / 线程间通讯方式共享内存、管道、消息队列、信号量、Socket以及示例,欢迎各位大佬给出指导意见。

向诸位大佬虚心学习 1888

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

进程间通信和线程间通信的几种方式

进程和线程的区别: 对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。 而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,而且拥有自己的栈空间,拥有独立序列。 共同点: 它们都能提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点。 线程执行开销比较小,但不利于资源的管理和保护,而进程相反...

Harry的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

操作系统-进程与线程

操作系统用来保护系统资源和提高稳定性的重要机制。

LDM的博客 928

(大集合)Linux进程和线程的基本编程、通讯和例程【杂记】

真正的全面!对 Linux 进程 和 线程 的基本 编程、通讯(IPC、线程同步) 和 例程 做一个大总结

空有精品无人问,倒也自然 3841

【Java】进程、线程和协程。创建线程的方式

进程、线程、协程的区别和联系。创建线程的方式有哪些

weixin_62005048的博客 1918

进程与线程——Linux进程与线程通讯…

实验一 进程与线程——Linux进程与线程通讯 一、实验目的 深刻理解线程和进程的概念,掌握线程与进程在组成成分上的差别,以及与其相适应的通讯方式和应用目标。 二、实验内容 1、以Linux系统进程和线程机制为背景,掌握fork()和clone()系统调用的形式和功能,以及与其相适应的高级通讯方式。由fork派生的子进程之间通过pipe通讯,由clone创建的线程之间通过共享内存通讯,

极客剑 2412

linux操作系统之:进程线程

进程是资源分配的基本单位,是程序执行的实例,在程序运行时创建。线程是程序执行的最小单位,是进程的一个执行流,一个进程包含多个线程,也是处理器调度的基本单位。进程线程地址空间自身独立的地址,每启动进程,就会分配地址空间,并且建立数据表维护代码段、堆栈段和数据段,,操作昂贵。共享进程的数据,使用相同地址空间,创建线程开销小。通信方式通信的方式(IPC)进行,需要处理好同步与互斥的关系。1个进程出问题对其他进程无影响。通信更方便,同一进程下的线程共享全局变量、静态变量等数据;

m0_63069832的博客 1661

问一:进程和线程间通讯方式?

操作系统层面的进程间通讯 ①管道 存在于内存中,进程可以对它进行读写,提供流控机制,保证进程的正确读写(管道为空读阻塞,管道为满写阻塞) ②消息队列 类似于管道,但不止能够传输字节流,没有缓冲区大小限制。同时独立于进程,进程终止时消息队列及其内容不会被删除,实现消息随机读取 ③套接字(socket) 可用于不同机器间的进程通信(即网络间进程通信) ④信号量(Semaphore) 一...

向代码提问 273

线程通信和进程通信区别(线程进程区别)

前言:腾讯笔试中多道选择题考到这个问题,这里总结一下。学习Java的童鞋可能对于线程的理解要比学php好很多。本文参考于线程通信与进程通信的区别 。 进程和线程的区别:对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,而且拥有自己的栈空间,拥有独立序列。共同点: 它们

Fhang 7330

进程间的几种通信方式的比较和线程间的几种通信方式

近日想总结下进程间,线程间的通信方式,在网上搜索了下,感觉写的很好,照搬过来,当做加深记忆。 几种进程间的通信方式 (1) 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系。 (2)有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间通信。 (3)信号量(semopho

ykc的专栏 3万+

操作系统:线程(基本概念,内核线程,用户线程,通讯方式)

【内核级线程(内核管理)】指的是在内核支持下运行的,即无论是用户进程中的线程,还是系统进程中的线程,对应的 TCB 自然是放在操作系统里的,它们的创建、撤销和切换等也是依靠内核,在内核空间实现的。内核线程的数量=CPU的核心数。【用户级线程】仅存在于用户空间中。对于这种线程的创建、撤销、线程之间的同步与通信等功能,都无须利用系统调用来实现。对于用户级线程的切换,通常发生在一个应用进程的诸多线程之间,这时,也同样无须内核的支持。

燕双嘤 1426

取经之路 - 进程线程通讯和同步

我还是从前那个少年,没有一丝丝改变 文章目录`我还是从前那个少年,没有一丝丝改变`操作系统进程间通讯操作系统线程通讯线程进程同步机制Android线程通讯Android进程间通讯 操作系统进程间通讯 管道 <共享文件> 信号量 <锁机制> 消息队列 <位于内核中> 共享内存 <最快> socket <通讯机制> RPC < soc...

Primer5 170
上一篇: C++13:内存分配方式
下一篇: 操作系统:死锁
有多少个小土豆
博客等级 码龄10年 235粉丝 210原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值