当前位置: 首页 > news >正文

操作系统 2.2-多进程总体实现

多个进程使用CPU的图像

  1. 如何使用CPU呢?

    • 通过让程序执行起来来使用CPU。

  2. 如何充分利用CPU呢?

    • 通过启动多个程序,交替执行来充分利用CPU。

  3. 启动了的程序就是进程,所以是多个进程推进

    • 操作系统需要记录这些进程,并按照合理的次序推进它们(分配资源、进行调度)。

    • 这就是多进程图像的概念。

一个CPU(灯泡图标)负责调度多个进程(PID:1, PID:2, PID:3)。

每个进程有一个进程控制块(PCB),图中展示了PCB1,其中包含了进程的状态信息,例如“算出ax=1,启动磁盘写,正在等待完成...”。

进程的创建和管理

在系统启动时,最终执行的是main点C中的main函数,通过fork创建一个进程,该进程执行INT,最终启动shell,这是用户与计算机交互的开始。

操作系统通过创建初始化进程并执行shell,使用户能够执行任务。shell根据用户输入的命令创建新的进程来完成任务,如执行LS命令时,会创建一个专门执行该命令的进程。

无论是解决实际问题还是执行特定任务,操作系统都是通过启动进程来实现的。

因此,多进程图像在整个系统运行过程中非常重要,它展示了计算机在多个进程中不断推进和解决问题的状态,从而反映了计算机的使用情况。

多进程如何组织

PCB

进程控制块(PCB)是操作系统用于记录和管理进程信息的数据结构,它包含了进程的状态、优先级、程序计数器、CPU寄存器集合和内存管理信息等。PCB是操作系统感知和控制进程的基础。

操作系统通过将进程组织成不同的队列(如就绪队列、阻塞队列等)来实现进程的管理和调度。调度策略决定了哪个进程应该被调度执行,常见的调度策略包括先来先服务(FCFS)、最短作业优先(SJF)、优先级调度和时间片轮转(RR)。

进程调度与切换是操作系统中实现多任务并发的基础。它涉及到保存当前进程的执行状态(上下文),选择下一个要执行的进程,并加载其状态。这一过程包括保存当前进程的上下文到PCB、从就绪队列中选择下一个进程、加载新进程的上下文到CPU寄存器、更新PCB和状态、以及跳转到用户模式执行新进程。

进程状态图

进程状态图是描述操作系统中进程在其生命周期内所经历的不同状态及其状态转换的图形表示。它提供了进程生存期的清晰描述,并作为理解操作系统进程管理的一个窗口。进程状态图通常包括以下几个关键状态:

  1. 新建态(New)

    • 进程正在被创建,操作系统正在为其分配资源和初始化PCB。

  2. 就绪态(Ready)

    • 进程已准备好运行,等待被调度器选中以获得CPU时间。

  3. 运行态(Running)

    • 进程正在CPU上执行。在单处理器系统上,任何时候只有一个进程处于此状态。

  4. 阻塞态(Blocked)

    • 进程正在等待某个事件(如I/O操作完成或资源可用)而不能立即执行。

  5. 终止态(Terminated)

    • 进程已完成执行或被强制终止,操作系统正在或已经清理了其资源。

进程状态转换

进程状态图还描述了进程状态之间的转换,常见的转换包括:

  • 新建 → 就绪:进程创建完成后,变为就绪状态,等待调度执行。

  • 就绪 → 运行:调度器选中就绪进程,分配CPU给它,进程开始运行。

  • 运行 → 阻塞:运行中的进程需要等待某个事件(如I/O操作),进入阻塞状态。

  • 阻塞 → 就绪:进程等待的事件已经发生(如I/O完成),进程重新变为就绪状态。

  • 运行 → 就绪:如果进程的时间片用完或被抢占,它将从运行状态返回到就绪状态,等待下一次调度。

  • 运行 → 终止:进程完成或被终止,进入终止状态。

  • 就绪 → 终止:在某些情况下,就绪进程可能直接被终止。

多进程的交替

总体轮廓

代码:

// 启动磁盘读写操作
pCur.state = 'W'; // 'W' 代表阻塞态,等待磁盘操作
addToDiskWaitQueue(pCur); // 将当前进程pCur加入磁盘等待队列
schedule(); // 调用调度函数进行进程调度
​
void schedule() {pNew = getNext(ReadyQueue); // 从就绪队列中选择下一个要执行的进程switch_to(pCur, pNew); // 进行进程切换,从pCur切换到pNew
}

“多进程图像:多进程如何交替?”

解释了在多进程环境中,当一个进程(pCur)需要等待磁盘操作时,如何通过操作系统的调度机制切换到另一个进程执行。

  1. 启动磁盘读写:当前进程发起一个磁盘读写请求。

  2. 设置进程状态:将当前进程(pCur)的状态设置为等待('W')。

  3. 放入等待队列:将pCur进程放入磁盘等待队列(DiskWaitQueue)。

  4. 调度:调用schedule()函数进行进程调度。

schedule()函数中:

  • 从就绪队列(ReadyQueue)中获取下一个要执行的进程(pNew)。

  • 调用switch_to(pCur, pNew)函数进行上下文切换,从当前进程pCur切换到新进程pNew

这个过程展示了多进程操作系统如何通过调度算法在多个进程之间进行切换,以实现多任务的并发执行。特别是当一个进程因为等待I/O操作而被阻塞时,操作系统可以将CPU资源分配给其他就绪的进程,从而提高系统的整体效率和响应速度。

交替的三个部分

进程调度:一个深刻的话题,涉及交替的三个部分:队列操作、调度和切换。

其中进程的调度有以下两种方法:

FIFO(先入先出):被认为是一种公平的策略,因为它不考虑进程执行的任务的区别,按照它们到达的顺序进行调度。

优先级调度:涉及如何设定优先级,如果设置不当可能会导致某些进程饥饿,即某些进程长时间得不到执行。

Switch_to函数

进程切换:包括三个主要步骤:保存当前进程的状态、选择下一个要执行的进程、恢复新进程的状态。

switch_to 函数:实现上下文切换,保存当前进程(pCur)的寄存器状态到PCB,并从新进程(pNew)的PCB加载寄存器状态到CPU。

进程与进程间的关系

在多进程操作系统中,进程间的合作和冲突是两个需要特别关注的问题。以下是对这两个问题的详细解释:

进程间的合作

进程间的合作通常发生在需要共享资源或数据的情况下。例如,多个进程可能需要访问同一个文件、数据库或缓冲区。在这种情况下,操作系统必须提供一种机制来确保这些共享资源被安全地访问,避免数据损坏或不一致。

生产者-消费者模型是进程合作的一个典型例子,其中一些进程(生产者)生成数据并放入缓冲区,而其他进程(消费者)从缓冲区取出数据进行处理。为了使这种合作能够顺利进行,操作系统需要提供同步机制,如互斥锁、信号量或条件变量,以确保生产者在缓冲区满时不会覆盖旧数据,消费者在缓冲区空时不会尝试读取数据。

进程间的冲突

进程间的冲突可能发生在多个进程试图同时访问或修改同一资源时。这种冲突可能导致数据不一致、死锁或资源竞争条件。为了避免这些冲突,操作系统实现了多种内存管理和进程同步技术:

  • 内存管理:通过虚拟内存和物理内存的映射,确保每个进程有自己的内存空间,从而防止进程间直接相互干扰。

  • 地址空间分离:每个进程有自己的地址空间,通过地址转换表(如页表)将虚拟地址转换为物理地址,从而实现进程间的内存隔离。

  • 进程同步:使用锁、信号量、屏障等机制来控制进程对共享资源的访问,确保在适当的时机进行数据的读写操作。

进程同步

进程同步是确保多个进程能够协调执行,以实现合作而不产生冲突的关键机制。进程同步机制可以防止多个进程同时访问共享资源而导致数据不一致的问题。常见的进程同步机制包括:

  • 互斥锁(Mutex):确保同一时间只有一个进程可以访问特定的资源。

  • 信号量(Semaphore):允许多个进程访问资源,但限制同时访问的数量。

  • 条件变量(Condition Variable):允许进程在满足特定条件时进行同步。

  • 屏障(Barrier):确保一组进程在继续执行之前全部达到某个点。

通过这些机制,操作系统可以确保进程间的合作是有序和安全的,从而有效地支持多进程图像的实现。

相关文章:

操作系统 2.2-多进程总体实现

多个进程使用CPU的图像 如何使用CPU呢? 通过让程序执行起来来使用CPU。 如何充分利用CPU呢? 通过启动多个程序,交替执行来充分利用CPU。 启动了的程序就是进程,所以是多个进程推进 操作系统需要记录这些进程,并按照…...

基于SeaShips数据集的yolov8训练教程

之前已经试过在yolov3和faster-rcnn上训练SeaShips数据集,本次在yolov8上进行训练。 yolov8的训练有两种方式,一种是在mmdetection框架下下载mmyolo运行,另一种是直接采用ultralytics。本文两种方法都会介绍。 目录 一、mmyolo 1.1 创建环…...

【时间序列聚类】从数据中发现隐藏的模式

在大数据时代,时间序列数据无处不在。无论是股票市场的价格波动、天气的变化趋势,还是用户的点击行为,这些数据都随着时间推移而产生。然而,面对海量的时间序列数据,我们如何从中提取有价值的信息?答案之一…...

在线研讨会 | 加速游戏和AI应用,全面认识Imagination DXTP GPU

近日,Imagination宣布推出 Imagination DXTP GPU IP,该产品重新定义了智能手机和其他功耗受限设备的图形和计算加速。它专为高效的效率而设计,能够提供运行AI、游戏和用户界面体验所需的性能,确保这些体验可以全天候流畅且持续地运…...

百度SEO关键词布局从堆砌到场景化的转型指南

百度SEO关键词布局:从“堆砌”到“场景化”的转型指南 引言 在搜索引擎优化(SEO)领域,关键词布局一直是核心策略之一。然而,随着搜索引擎算法的不断升级和用户需求的多样化,传统的“关键词堆砌”策略已经…...

数据库基础练习1

目录 1.创建数据库和表 2.插入数据 创建一个数据库,在数据库种创建一张叫heros的表,在表中插入几个四大名著的角色: 1.创建数据库和表 #创建表 CREATE DATABASE db_test;#查看创建的数据库 show databases; #使用db_test数据库 USE db_te…...

UVC for USBCamera in Android

基于UVC 协议,完成USBCamera 开发 文章目录 一、目的:二、USBCamera 技术实现方案难点 三、误区:四、基础补充、资源参考架构图了解Camera相关专栏零散知识了解部分相机源码参考,学习API使用,梳理流程,偏应…...

C++学习之路,从0到精通的征途:入门基础

目录 一.C的第一个程序 二.命名空间 1.namespace的价值 2.命名空间的定义 3.命名空间使用 三.C的输入与输出 1.<iostream> 2.流 3.std(standard) 四.缺省参数 1.缺省参数的定义 2.全缺省/半缺省 3.声明与定义 ​五.函数重载 1.参数个数不同 2.参数类型不…...

RSA-OAEP填充方案与定时攻击防护

目录 RSA-OAEP填充方案与定时攻击防护一、前言二、RSA 与 OAEP 填充方案概述2.1 RSA 加密算法基础2.2 OAEP 填充方案的引入2.3 数学公式推导 三、定时攻击原理与防护策略3.1 定时攻击的基本原理3.2 防护定时攻击的策略 四、基于 Python 的 RSA-OAEP 与定时攻击防护实现五、完整…...

探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件测评总结

# NVIDIA Jetson Orin Nano 8GB测评&#xff1a;当边缘计算遇上"性能暴徒"&#xff0c;树莓派看了想转行 引言&#xff1a;比咖啡机还小的"AI超算"&#xff0c;却让开发者集体沸腾 2025年的某个深夜&#xff0c;程序员老王盯着工位上巴掌大的NVIDIA Jets…...

Seata

Seata是一款开源的分布式事务解决方案&#xff0c;由阿里巴巴发起并维护&#xff0c;旨在帮助应用程序管理和协调分布式事务。以下是对Seata的详细介绍&#xff1a; 一、概述 Seata致力于提供高性能和简单易用的分布式事务服务&#xff0c;它为用户提供了AT、TCC、SAGA和XA等…...

STM32之Unix时间戳

时间戳按秒计时&#xff0c;可转换成年月日时分。32有符号存储时间戳&#xff0c;2的32次/2-1到2038年&#xff0c;STM32是2的32次方-1&#xff0c;到2106年溢出。所有时区共用一个时间戳秒计数器&#xff0c;在伦敦和北京都是0&#xff0c;不同经度加上小时即可。...

告别手动复制粘贴:可定时自动备份的实用软件解析

软件介绍 此前不少小伙伴都在找备份工具&#xff0c;其实复制文件用fastcopy就可以&#xff0c;但它需要手动操作。 今天介绍的简易备份工具则能实现定时备份。 这款软件有个小问题&#xff0c;当源目录和目标目录路径太长时&#xff0c;【立即备份】按钮可能会超出软件界面范…...

Django下防御Race Condition

目录 漏洞原因 环境搭建 复现 A.无锁无事务时的竞争攻击 B.无锁有事务时的竞争攻击 防御 A.悲观锁加事务防御 B.乐观锁加事务防御 总结 漏洞原因 Race Condition 发生在多个执行实体&#xff08;如线程、进程&#xff09;同时访问共享资源时&#xff0c;由于执行顺序…...

python从入门到精通(二十三):文件操作和目录管理难度分级练习题

文件操作和目录管理 文件操作基础难度1. 简单文件写入2. 简单文件读取3. 追加内容到文件 中级难度4. 逐行读取文件并统计行数5. 读取文件并提取特定信息6. 复制文件内容到新文件 高级难度7. 处理二进制文件8. 批量文件处理9. 日志文件分析 参考答案示例1. 简单文件写入2. 简单文…...

揭开AI-OPS 的神秘面纱 第二讲-技术架构与选型分析 -- 数据采集层技术架构与组件选型分析

基于上一讲预设的架构图&#xff0c;深入讨论各个组件所涉及的技术架构、原理以及选型策略。我将逐层、逐组件地展开分析&#xff0c;并侧重于使用数据指标进行技术选型的对比。 我们从 数据采集层 开始&#xff0c;进行最细粒度的组件分析和技术选型比对。 数据采集层技术架构…...

jupyter配置多个核心

CMD输入 先创建虚拟环境 "D:\Program Files\Python37\python.exe" -m venv myenv激活虚拟环境 myenv\Scripts\activate"D:\Program Files\Python37\python.exe" -m pip install ipykernel "D:\Program Files\Python37\python.exe" -m ipykern…...

如何优化FFmpeg拉流性能及避坑指南

FFmpeg作为流媒体处理的核心工具&#xff0c;其拉流性能直接影响直播/点播体验。本文从协议优化、硬件加速、网络策略三大维度切入&#xff0c;结合实战案例与高频踩坑点&#xff0c;助你突破性能瓶颈&#xff01; 一、性能优化进阶&#xff1a;从协议到硬件的全链路调优 协议选…...

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归&#xff08;Multiple Linear Regression&#xff09;...

笔记五:C语言编译链接

Faye&#xff1a;孤独让我们与我们所爱的人相处的每个瞬间都无比珍贵&#xff0c;让我们的回忆价值千金。它还驱使你去寻找那些你在我身边找不到的东西。 ---------《寻找天堂》 目录 一、编译和链接的介绍 1.1 程序的翻译环境和执行环境 1.1.1 翻译环境 1.1.2 运行环境 …...

SpringUI:打造高质量Web交互设计的首选元件库

SpringUI作为一个专为Web设计与开发领域打造的高质量交互元件库&#xff0c;确实为设计师和开发者提供了极大的便利。以下是对SpringUI及其提供的各类元件的详细解读和一些建议&#xff1a; SpringUI概述 SpringUI集合了一系列预制的、高质量的交互组件&#xff0c;旨在帮助设…...

LeetCode - 神经网络的 反向传播(Sigmoid + MSE) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146085177 使用 Python + Numpy,设计带有 Sigmoid 激活函数 的神经网络,实现反向传播以更新神经元的权重和偏置。函数输入:特征向量(Input)、真实标签(Label)、初始…...

Elastic如何获取当前系统时间

文章目录 1. 使用 _ingest.timestamp 在 Ingest Pipeline 中获取当前时间2. 使用 Painless Script 获取当前时间3. 使用 now 关键字在查询中获取当前时间4. 使用 date 类型字段的默认值5. 使用 Kibana 的 Dev Tools 查看当前时间6. 使用 date 聚合获取当前时间7. 使用 Elastics…...

腾讯云对象存储服务(COS)

腾讯云对象存储服务&#xff08;COS&#xff09; 安全、可扩展、低成本的云存储解决方案 腾讯云 对象存储服务&#xff08;COS&#xff0c;Cloud Object Storage&#xff09; 是一种高可靠、高性能、可扩展的云存储服务&#xff0c;专为海量非结构化数据&#xff08;如图片、…...

力扣35.搜索插入位置-二分查找

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:# 初始化左右指针left, right 0, len(nums) - 1# 当左指针小于等于右指针时&#xff0c;继续循环while left < right:# 计算中间位置mid (left right) // 2# 如果中间元素等于目标值&…...

SSLScan实战指南:全面检测SSL/TLS安全配置

SSLScan是一款开源的SSL/TLS安全扫描工具,用于检测服务器的加密协议、支持的加密套件、证书信息以及潜在的安全漏洞。本指南将详细介绍如何安装、使用SSLScan,并结合实战案例帮助您全面评估服务器的安全性。 一、SSLScan简介 功能特性: 检测支持的SSL/TLS协议版本(如TLS 1.…...

Linux 进程管理

一.进程 1.基本介绍 在Linux中每一个执行的程序都称之为进程&#xff0c;每一个进程都会分配一个进程号&#xff08;PID&#xff09;。进程以前台和后台两种方式存在&#xff0c;前台进程就是我们可以在屏幕上操作的&#xff0c;后台进程我们无法在屏幕上看到。 程序是静态的…...

mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀

在使用Windows操作系统运行某些软件时&#xff0c;不少用户会遇到令人头疼的mfc140u.dll文件丢失错误。mfc140u.dll这个错误一旦出现&#xff0c;往往导致相关程序无法正常启动或运行&#xff0c;给用户带来诸多不便。这天的这篇文章将给大家分析mfc140u.dll是什么&#xff1f;…...

日新F1、瑞研F600P 干线光纤熔接(熔接损耗最大0.03DB)

Ⅰ. 设备特性对比与实测验证 1. 日新F1&#xff08;两马达&#xff09;极限参数 切割角度&#xff1a;必须≤0.3&#xff08;双边累计误差&#xff1c;0.6&#xff09; ▶ 实测案例&#xff1a;切割0.35时&#xff0c;损耗波动达0.05-0.08dB&#xff08;超干线标准&#xff09…...

【我的待办(MyTodolists)-免费无内购的 IOS 应用】

我的待办&#xff08;MyTodolists&#xff09; 我的待办&#xff1a;智能任务管理助手应用说明主要功能为什么选择"我的待办"&#xff1f;隐私保障使用截图 我的待办&#xff1a;智能任务管理助手 应用说明 "我的待办"是一款智能化的任务管理应用&#x…...

微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统背景 &#xff08;一&#xff09;社会需求背景 在全球化的大背景下&#xff0c;英语作为国际…...

测试直播web自动化所学

web框架封装 web自动化开始&#xff1a;用电脑替代人工测试。 日常人工测试 —— 先点击XX 输入XXX 。。。页面是否符合预期 自动化测试的编码&#xff1a; web自动化&#xff0c;Selenium[常用测试库] Selenium&#xff0c;每个页面&#xff0c;是由元素组成的。html构成。 …...

Vue+Ant Design搭建AI聊天对话

今天在这里介绍一下 Ant Design X&#xff0c;这是蚂蚁设计团队推出的一款专注于人工智能&#xff08;AI&#xff09;领域的组件库&#xff0c;主要面向 React 生态系统(目前支持Openai&#xff0c;通义千问)。官方也推出了ant-design-x-vue 面向 Vue。当然我们今天的主题也是使…...

应用案例 | 精准控制,高效运行—宏集智能控制系统助力SCARA机器人极致性能

概述 随着工业4.0的深入推进&#xff0c;制造业对自动化和智能化的需求日益增长。传统生产线面临空间不足、效率低下、灵活性差等问题&#xff0c;尤其在现有工厂改造项目中&#xff0c;如何在有限空间内实现高效自动化成为一大挑战。 此次项目的客户需要在现有工厂基础上进行…...

JavaScript基础-运算符的分类

在JavaScript编程中&#xff0c;运算符是构建表达式和执行操作的基础工具。了解不同类型的运算符以及它们的工作原理对于编写高效且无误的代码至关重要。本文将介绍JavaScript中的主要运算符类型&#xff0c;并通过实例展示它们的用法。 一、算术运算符 算术运算符用于执行基…...

URIError: URI malformed

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

达梦适配记录-检查服务器

service DmServicedmdb status 查看是否开启&#xff0c;没有配置systemctl&#xff0c;查看《DM8_Linux 服务脚本使用手册》2.1.2.2 1 &#xff0e;拷贝服务模板文件&#xff08; DmService &#xff09;到目录&#xff08; /opt/dmdbms/bin &#xff09;&#xff0c;并将新文…...

【leetcode hot 100 160】相交链表

解法一&#xff1a;&#xff08;哈希集合&#xff09;利用HashSet保存一个链表的值&#xff0c;循环另一个列表&#xff0c;在HashSet中寻找该值。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x…...

选择排序算法的SIMD优化

一、优化原理 将查找数组最小值索引的SIMD优化的函数嵌入选择排序主循环,优化最耗时的最小值查找环节,同时保留选择排序的交换逻辑。 二、关键改造步骤 1)最小值查找模块化 复用SIMD优化的 find_min_index_simd函数。 2)动态子数组处理 每次循环处理 arr[i..n-1] 子数…...

Visual Studio Code打开远程服务器项目,打开服务器Android上百G源码,SSH免密连接方式

Visual Studio Code打开远程服务器项目 1&#xff0c;Visual Studio Code拓展中&#xff0c;安装远程插件 Remote Development 2&#xff0c;SSH免密连接&#xff0c;A电脑免密连接B&#xff0c;配置B电脑.ssh/authorized_keys A电脑的.ssh/id_rsa.pub中的公钥内容&#xff0c;…...

vscode mac版本 配置git

首先使用 type -a git查看git的安装目录 然后在vscode中找到settings配置文件&#xff0c;修改git.path...

BUUCTF——[GYCTF2020]FlaskApp1 SSTI模板注入/PIN学习

目录 一、网页功能探索 二、SSTI注入 三、方法一 四、方法二 使用PIN码 &#xff08;1&#xff09;服务器运行flask登录所需的用户名 &#xff08;2&#xff09;modename &#xff08;3&#xff09;flask库下app.py的绝对路径 &#xff08;4&#xff09;当前网络的mac地…...

【QT常用技术讲解】window系统以CMD命令行方式执行第三方程序及注册表文件命令

前言 在window下&#xff08;本篇为window10&#xff09;&#xff0c;调用第三方应用&#xff0c;可以调用后台CMD执行的命令行。如果是浏览器调用第三方应用&#xff0c;可以通过自定义域名调用指定的处理脚本&#xff0c;处理脚本再调用第三方软件。本篇只讲解QT程序调用后台…...

manus是什么?能干啥?

Manus哪儿来的&#xff1f; ​ Manus是一款由中国团队Monica.im于2025年3月5日发布的通用型AI代理&#xff08;AI Agent&#xff09;产品&#xff0c;旨在通过自主思考、系统规划和灵活工具调用&#xff0c;帮助用户完成各种复杂任务&#xff0c;从而解放用户的时间与创…...

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求&#xff1a; 1&#xff0e;构建物联网系统&#xff0c;实现前后端的交互。 实验内容&#xff1a; CS模式MQTT&#xff08;不带数据分析处理功能&#xff09; 实现智能设备与应用客户端的交…...

恭喜!《哪吒2》明天将荣登世界影坛第六!目前仅差1.81亿元

全球总票房为为20.27亿美元&#xff01;3月8日将荣登世界影坛第六宝座&#xff01; 中国票房 内地票房 中国电影票房、灯塔、猫眼三大数据源加权平均得出《哪吒2》中国内地总票房为144.26亿元人民币。 港澳票房 目前港澳地区没有新的数据显示&#xff0c;按3月6日1905电影网…...

2025 ubuntu24.04系统安装docker

1.查看ubuntu版本&#xff08;Ubuntu 24.04 LTS&#xff09; rootmaster:~# cat /etc/os-release PRETTY_NAME"Ubuntu 24.04 LTS" NAME"Ubuntu" VERSION_ID"24.04" VERSION"24.04 LTS (Noble Numbat)" VERSION_CODENAMEnoble IDubun…...

浅说图论基础

引入 在学最短路算法之前&#xff0c;我们要先搞清楚另外一个事情&#xff0c;什么是图&#xff0c;我们又可以基于图做那些事情。 图不同于树&#xff0c;它是一种更加复杂的数据结构&#xff0c;相比较于树或者数组&#xff08;线性表&#xff09;而言&#xff0c;图的关联…...

DeepSeek【部署 03】客户端应用ChatBox、AnythingLLM及OpenWebUI部署使用详细步骤

DeepSeek客户端应用 1.ChatBox2.AnythingLLM3.OpenWebUI4.总结 客户端软件提供可视化的模型及参数配置&#xff0c;人性化的对话窗口及文件上传功能&#xff0c;大大降低了大模型的使用门槛。 1.ChatBox Chatbox AI 是一款 AI 客户端应用和智能助手&#xff0c;支持众多先进的…...

工作学习笔记:HarmonyOS 核心术语速查表(v14 实战版)

作为在 HarmonyOS 开发一线摸爬滚打的工程师&#xff0c;笔者在 v14 版本迭代中整理了这份带血的实战术语表。 一、架构基础术语速查 A 系列术语 术语官方定义笔者解读&#xff08;v14 实战版&#xff09;开发陷阱 & 解决方案abc 文件ArkCompiler 生成的字节码文件打包时…...