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

Linux下进程地址空间

文章目录

  • 1. 进程地址空间分布
  • 2. 为什么要有进程地址空间
      • 一、主要功能
      • 二、重要特性
      • 三、应用场景
      • 四、与TLB的交互
  • 3. 进程具有独立性

以x86(32位)为例子

1. 进程地址空间分布

processroom

进程地址空间,本质是一个描述进程可视范围的大小。

地址空间本质是一个内核数据结构,类似PCB一样, 地址空间要被操作系统管理:先描述,在组织

mm_struct 4.19内核

4.19

2.6 内核
2.6

在您提供的代码片段中,定义了一系列unsigned long类型的变量,这些变量通常用于存储与进程内存布局和统计信息相关的数据。下面是对每个变量的简要说明:

  1. start_code, end_code

    • 这些变量通常用于表示代码段的起始和结束地址。代码段是存储程序指令的内存区域。
  2. start_data, end_data

    • 这些变量表示数据段的起始和结束地址。数据段是存储已初始化全局变量和静态变量的内存区域。
  3. start_brk, brk

    • start_brk可能表示堆的起始地址(在某些上下文中,它可能表示程序加载时堆的初始位置)。
    • brk是当前堆的结束地址,也是堆扩展的边界。通过调整brk指针,可以动态地增加或减少堆的大小。
  4. start_stack

    • 这个变量表示栈的起始地址。栈是存储局部变量、函数调用信息和返回地址的内存区域。
  5. arg_start, arg_end

    • 这些变量表示命令行参数在内存中的起始和结束地址。
  6. env_start, env_end

    • 这些变量表示环境变量在内存中的起始和结束地址。
  7. rss

    • Resident Set Size(常驻集大小),表示进程当前占用的物理内存大小(不包括交换出去的部分)。
  8. anon_rss

    • Anonymous RSS(匿名常驻集大小),表示由进程占用的、未映射到文件的物理内存大小(如堆和栈)。
  9. total_vm

    • Total Virtual Memory(总虚拟内存),表示进程占用的总虚拟内存大小。
  10. locked_vm

    • Locked Virtual Memory(锁定虚拟内存),表示被锁在内存中的虚拟内存大小,防止被换出。
  11. shared_vm

    • Shared Virtual Memory(共享虚拟内存),表示与其他进程共享的虚拟内存大小。
  12. exec_vm

    • Executable Virtual Memory(可执行虚拟内存),表示与进程的可执行代码相关的虚拟内存大小。
  13. stack_vm

    • Stack Virtual Memory(栈虚拟内存),表示与进程的栈相关的虚拟内存大小。
  14. reserved_vm

    • Reserved Virtual Memory(保留虚拟内存),表示为进程保留但尚未使用的虚拟内存大小。
  15. def_flags

    • Default Flags(默认标志),可能表示与内存页相关的默认属性或标志。
  16. nr_ptes

    • Number of Page Table Entries(页表项数量),表示进程使用的页表项的数量,页表用于将虚拟地址映射到物理地址。

这些变量通常通过特定的系统调用或库函数(如/proc/self/statm/proc/[pid]/statusgetrusage()等)来获取其值,或者在某些特定的上下文中(如内核模块或调试工具)直接访问进程的内存管理结构来获取。请注意,这些变量的具体含义和用途可能会根据操作系统和上下文的不同而有所变化。

2. 为什么要有进程地址空间

  1. 让进程以统一的视角看待内存
  2. 增加进程虚拟地址空间让我们访问内存的时候,增加一个转换过程,在这个转化的过程中,可以对我们的寻址请求进行审查,所以一旦异常访问,直接拦截,该请求不会到达物理内存保护物理内存
  3. 因为有地址空间和页表的存在, 将进程管理模块和内存管理模块进行解耦合!

why

CR3寄存器,全称为Control Register 3,是x86架构中的一种重要控制寄存器。以下是对CR3寄存器的详细介绍:

一、主要功能

CR3寄存器的主要功能是存储页目录表的物理地址。在x86架构的操作系统中,使用分页机制将虚拟地址映射到物理地址。为了实现这种映射,需要使用页表和页目录表来管理地址转换。CR3寄存器存储了页目录表的物理地址,当处理器执行访问内存的指令时,会将虚拟地址发送给内存管理单元(MMU)。MMU根据当前CR3寄存器中存储的页目录表地址进行地址转换,将虚拟地址转换为物理地址,并完成内存的访问。

二、重要特性

  1. 特权级别:CR3寄存器是特权级别的寄存器,只能在特权级别0(内核模式)下进行访问和修改。用户程序无法直接访问和修改CR3寄存器的值,它们只能通过特权级别0的内核代码提供的接口来间接修改CR3寄存器的值,例如在进程切换时更新CR3寄存器以切换页表。
  2. 页目录表基址:CR3寄存器也被称为PDBR(Page Directory Base Register),它保存了页目录表的物理地址。由于页目录表总是放在以4K字节为单位的存储器边界上,因此CR3寄存器的低12位总为0,不起作用。即使写上内容,也不会被处理。
  3. 地址转换:通过修改CR3寄存器的值,可以切换页目录表,从而改变虚拟地址到物理地址的映射关系。这是实现不同虚拟地址空间之间切换的关键。

三、应用场景

  1. 内存保护:CR3允许操作系统将不同的进程隔离在不同的虚拟地址空间,防止一个进程访问另一个进程的内存,从而保证系统的安全性和稳定性。
  2. 虚拟内存:CR3允许操作系统将硬盘空间作为虚拟内存的一部分,扩展了可用的内存空间,使电脑可以运行更大的程序和处理更多的数据。
  3. 进程切换:在进程切换时,操作系统会更新CR3寄存器的值以切换不同进程的页目录表,从而实现不同进程之间的内存隔离。这是操作系统实现多任务处理的基础。

四、与TLB的交互

TLB(Translation Lookaside Buffer)是一个高速缓存,用于加速虚拟地址到物理地址的转换过程。当处理器访问内存时,会首先检查TLB中是否包含所需的页表项。如果包含,则直接使用TLB中的物理地址进行访问;如果不包含,则需要通过CR3寄存器中的页目录表地址进行地址转换,并将结果存入TLB中以便下次使用。

在进程切换时,为了使新的页表生效,操作系统会更新CR3寄存器的值并刷新TLB。这是因为新的进程可能有不同的页目录表和页表项,因此需要清除旧的TLB内容以避免地址转换错误。

综上所述,CR3寄存器是x86架构中的一种重要控制寄存器,它通过存储页目录表的物理地址并参与地址转换过程,实现了内存管理、虚拟内存和进程切换等关键功能。同时,CR3寄存器还与TLB交互以加速地址转换过程并提高系统性能。

3. 进程具有独立性

进程是操作系统中的一个核心概念,用于描述一个程序在执行时的实例。每个进程都具有一定的独立性,这主要体现在以下几个方面:

  1. 独立的内存空间:每个进程都有自己独立的地址空间,这意味着进程之间的内存是相互隔离的。一个进程不能直接访问另一个进程的内存空间,这有助于保护数据的安全性和完整性。

  2. 独立的执行环境:每个进程都有自己的执行上下文,包括程序计数器、堆栈、数据段等。这些执行环境确保进程在执行时不会受到其他进程的影响,从而保持其独立性。

  3. 独立的资源分配:操作系统为每个进程分配独立的系统资源,如CPU时间、文件描述符、内存等。这些资源在进程的生命周期内归该进程所有,并受到操作系统的管理。

  4. 独立的调度和控制:操作系统可以独立地调度和控制每个进程的执行。这包括进程的创建、终止、挂起、恢复等操作,这些操作都是针对单个进程进行的,不会影响到其他进程。

然而,虽然进程具有一定的独立性,但它们之间仍然可以通过某些机制进行通信和协作。这些机制包括管道、消息队列、共享内存、信号等。这些通信机制允许进程之间交换数据和信息,从而实现更复杂的任务和功能。

总的来说,进程的独立性是操作系统设计和实现中的一个重要原则,它有助于保护进程的数据和状态,确保系统的稳定性和安全性。同时,通过提供适当的通信和协作机制,操作系统也允许进程之间进行有效的信息交换和合作。

相关文章:

Linux下进程地址空间

文章目录 1. 进程地址空间分布2. 为什么要有进程地址空间一、主要功能二、重要特性三、应用场景四、与TLB的交互 3. 进程具有独立性 以x86(32位)为例子 1. 进程地址空间分布 进程地址空间,本质是一个描述进程可视范围的大小。 地址空间本质是一个内核数据结构,类似…...

基于SpringBoot的养老院管理系统的设计与实现

一、前言 随着人口老龄化的加剧,养老院作为老年人养老的重要场所,其管理的高效性和科学性显得尤为重要。传统的养老院管理方式多依赖人工操作,存在信息记录不及时、不准确,管理流程繁琐,资源调配困难等问题。利用信息技…...

GA-Kmeans-Transformer-GRU时序聚类+状态识别组合模型,创新发文无忧!

GA-Kmeans-Transformer-GRU时序聚类状态识别组合模型,创新发文无忧! 目录 GA-Kmeans-Transformer-GRU时序聚类状态识别组合模型,创新发文无忧!效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.GA-Kmeans-Transformer-GRU时…...

Hadoop单机搭建手册

hadoop搭建安装指导手册,包含hadoop-3.1.1、hive-3.1.0、zookeeper-3.4.6、hbase-2.3.0、spark-3.3.0等组件版本。文档详细21页,附带所有软件包。笔者发现很多人对于如何快速高效的单机搭建不太清楚,所以笔者整理了这个文档,希望可…...

【射频IC进阶实践教程】2.6 LNA版图设计及DRC/LVS验证

射频集成电路的版图设计非常关键,他对寄生参数非常敏感,需要使其最小化。还需要注意相互耦合的方式本次课程主要介绍射频IC的一些相关布局和连线方面的考虑。 一、版图设计 1. 版图的元件布局 首先打开对应的原理图 点击进行版图设计 由于已经有做好的…...

mac下载安装jdk

背景 长时间不折腾mac全部忘记 特此记录 安装 1.下载jdk 根据需要下载对应的jdk 我直接 下载到/Applicatiions目录 https://www.oracle.com/java/technologies/downloads/#java8-mac 2.解压 cd /Applicatiions tar -zxvf jdk-8u431-macosx-x64.tar.gz 3.配置环境 …...

【uniapp】swiper切换时,v-for重新渲染页面导致文字在视觉上的拉扯问题

问题描述 先用v-for渲染了几个列表,但这几个列表是占同一个位置的,只是通过切换swiper来显示哪个列表显示,也就是为了优化页面切换时候,没有根据swiper的current再更新v-for的数据,但现在就有个问题,怎么隐…...

shell自动显示当前git的branch

效果简介: 1. 如果没在git仓库,显示无变化 2. 如果在git仓库,显示当前分支 实现方法: 在~/.bashrc 里添加: function git_branch { test -d .git && branch"git branch | grep "^\*" | sed…...

使用 Acme.sh 自动生成和续签免费 SSL 证书(含通配符支持)

Acme.sh 是一个开源的脚本,能够从 ZeroSSL、Let’s Encrypt 等证书颁发机构(CA)获取免费的 HTTPS 证书。该脚本特别简单易用,并且支持多种验证方式。下面将详细介绍使用 Acme.sh 生成、安装和更新证书的各个步骤。 Github地址 使用…...

【JAVA】Java高级:Spring框架与Java EE—Web开发基础(Servlet、JSP)

Java作为一种广泛使用的编程语言,提供了强大的Web开发框架和技术,其中Servlet和JSP(JavaServer Pages)是构建动态Web应用的基础。了解这些技术对于任何想要深入Java Web开发的程序员来说都是必不可少的。 一、Web开发的重要性 动…...

pytorch生成对抗网络

# 生成对抗网络 import os import torch import torchvision import torch.nn as nn from torchvision import transforms from torchvision.utils import save_image # Device configuration device torch.device(cuda if torch.cuda.is_available() else cpu) # 超参数 late…...

flask简易版的后端服务创建接口(python)

1.pip install安装Flask和CORS 2.创建http_server.py文件,内容如下 """ ============================ 简易版的后端服务 ============================ """ from flask import Flask, request, jsonify from flask_cors import CORS app = F…...

gitlab 生成并设置 ssh key

一、介绍 🎯 本文主要介绍 SSH Key 的生成方法,以及如何在GitLab上添加SSH Key。GitLab 使用SSH协议与Git 进行安全通信。当您使用 SSH密钥 对 GitLab远程服务器进行身份验证时,您不需要每次都提供您的用户名和密码。SSH使用两个密钥&#x…...

ssh远程升级Ubuntu20.04到Ubuntu 22.04

ssh远程升级Ubuntu20.04到Ubuntu 22.04 陈拓 2024/10/16-2024/10/26 1. 简介 本文介绍了如何通过ssh将Ubuntu系统从20.04升级到22.04。 在进行系统升级之前,建议备份重要数据,以防升级过程中出现问题。 2. 更新当前系统 硬件系统架构 当前操作系统版…...

Qt开源控件:图像查看器工具V1.1

一、项目概述 本项目是一款基于 Qt 框架 开发的 图像查看工具,可以显示带坐标轴的图像,并实时获取图像中任意像素点的坐标和颜色信息。工具具有图像缩放、动态坐标轴绘制、鼠标交互等功能,使用起来方便直观。 二、功能亮点 1. 图像加载与显…...

【WRF-Urban】SLUCM新增空间分布城市冠层参数及人为热排放AHF代码详解(下)

目录 详细解释更改文件内容4 运行模块(run):README.namelist5 输出模块(share):share/module_check_a_mundo.Fshare/output_wrf.F参考SLUCM新增空间分布城市冠层参数及人为热排放AHF代码详解的前两部分内容可参见-【WRF-Urban】SLUCM新增空间分布城市冠层参数及人为热排放A…...

【C#】新建窗体文件,Form、UserControl

从用途、功能性和架构方面进行描述。 1. 继承自 Form 的窗体(通常是窗口): 在 C# 中,Form 是用于创建应用程序的主窗口或对话框窗口的类。当您继承自 Form 时,您创建的是一个完整的窗口,可以显示内容、与…...

优化SEO策略掌握长尾关键词的力量

内容概要 在数字营销领域,SEO(搜索引擎优化)是帮助网站获得更多流量的关键。然而,随着在线竞争的加剧,单纯依赖短尾关键词已难以满足用户的搜索需求。这时,长尾关键词的引入便显得尤为重要。长尾关键词通常…...

MySQL分页查询

分页查询: 数据记录条数过多的时候,需要分页来显示。 语法: select 查询字段 from 表名 where ....等等前面学过的所有写法 limit offset(开始记录索引,是从0开始的),size(要取出的条数)&…...

执行“go mod tidy”遇到“misbehavior”错误

执行“go mod tidy”报错下错误,执行“go clean -modcache”和删除“go env GOMODCACHE”指定目录均无效: SECURITY ERROR go.sum database server misbehavior detected!old database:go.sum database tree3397826xyyhzdyAOat5li/EXx/MK1gONQf3LAGqArh…...

【机器学习】——windows下安装anaconda并在vscode上进行配置

一、安装anaconda 1.进入清华的镜像网站,下载自己电脑对应的anaconda版本。网站:https://repo.anaconda.com/archive/ 这里我下载的版本是anaconda3-2024.10-1-Windows-x86-64 2.下载完毕后开始安装anaconda 3.配置anaconda环境变量 在设置中找到编…...

第6章:布局 --[CSS零基础入门]

CSS 布局是网页设计中至关重要的一个方面,它决定了页面上元素的排列和展示方式。以下是几种常见的 CSS 布局方法和技术: 1. 浮动布局(Float Layout) 浮动布局(Float Layout)曾经是网页设计中创建多列布局…...

kubeadm安装K8s集群基础环境配置

kubeadm安装K8s集群基础环境配置 1.首先确保所有机器可以通信,然后配置主机hosts文件;2.关闭所有节点关闭防火墙、selinux、swap;3.将桥接的IPv4流量传递到 iptables;4.安装常用工具包;5.安装时间同步工具ntpdate&…...

计算机毕业设计Python医疗问答系统 医疗可视化 BERT+LSTM+CRF深度学习识别模型 机器学习 深度学习 爬虫 知识图谱 人工智能 大数据毕业设计

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

学在西电录播课使用python下载,通过解析m3u8协议、多线程下载ts视频块以及ffmpeg合并

本文涵盖的内容仅供个人学习使用,如果侵犯学校权利,麻烦联系我删除。 初衷 研究生必修选逃, 期末复习怕漏过重点题目,但是看学在西电的录播回放课一卡一卡的,于是想在空余时间一个个下载下来,然后到时候就…...

攻防世界杂项刷题笔记(引导模式)13-23

引言:14包括提取文件和流量分析,22很新颖!!其他的都是常规隐写 13.base64stego 经过上一次如来十三掌的磨练,这题在看到题干“十三掌”的时候我是丝毫不慌张的。附件给了压缩包,考虑是不是伪加密&#xf…...

基于单片机的智能农田灌溉节水系统设计及应用

摘 要 : 针对传统的灌溉方法浪费水资源节水系统设计。该系统从节水角度出发,对传感器和主电路进行了设计,主要采集灌溉地的湿度与温度数据,根据测量土壤中的温度与湿度作为主要参数,对农田灌溉节水系统进行实时控制&am…...

高校毕业生离校就业数据分析管理平台的设计与实现(Java毕业设计)教务管理、就业统计

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…...

1、SQL语言

分类方式 类别描述 部署方式 嵌入式/单机/双机/集群/分布式/云数据库 业务类型 OLTP数据库/OLAP数据库/流数据库/时序数据库 存储介质 内存数据库/磁盘数据库/SSD数据库/SCM数据库 年代 第一代是单机数据库/第二代是集群数据库/第三代是分布式数据库和云原生数据库/第…...

spark sql 环境安装,java 默认路径和 安装配置!

yum安装java 查看默认路径 update-alternatives --config java # Java 环境变量 export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jreexport PATH$JAVA_HOME/bin:$PATH# Spark 环境变量 export SPARK_HOME/home/vagrant/soft/sparkexport PATH…...

【CMD、PowerShell和Bash设置代理】

【CMD、PowerShell和Bash设置代理】 1. CMD(命令提示符)临时设置代理(只对当前会话有效):查看当前代理设置:清除临时代理设置:永久设置代理(对所有新的 CMD 会话有效)&am…...

分区之间的一种度量方法-覆盖度量(Covering Metric)

分区之间的一种度量方法——覆盖度量(Covering Metric),用于量化一个分区如何被另一个分区覆盖或近似。以下是逐步详细解释: 1. 背景与符号说明 分区的概念: 分区是将一个集合(这里是 { 1 , … , n } \{…...

HarmonyOS(64) wrapBuilder 全局@Builder使用利器

WrapBuilder 全局Builder是什么什么时候使用wrapBuilderBuilder的限制参考资料 全局Builder是什么 局部Builder的定义方法如下: //定义局部Builder Builder MyBuilderFunction() {} //使用方法 this.MyBuilderFunction()全局Builder定义语法如下: //全…...

【计算机毕设】基于Spark猫眼电影票房数据分析预测推荐系统(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅

目录 【计算机毕设】基于Spark猫眼电影票房数据分析预测推荐系统(完整系统源码数据库开发笔记详细部署教程虚拟机分布式启动教程)✅ 一、项目背景 二、研究目的 三、项目意义 四、项目功能 五、项目创新点 六、开发技术介绍 七、算法介绍 八、数…...

问卷调查模板

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>问卷调查</title><style>body {font-fam…...

hadoop单机安装

步骤 1:安装 Java 安装 OpenJDK bash sudo yum install -y java-1.8.0-openjdk 验证 Java 安装 bash java -version 输出类似以下内容表示成功: arduino openjdk version “1.8.0_xxx” 步骤 2:下载 Hadoop 下载 Hadoop 安装包 前往 Hadoop 官方下载页面,获取最新稳…...

Android笔记【15】跳转页面返回信息

一、问题 学习一段代码 val intent Intent(thisSecondActivity, MainActivity::class.java) intent.putExtra("extra_data", data) startActivity(intent) 二、内容 这段代码是在 Android 应用中启动一个新的活动&#xff08;Activity&#xff09;&#xff0c;具…...

MATLAB深度学习(七)——ResNet残差网络

一、ResNet网络 ResNet是深度残差网络的简称。其核心思想就是在&#xff0c;每两个网络层之间加入一个残差连接&#xff0c;缓解深层网络中的梯度消失问题 二、残差结构 在多层神经网络模型里&#xff0c;设想一个包含诺干层自网络&#xff0c;子网络的函数用H(x)来表示&#x…...

推荐几种主流数据仓库:深度剖析与对比

引言 随着数据量的不断增长&#xff0c;数据仓库技术在企业的数据管理和分析中扮演着越来越重要的角色。不同的数据仓库系统在性能、架构、功能和适用场景上各有特点。本文将详细介绍目前市场上几种主流的数据仓库&#xff0c;帮助你更好地了解各个数据仓库的特性&#xff0c;选…...

编译原理——词法分析器的实现

实验目的 深入理解有限自动机及其应用编辑一个词法分析器&#xff0c;了解计算机识别源程序字符串的过程。 实验内容和要求 实验内容&#xff1a;处理c语言源程序&#xff0c;对源程序进行编译预处理&#xff08;去除注释、无用的回车换行找到包含的文件等&#xff09;之后&a…...

【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作

&#x1f4af; 欢迎光临清流君的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落 &#x1f4af; &#x1f525; 个人主页:【清流君】&#x1f525; &#x1f4da; 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 &#x1f4da; &#x1f31f;始终保持好奇心&…...

hive分区分桶、数据倾斜总结

一、hive的基本概念 hive是一个构建在hadoop上的数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表并提供数据查询功能 二、hive的特点 &#xff08;1&#xff09;数据是存储在hdfs上 &#xff08;2&#xff09;底层是将sql转换为MapReduce任务进行计算 …...

MySQL 函数

在 MySQL 中&#xff0c;函数&#xff08;Function&#xff09;是一种用于封装一段逻辑处理的编程结构&#xff0c;可以在 SQL 语句中调用并返回单个值。函数和存储过程类似&#xff0c;都是存储在服务器端的程序单元&#xff0c;但它们的应用场景和使用方式有所不同。函数通常…...

Java 并发舞台:多线程小精灵的奇幻冒险之旅

1.线程池的拒绝策略有哪些&#xff1f; Java中的线程池提供了几种不同的拒绝策略&#xff0c;当线程池无法处理新的任务时&#xff08;比如因为线程池已满并且工作队列也满了&#xff09;&#xff0c;这些策略会决定如何处理新提交的任务。ThreadPoolExecutor类中定义了以下四…...

PostgreSQL 性能优化全方位指南:深度提升数据库效率

PostgreSQL 性能优化全方位指南&#xff1a;深度提升数据库效率 别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 在现代互联网应用中&#xff0c;数据库性能优化是系统优化中至关重要的一环&#xff0c;尤其对于数据密集型和高并发的应用而言&am…...

【Go 基础】并发相关

并发相关 CAS CAS算法&#xff08;Compare And Swap&#xff09;&#xff0c;是原⼦操作的⼀种,&#xff0c;CAS 算法是⼀种有名的⽆锁算法。⽆锁编程&#xff0c;即不使⽤锁的情况下实现多线程之间的变量同步。可⽤于在多线程编程中实现不被打断的数据交换操作&#xff0c;从…...

5G CPE终端功能及性能评测(四)

5G CPE 功能性能评测 本文选取了几款在工业应用领域应用较多的5G CPE,对其功能和性能进行了对比评测。功能方面主要对比了网络接口数量,VPN功能 支持情况。以下测试为空口测试,测试结果受环境影响较大,性能仅供参考。总体看,高通X55芯片下行最优,速率稳定。 功能 对比CPE…...

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)

一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…...

JS进阶DAY3|事件(一)事件监听及事件类型

目录 一、事件监听方式&#xff08;绑定&#xff09; 1.1 DOM0级事件 1.2 DOM2级事件 1.3 区别 二、事件类型 2.1 鼠标事件 2.2 键盘事件 2.3 焦点事件 2.4 表单事件 2.5 加载和卸载事件 2.6 滚动事件 2.7 触摸事件&#xff08;在支持触摸的设备上&#xff09; 一…...

数据结构与算法之美:单链表

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《数据结构与算法之美》、《编程之路》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 目录 …...