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

【系统架构设计师】操作系统 ② ( 存储管理 | 页式存储 | 逻辑地址 与 物理地址 | 页表结构 | 物理内存淘汰机制 )

文章目录

  • 一、页式存储
    • 1、CPU 调用数据
    • 2、内存存储数据弊端
    • 3、分页存储
    • 4、逻辑地址 和 物理地址 的结构
    • 5、逻辑地址 和 物理地址 的结构 示例
    • 6、页式存储 优缺点
  • 二、逻辑地址 与 物理地址
    • 1、逻辑地址
    • 2、物理地址
    • 3、逻辑地址 与 物理地址 区别
    • 4、逻辑地址 与 物理地址 的转换
  • 三、页表结构 和 物理内存淘汰机制
    • 1、页表的结构简介
    • 2、物理内存 的 淘汰机制
    • 3、物理内存 的 淘汰机制 总结
    • 4、案例分析
      • 逻辑地址 转 物理地址 案例计算
      • 物理地址 页面淘汰 案例计算





一、页式存储




1、CPU 调用数据


存储系统 中 , 操作系统 会将 外存 ( 磁盘 ) 中的数据 , 调入 内存 ( 内存条 ) 中 , 内存中的数据 再 给 CPU 调用 , CPU 中有涉及到 三级高速缓存 和 寄存器 的数据传递 ;

如果 CPU 调用的 数据 不在 内存中 , 此时 CPU 会产生 " 缺页中断 " , 从 外存 调数据 到 内存 中 , 内存数据 就绪后 返回到 中断位置 继续执行 ;


2、内存存储数据弊端


如果磁盘中的文件有 50G , 内存只有 16G , 显然 内存 中只能存放 部分 磁盘数据 , 此外 内存 中的 可用空间 也不一定是连续的 ;

  • 内存的 可用空间 不一定够用 ;
  • 内存的 可用空间 的 地址不一定是连续的 ;

外存中的数据 , 要 先将数据进行切割 , 然后 在 内存 中 分散放置 切割后的数据 ;

切割方式 不同 , 内存 中 的 数据 的 存储调用 方式 也是 不同的 , 根据切割方式 , 内存的存储方式分为 :

  • 页式存储
  • 段式存储

3、分页存储


分页存储 , 又称为 页式存储 , 将 用户程序的逻辑地址空间物理内存空间 划分成 相同大小的 块 , 一般是 4KB 或 8KB , 这个区域 称为 " 页 " ;

该 分页 机制 , 避免了 连续分配内存 造成的 碎片问题 , 每个 " 内存页数据 “ 可以 单独映射 到不同的 ” 用户程序 逻辑地址空间 中的 物理页框 " 中 ;

" 用户程序 中的 页 “” 物理内存 中的 页 “ , 需要通过 ” 页表 " 对应起来 , 页面中 最基础的内容如下 :

  • 页号 : 用户程序 中的 页号 , 又称为 " 逻辑页号 " , 用户程序中的地址 称为 逻辑地址 ;
  • 块号 : 物理内存 中的 块号 , 又称为 " 页帧号 " , 物理内存中的地址 称为 物理地址 ;

在这里插入图片描述


4、逻辑地址 和 物理地址 的结构


" 用户程序 " 中 查询 内存中的数据 , 程序 中 已知 数据的 " 逻辑地址 " 由 CPU 生成 , 根据 逻辑地址 查询该地址在 哪个 " 内存页 " , 然后再 到 " 页表 " 中 查询 该内存页 " 页号 " 对应的 " 块号 " , 然后到 内存块 中查询 内存块 对应的 " 物理地址 " ;

  • 逻辑地址 由两部分组成 : 页号 + 页内地址 ;
    • 页号 : 表示 逻辑地址空间中的具体页 ;
    • 页内地址 : 表示页内的具体位置 , 又称为 " 页内偏移 " ;
  • 物理地址 由两部分组成 : 块号 + 页内地址 ;
    • 块号 : 表示 物理地址空间中的具体块 , 又称为 " 页帧号 " 或 " 页框号 " ;
    • 页内地址 : 表示页内的具体位置 , 又称为 " 页内偏移 " ;

逻辑地址 / 物理地址 分为高位 和 低位 , 高位是 页号 或 块号 , 低位是 业内地址 ;
在这里插入图片描述

数据 的 逻辑地址 与 物理地址 , 页内地址 是不变的 , 变化的只是前面的 页号 或 块号 , 逻辑地址 高位是 页号 , 物理地址 高位 是 物理内存 的 块号 ;


5、逻辑地址 和 物理地址 的结构 示例


假设 页大小 为 4KB = 4096 Byte , 也就是 2 12 = 4096 2^{12} = 4096 212=4096 字节 ;

4096 个 存储单元 ( Byte ) 如果使用二进制表示 , 需要 使用 0 ~ 4095 闭区间来表示 ;

4095 对应的二进制数字 就是 0b 1111 1111 1111 , 该二进制数字是 12 个 1 ;

4096 个存储单元的取值范围是 0b 0000 0000 0000 ~ 0b 1111 1111 1111 ;

页内地址 / 页内偏移 必须要 12 位 二进制数 才能 表示 ,

如果 页大小是 8KB , 则需要 13 位 二进制数 才能 作为该页的 页内地址 / 页内偏移 ;

给定 4KB 的页大小 的 逻辑地址 , 低位 12 位是其 页内地址 或 页内偏移 , 高位就是 页号 ;

给定一个逻辑地址 , 计算 物理地址 : 页大小 4 KB , 逻辑地址 为 0b 10 1100 1101 1110 , 参考下面的页表 , 计算出其物理地址 ;
在这里插入图片描述

逻辑地址 是 0b 10 1100 1101 1110 ,

  • 低 12 位是 0b 1100 1101 1110 , 这是 页内地址 / 页内偏移
  • 高 2 位 是 0b 10 , 这是页号 , 对应十进制数为 2 , 参考页表 , 页号为 2 的 内存页 对应 块号 为 6 ;

物理地址 的高位是 0b 110 , 低位是页内地址 0b 1100 1101 1110 , 拼接物理地址为 0b 110 1100 1101 1110 ;


6、页式存储 优缺点


页式存储 优缺点 :

  • 优点 :
    • 利用率高 : 页式存储 页面大小 比较小 , 一般都是 4KB / 8KB 等 , 内存的空间利用率较高 ;
    • 内存碎片小 : 内存页很小 , 因此造成的碎片也很小 ;
    • 分配管理简单 : 通过页表实现 内存管理 , 该结构比较简单 ;
  • 缺点 :
    • 系统开销大 : 内存页小 , 太过于零碎 , 导致 操作系统每次都需要查表 根据 页号 找 块号 , 造成很多系统开销 ;
    • 性能抖动 : 内存调度 时 , 可能产生 性能抖动的现象 , 如 : 由于 系统开销问题 导致 的 分配更多的内存导致系统性能下降的情况 ;

下面的表格中 整理的 页式存储 优缺点 更加全面 :

方面优点缺点
内存利用率减少外部碎片,提高内存利用率可能导致内部碎片
管理复杂度简化内存分配和回收页表和多级页表增加了复杂性
虚拟内存支持虚拟内存,运行比物理内存更大的程序页面置换引入 I/O 开销
内存保护提供内存保护和进程隔离需要额外的硬件和软件支持
多任务并发支持多任务并发运行页表切换可能引入额外开销
硬件支持现代硬件(如 MMU、TLB)提供高效支持TLB 未命中时性能下降
地址分配进程地址空间可以非连续存放地址转换开销大,依赖 TLB 加速
共享机制方便进程共享内存,减少重复存储共享页可能导致数据同步问题




二、逻辑地址 与 物理地址



物理地址 与 逻辑地址 :

  • 物理地址 是 内存的实际地址 ;
  • 逻辑地址 是 应用程序的 逻辑内存地址 , 每个逻辑地址都有与之对应的 内存条中的 物理地址 , 由 CPU 生成 ;

1、逻辑地址


逻辑地址 定义 : 逻辑地址是 由 应用程序 生成的地址 , 也称为 " 虚拟地址 " , 是程序在执行时使用的地址 , 应用程序通过 逻辑地址 来访问数据或指令 , 而 不需要 直接操作物理内存 ;

逻辑地址 来源 : 逻辑地址 是 在 用户应用程序 运行过程中 由 CPU 生成的地址 , 开发者 或 编译器 并不直接关心物理内存的具体位置 , 只关注逻辑地址的空间 ;

逻辑地址 到 物理地址 的 映射 : 操作系统通过 虚拟内存管理机制 将 逻辑地址 映射到 物理地址 , CPU 发出的 逻辑地址 需要通过 页表、段表 等 映射机制 转换成物理地址 ;


2、物理地址


物理地址 定义 : 物理地址 是 计算机 内存 中实际的地址 , 指向系统物理内存中的具体位置 , 所有 实际的 存储操作 最终都会转化为物理地址 ;

物理地址 来源 : 物理地址 对应的是 计算机硬件 层面内存的真实位置 , 通常 由 操作系统 和 内存管理单元 ( MMU , Memory Management Unit ) 来管理 ;

物理地址 被 内存控制器 用来访问实际的内存单元 , 程序虽然使用逻辑地址 , 但内存访问最终都依赖物理地址 ;


3、逻辑地址 与 物理地址 区别


比较项逻辑地址(虚拟地址)物理地址
定义由CPU生成的程序地址,独立于物理内存计算机物理内存中的实际地址
别名虚拟地址(Virtual Address)真实地址(Real Address)
访问方式程序访问的地址,由CPU生成经过地址映射后访问的最终内存地址
地址空间每个进程有自己的逻辑地址空间由计算机硬件决定的物理内存空间
管理方式由操作系统和MMU(内存管理单元)映射到物理地址由内存控制器直接管理
转换方式需要通过页表、段表或MMU转换无需转换,直接用于访问内存
可变性在程序运行时可变化,由操作系统动态管理由硬件固定分配,通常不会改变
示例进程访问地址 0x12345物理内存地址 0xABCD345

4、逻辑地址 与 物理地址 的转换


在 应用程序 中 , 如果要 查询 内存中的数据 , 首先 要找到数据在 用户程序 中的 逻辑地址 , 然后 去 页表中查询 该 逻辑地址 对应的 物理内存 中的 物理地址 ;


逻辑地址 与 物理地址 之间的转换内存管理单元 ( MMU , Memory Management Unit ) 完成 的 , 转换过程如下 :

  • CPU 生成逻辑地址 : 用户应用程序 给出要访问的 逻辑地址 , 并将其传递到 CPU , 逻辑地址 由 页号 和 页内偏移 组成 , 页号 用于查找对应的物理页框 , 页内偏移在页框中保持不变 ;
	逻辑地址 = [页号] + [页内偏移]
  • 查找页表 : CPU 根据 当前进程 的 页表 将 逻辑地址 转换为 物理地址 , 操作系统维护一个 页表 , 用于记录逻辑页号与物理页框号的映射关系 , CPU 取出 逻辑地址 中的 页号 , 然后查找页表 , 找到对应的物理页框号 ;
  • 生成物理地址 : 物理地址由 页框号 加上 页内偏移 组成 , 上个步骤得到了 页框号 , 直接与 页内偏移 组合成 物理地址 ;
	物理地址 = [物理页框号] + [页内偏移]
  • 访问物理内存 :
    • 如果所需的 内存页 在 内存中 , 则直接访问该 物理地址即可 ;
    • 如果所需的 内存页 不在 内存中 , 操作系统会触发一个 缺页中断 ( Page Fault ) , 并将该页面从磁盘加载到内存中 , 最终得到的 物理地址 指向实际的内存位置 ;




三、页表结构 和 物理内存淘汰机制




1、页表的结构简介


页表 ( Page Table ) 页式存储 管理中的关键数据结构 , 用于管理 逻辑地址 到 物理地址 的映射 ;

每个 进程 都有自己的页表 , 页表 存储在内存中 , MMU ( Memory Management Unit , 内存管理单元 ) 负责 查询 和 转换 地址 ;

页表 结构 字段如下 :

  • 页号 ( Page Number ) : 逻辑地址 中的 索引 , 用于 查找页表项 ;
  • 页帧号 ( Page Frame Number, PFN ) : 物理内存中的 页框号 , 指向数据所在的物理页 ;
  • 状态位 ( Valid/Invalid Bit ) : 指示该页是否有效(有效页 = 1,不在内存 = 0), 记录该 内存页 是否 从 磁盘 ( 外存 ) 中 加载到了 内存 中 ;
    • 如果为 0 , 表示 内存页面 没有在内存中 ;
    • 如果为 1 , 表示 内存页面 在内存中 ;
  • 访问位 ( Accessed Bit ) : 记录该页 最近 是否被访问过 , 操作系统可用它进行页面置换 ;
    • 如果为 1 , 表示 内存页面 最近有被访问过 ;
    • 如果为 0 , 表示 内存页面 最近没有被访问过 ;
    • 时间限制 : 如果 之前有被访问过 , 值为 1 , 但是经过一段时间内没有被访问 , 则会被 置为 0 ;
  • 修改位 ( Dirty Bit ) : 记录该页是否被修改过 ( 1 = 已修改,需要写回磁盘 ) ;
    • 如果为 1 , 表示 内存页面 最近有被修改过 ;
    • 如果为 0 , 表示 内存页面 最近没有被修改过 ;

页表是逻辑地址到物理地址转换的核心 , 利用状态位、访问位、修改位进行内存管理和页面置换 ;

在现代计算机中 , 通常采用 多级页表 或 反向页表 优化存储和访问性能 ;


2、物理内存 的 淘汰机制


下图中 , 操作系统 只为该 进程 分配了 4 个 物理内存页 ;

在这里插入图片描述

对 上述表格 的 状态位 进行分析 :

系统为该 进程 的 1 / 1 / 2 / 5 页号 逻辑内存页 , 分配了 2 / 3 / 5 / 6 页帧号 对应的 物理内存页 ,

3 / 4 页号 的 逻辑内存页 对应的 物理内存页 对应的数据 没有被加载到 物理内存中 , 这部分数据 在 外存 ( 磁盘 ) 中 ;


要访问的 数据 没有加载到 物理内存 的情况 :

如果 想要访问 3 号页 逻辑内存 中的数据 , 但是其 对应的 数据不在 物理内存 中 ,

想要将 3 号页 对应的数据 从 磁盘 加载到 内存 中 , 需要淘汰掉当前的一个 物理内存 页 , 然后再加载对应的 磁盘数据 ;

淘汰 物理内存 页 是有一定的规则标准的 ;


已分配 的 物理内存页 的淘汰原则 :

要淘汰的 是 状态位 为 1 的 物理内存页 , 状态位 为 0 说明没有为 该逻辑内存 分配 ,

之后 根据 访问位 和 修改位 来决定要淘汰哪个 物理内存页 ;

优先淘汰 访问位 为 0 的物理页 ;

如果有多个 物理页 访问位 为 0 , 则继续看 修改位 , 优先淘汰 修改位 为 0 的物理页 ;


3、物理内存 的 淘汰机制 总结


物理页面 淘汰原则总结 :

  • 状态位为 1 : 这是 前提条件 ;
  • 访问位为 0 : 访问位 为 0 的 页面 优先淘汰 ;
  • 修改位为 0 : 如果出现多个 访问位 为 0 的页面 , 考虑 优先淘汰 修改位 为 0 的页面 ;
    • 因为 修改位 为 1 , 系统开销更大 , 将内存数据进行修改 , 会消耗更多的 资源和性能 , 消耗了这么多修改数据 , 将其直接淘汰 不划算 ;

4、案例分析


某个 用户进程 有 8 个 逻辑页面 , 页号为 0 ~ 7 , 每个 内存页大小为 4KB ;

操作系统 为 该 用户进程 分配了 4 个 物理内存 存储块 , 进程的 当前 页表 数据如下 :

在这里插入图片描述


逻辑地址 转 物理地址 案例计算


计算进程的 逻辑地址 0x 5148 对应的物理地址 :

页大小为 4KB = 4096 Byte , 也就是 2 12 = 4096 2^{12} = 4096 212=4096 字节 , 4096 个存储单元的取值范围是 0b 0000 0000 0000 ~ 0b 1111 1111 1111 ;

页内地址 / 页内偏移 必须要 12 位 二进制数 才能 表示 ,

给定 4KB 的页大小 的 逻辑地址 , 低位 12 位是其 页内地址 或 页内偏移 , 高位就是 页号 ;


0x 5148 对应的二进制数为 0b 0101 0001 0100 1000 ,

  • 低 12 位 为 0b 0001 0100 1000 , 这是 页内偏移 ;
  • 高 4 位 为 0b 0101 , 这是 页号 , 对应十进制为 5 , 逻辑页号为 5 ;

查询 页表 , 逻辑页号 5 对应的 物理页帧号为 3 , 对应二进制为 0b 0011 页帧号 , 与 低 12 位 的 页内偏移 0b 0001 0100 1000 组合 ,

得到的 物理地址 为 0b 0011 0001 0100 1000 , 转为 16 进制为 0x 3148 ;


物理地址 页面淘汰 案例计算


计算 如果要访问 逻辑页面 6 , 需要淘汰的页面 :

从 状态位 为 1 的 内存页 中查找 要淘汰的页面 , 逻辑页号 1 / 2 / 5 / 7 对应的页面是已经分配 物理内存 的页面 ;

在这里插入图片描述

上述 四个页面中 , 逻辑页 2 的 访问位 为 0 , 说明最近没有访问 , 淘汰掉 逻辑页 2 ;

在这里插入图片描述

相关文章:

【系统架构设计师】操作系统 ② ( 存储管理 | 页式存储 | 逻辑地址 与 物理地址 | 页表结构 | 物理内存淘汰机制 )

文章目录 一、页式存储1、CPU 调用数据2、内存存储数据弊端3、分页存储4、逻辑地址 和 物理地址 的结构5、逻辑地址 和 物理地址 的结构 示例6、页式存储 优缺点 二、逻辑地址 与 物理地址1、逻辑地址2、物理地址3、逻辑地址 与 物理地址 区别4、逻辑地址 与 物理地址 的转换 三…...

STM32自学记录(八)

STM32自学记录 文章目录 STM32自学记录前言一、ADC杂记二、实验1.学习视频2.复现代码 总结 前言 ADC 一、ADC杂记 ADC其实就是一个电压表,把引脚的电压值测出来,放在一个变量里。 ADC:模拟——数字转换器。 ADC可以将引脚上连续变化的模拟电…...

Vim 多窗口编辑及文件对比

水平分割 :split 默认使用水平分割的方式。 :split :sp 垂直分割 :vsplit :vs 带文件的分割 :split 文件名 :sp 文件名 在光标所在的窗口,输入分割窗口命令就会对那个窗口进行分割。 切换窗口 Ctrlw 切换正在编辑的窗口 快速分割窗口 Ctrlwn 快速分割当前…...

基于深度学习的人工智能量化衰老模型构建与全流程应用研究

一、引言 1.1 研究背景与意义 1.1.1 人口老龄化现状与挑战 人口老龄化是当今全球面临的重要社会趋势之一,其发展态势迅猛且影响深远。根据联合国的相关数据,1980 年,全球 65 岁及以上人口数量仅为 2.6 亿,到 2021 年,这一数字已翻番,达到 7.61 亿,而预计到 2050 年,…...

第八届大数据与应用统计国际学术研讨会(ISBDAS 2025)

重要信息 官网:www.is-bdas.org 时间:2025年2月28-3月2日 地点:中国 广州 主办单位:广东省高等教育学会人工智能与高等教育研究分会 协办单位:北京师范大学人工智能与未来网络研究院、人工智能与大数据科研基地 …...

链表专题-03

链表专题(三) 两数相加 问题 [力扣2] 2. 两数相加 - 力扣(LeetCode) 问题描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加&#xff…...

Ollama下载安装教程

一、去官网下载Ollama 点击前往Ollama官网 进去后点击下载 根据不同的系统去选择 由于服务器在国外可能下载界面进不去或者下载非常慢,可以去网盘获取 点击下方蓝色字体直达 点击前往夸克网盘下载 点击前往百度网盘下载 下载好后双击应用程序安装即可 点击ins…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(6)

7.3. 查询计划相关操作符 48)Key Lookup:该操作符对一个有簇索引的表进行书签查找。参数列包含簇索引的名字和用于查找簇索引中数据行的簇键。该操作符总是伴随一个Nested Loops操作符。如果其参数列中出现WITH PREFETCH子句,则查询处理器已决定使用异步预取(预读,read-ah…...

IDEA查看项目依赖包及其版本

一.IDEA将现有项目转换为Maven项目 在IntelliJ IDEA中,将现有项目转换为Maven项目是一个常见的需求,可以通过几种不同的方法来实现。Maven是一个强大的构建工具,它可以帮助自动化项目的构建过程,管理依赖关系,以及其他许多方面。 添加Maven支持 如果你的项目还没有pom.xm…...

网络分析工具—WireShark的安装及使用

Wireshark 是一个广泛使用的网络协议分析工具,常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议,能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析: …...

【LeetCode 刷题】贪心算法(2)-进阶

此博客为《代码随想录》贪心算法章节的学习笔记,主要内容为贪心算法进阶的相关题目解析。 文章目录 135. 分发糖果406. 根据身高重建队列134. 加油站968. 监控二叉树 135. 分发糖果 题目链接 class Solution:def candy(self, ratings: List[int]) -> int:n l…...

网络工程师 (25)OSI模型—服务访问点

前言 OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个旨在使各种计算机在世界范围内互连为网络的标准框架。 一、定义 服务访问点&a…...

如何在RTACAR中配置IP多播(IP Multicast)

一、什么是IP多播 IP多播(IP Multicast)是一种允许数据包从单一源地址发送到多个目标地址的技术,是一种高效的数据传输方式。 多播地址是专门用于多播通信的IP地址,范围从 224.0.0.0到239.255.255.255 与单播IP地址不同&#x…...

使用docker搭建FastDFS文件服务

1.拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/fastdfs:latest2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用) docker run -dti --networkhost --name tracker -v /data/fdfs/tracker:/var/fdfs -…...

VC播放mp3的方法

1、使用msi库 #include <mmsystem.h> #pragma comment(lib,"winmm.lib") .......//打开文件MCI_OPEN_PARMS mciOpen; mciOpen.lpstrDeviceType _T("mpegvideo"); mciOpen.lpstrElementName _T("c://1.mp3"); MCIERROR mciError mci…...

【读书笔记·VLSI电路设计方法解密】问题46:什么是bug覆盖率

在IC设计项目的验证过程中&#xff0c;功能测试&#xff08;通过使用测试平台&#xff09;有助于定位设计错误或漏洞。这个验证过程有三个阶段&#xff1a;构建和启动测试平台、验证基本测试用例以及验证边界情况。 在前两个阶段&#xff0c;漏洞很容易被检测到&#xff0c;因…...

sqli-lab靶场学习(五)——Less15-17(post方法盲注、修改密码)

前言 第11-14关开始用post方法&#xff0c;15-17关会用到盲注&#xff0c;post方法盲注和get方法类似。 Less15 这关是单引号闭合&#xff0c;有报错但没有具体情况的回显&#xff0c;因此适合使用错误盲注。 在用户名密码框分别输入 账号&#xff1a;admin and 11 -- asd…...

1、http介绍

一、HTTP 和 HTTPS 简介 HTTP&#xff08;HyperText Transfer Protocol&#xff09; 用途&#xff1a;用于网页数据传输&#xff08;不加密&#xff09;。协议特性&#xff1a;以明文形式传输数据&#xff0c;默认端口 80&#xff0c;无身份验证和完整性保护。典型场景&#xf…...

Vim跳转文件及文件行结束符EOL

跳转文件 gf 从当前窗口打开那个文件的内容&#xff0c;操作方式&#xff1a;让光标停在文件名上&#xff0c;输入gf。 Ctrlo 从打开的文件返回之前的窗口 Ctrlwf 可以在分割的窗口打开跳转的文件&#xff0c;不过在我的实验不是次次都成功。 统一行尾格式 文本文件里存放的…...

LLM:DeepSeek 系列(二)

原文链接 3、DeepSeek-V2 DeepSeek-V2 发布于 2024 年 5 月&#xff0c;为多领域专家&#xff08;MoE&#xff09;语言模型&#xff0c;包含总共 2360 亿个参数&#xff0c;其中每个词元激活 210 亿个参数&#xff0c;并支持 12.8 万个词元的上下文长度。DeepSeek-V2 采用包括…...

订单超时设计(1)--- 如何使用redis实现订单超时实时关闭功能

如何使用redis实现订单超时实时关闭功能 准备工作实现步骤解释注意事项&#xff08;重点&#xff09; 使用Redis实现订单超时实时关闭功能&#xff0c;可以利用Redis的延时队列&#xff08;使用Sorted Set实现&#xff09;和过期键&#xff08;使用TTL和Keyspace Notifications…...

【0401】Postgres内核 CREATE DATABASE database-name 源码实现 ①

文章目录 1. CREATE DATABASE 语句1.1 CREATE DATABASE 语法1.2 CREATE DATABASE 调用栈2. CREATE DATABASE 内核实现2.1 从 CreatedbStmt 节点树 提取 options2.2 获取 datdba(proposed owner) OID2.3 当前用户具有 create DB 权限?2.4 获取 database template1. CREATE DA…...

Termux安装ssh实现电脑ssh

Termux下载 点击下载 在 Termux 中安装并使用 SSH&#xff0c;按照以下步骤操作&#xff1a; 1. 更新软件包列表 pkg update && pkg upgrade2. 安装 OpenSSH pkg install openssh3. 设置 SSH 密码&#xff08;必须&#xff0c;否则无法使用 SSH 服务器&#xff09…...

nexus部署及配置https访问

1. 使用docker-compose部署nexus docker-compose-nexus.yml version: "3" services:nexus:container_name: my-nexusimage: sonatype/nexus3:3.67.1hostname: my-nexusnetwork_mode: hostports:- 8081:8081deploy:resources:limits:cpus: 4memory: 8192Mreservations…...

【MySQL】表操作

表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…...

浅析Ruby类污染及其在Sinatra框架下的利用

和JavaScript中的原型链污染类似&#xff0c;Ruby中也存在类似的概念——类污染&#xff0c;两者都是对象进行不安全的递归合并导致的。 网上也没有相关的分析文章&#xff0c;只有下面这篇文章应该是第一次谈到这个问题 Class Pollution in Ruby: A Deep Dive into Exploiti…...

iPhone 在华销量大幅下挫

iPhone在乔布斯时代缔造的神话在中国正逐渐走向没落&#xff0c;挤牙膏式的升级方式类似于诺基亚的N70系列&#xff0c;毫无新意的创新能力&#xff0c;求稳着陆的经营理念&#xff0c;工艺和美学不再独领风骚&#xff0c;甚至拍照领域和AI增强计算&#xff0c;折叠屏等技术领域…...

Fedora 的 2025 年展望:AI 集成与 HDR 支持打造强大 Linux 桌面体验

Fedora 项目已经从节庆活动中恢复&#xff0c;准备在未来几个月推出一系列关键计划。Red Hat 软件工程总监 Christian Schaller 在他的博客文章中分享了 2025 年 Fedora 发行版的重点发展方向和优先事项&#xff0c;涵盖了人工智能集成、Wayland、HDR 协议、PipeWire 等多个领域…...

mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别

一 事务简介&#xff0c; 数据库准备&#xff1a; create table account(id int auto_increment primary key comment 主键ID,name varchar(128) not null comment 姓名,backaccountnumber char(18) unique comment 银行账号,money float comment 余额 )comment 银行账号表;…...

C# Winform怎么设计串口,客户端和相机控件界面显示

首先我们必须把这个类创建好 INIAPI using System; using System.Text; using System.Runtime.InteropServices;namespace Ini {public class IniAPI{#region INI文件操作/** 针对INI文件的API操作方法&#xff0c;其中的节点&#xff08;Section)、键&#xff08;KEY&#x…...

【场景题】架构优化 - 解耦Redis缓存与业务逻辑

1. 需求分析 某公司需要将原有的Redis缓存抽离出来&#xff0c;并且还要要实现&#xff1a; 可配置热拔插高可用高通用 请问你会如何实现&#xff1f; 2. 思路 话不多说直接上思路&#xff1a; 自定义缓存注解&#xff0c;当容器扫描到该注解自动调用AOP想应的增强方法为…...

WGCLOUD监控系统部署教程

官网地址&#xff1a;下载WGCLOUD安装包 - WGCLOUD官网 第一步、环境配置 #安装jdk 1、安装 EPEL 仓库&#xff1a; sudo yum install -y epel-release 2、安装 OpenJDK 11&#xff1a; sudo yum install java-11-openjdk-devel 3、如果成功&#xff0c;你可以通过运行 java …...

linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}

linux——网络&#xff08;服务器的永久不挂——守护进程&#xff09;-CSDN博客 目录 一、序列化与反序列化 1. 推荐 JSON 库 2. 使用 nlohmann/json 示例 安装方法 基础用法 输出结果 3. 常见操作 4. 其他库对比 5. 选择建议 二、ifdef宏的用法 基本语法 核心用途…...

Android 开发APP中参数配置与读取总结

以使用MQTT配置的参数 MQTT_BROKER_UR 、MQTT_USER_NAME、 MQTT_PASSWORD为例&#xff0c;说明配置设置和读取应用 项目中使用系统参数&#xff08;如环境变量和gradle.properties文件中的属性&#xff09;在Gradle构建脚本中&#xff0c;以下是一个详细的操作文档资料&…...

Web应用国际化(i18n)实现详解 python

Web应用国际化&#xff08;i18n&#xff09;实现详解 1. 设计理念 本项目的国际化&#xff08;Internationalization&#xff09;解决方案基于Python的gettext模块&#xff0c;提供了一个灵活、可扩展的多语言支持系统。 2. 语言支持 2.1 支持的语言列表 项目支持超过35种…...

mysql mvcc 锁 关系

多版本并发控制&#xff08;MVCC&#xff09;是一种用于数据库并发控制的机制&#xff0c;它可以在保证数据一致性的同时&#xff0c;提高数据库的并发性能。下面结合 MVCC 机制&#xff0c;详细阐述常见的四种事务隔离级别&#xff08;读未提交、读已提交、可重复读、串行化&a…...

【银河麒麟高级服务器操作系统】系统日志Call trace现象分析及处理全流程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://document.kylinos.cn 服务器环境以及配置 系统环境 物理机/虚拟机/云…...

新能源产业的质量革命:六西格玛培训如何重塑制造竞争力

在新能源行业狂飙突进的今天&#xff0c;企业若想在全球供应链中占据高地&#xff0c;仅靠技术突破已远远不够。制造效率的毫厘之差&#xff0c;可能成为市场话语权的千里之距。某光伏巨头曾因电池片良率低于行业均值1.5%&#xff0c;导致年损失超2.3亿元——这恰恰印证了六西格…...

【ArcGIS】R语言空间分析、模拟预测与可视化技术

R语言在空间数据挖掘中具有广泛的应用&#xff0c;以下是一些关键内容和常用包的介绍&#xff1a; R语言空间数据挖掘的关键技术 空间数据类型 矢量数据&#xff1a;包括点&#xff08;Point&#xff09;、线&#xff08;Line&#xff09;、面&#xff08;Polygon&#xff09;等…...

单例模式几种实现

静态内部类holder实现&#xff08;推荐&#xff09; public class UniqueIdGenerator {public static final UniqueIdGenerator INSTANCE Holder.INSTANCE;// Private holder class for lazy initializationprivate static class Holder {static final UniqueIdGenerator INS…...

什么是Prompt工程?

什么是提示工程&#xff1f; Prompt一词&#xff0c;在英语中主要用作动词、形容词、名词和副词&#xff0c;主要意思包括“促使&#xff0c;导致&#xff1b;鼓励&#xff0c;提示&#xff1b;迅速的&#xff0c;立刻的&#xff1b;准时地”等。 在人工智能的语境下&#xf…...

C++,设计模式,【单例模式】

文章目录 一、模式定义与核心价值二、模式结构解析三、关键实现技术演进1. 基础版(非线程安全)2. 线程安全版(双重检查锁)3. 现代C++实现(C++11起)四、实战案例:全局日志管理器五、模式优缺点深度分析✅ 核心优势⚠️ 潜在缺陷六、典型应用场景七、高级实现技巧1. 模板化…...

详解SQLAlchemy的函数relationship

在 SQLAlchemy 中&#xff0c;relationship 是一个非常重要的函数&#xff0c;用于定义模型之间的关系。它用于在 ORM 层面上表示数据库表之间的关联关系&#xff08;如 1 对 1、1 对多和多对多&#xff09;。relationship 的主要作用是提供一个高级接口&#xff0c;用于在模型…...

vue 的 watch 和 computed 有什么区别?

在 Vue.js 中,watch 和 computed 都是用于响应式数据处理的功能,但它们有不同的用途和实现方式。以下是二者的主要区别: 1. 用途 computed 计算属性:用于基于已有数据计算出新的值。它们是基于依赖的数据变化而自动重新计算的,通常用于模板中显示的派生状态。缓存:计算…...

WPS如何接入DeepSeek(通过第三方工具)

WPS如何接入DeepSeek 一、下载并安装OfficeAI插件二、配置OfficeAI插件三、使用DeepSeek功能 本文介绍如何通过 WPS 的第三方工具调用 DeepSeek 大模型&#xff0c;实现自动化文本扩写、校对和翻译等功能。 一、下载并安装OfficeAI插件 1、访问OfficeAI插件下载地址&#xff…...

学习 PostgreSQL 流复制

PostgreSQL 流复制 PostgreSQL数据库异常中止后&#xff0c;数据库刚重启时&#xff0c;会重放停机前最后一个checkpoint点之后的 WAL日志&#xff0c;在把数据库恢复到停机的状态后&#xff0c;自动进入正常的状态&#xff0c;可以接收其他用户的查询和修改。 想象另一个场景…...

零基础学习书生.浦语大模型--基础岛

第二关:玩转书生[多模态对话]和[AI搜索]产品 任务一&#xff1a;使用MindSearch 任务二&#xff1a;尝试使用书生.浦语 尝试让其写一段Self-Attention网络模块代码 import torch import torch.nn as nn import torch.nn.functional as Fclass SelfAttention(nn.Module):def _…...

MySQL中DDL操作是否支持事务

MySQL中DDL不支持事务。 传统MySQL&#xff08;5.7及以前版本&#xff09;&#xff1a; DDL操作不支持事务执行DDL操作时会隐式提交当前会话的事务无法回滚DDL操作 MySQL 8.0版本&#xff1a; 引入了原子DDL特性&#xff08;Atomic DDL&#xff09;DDL操作变为原子性的&…...

QQ自动发送消息

QQ自动发送消息 python包导入 import time import pandas as pd import pyautogui import pyperclip图像识别函数封装 本程序使用pyautogui模块控制鼠标和键盘来实现QQ自动发送消息&#xff0c;因此必须得到需要点击位置的坐标&#xff08;当然也可以在程序中将位置写死&…...

css:怎么设置图片不变形

问&#xff1a; main元素中有一个img元素&#xff0c;这个img src‘/assets/images/tupian.png’css设置了img元素width&#xff1a;50% height:50%但是图片变形了&#xff0c;我应该怎么设置保持图片样式不变形 回答&#xff1a; 为了确保图片在调整大小时不变形&#xff0…...