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

文章目录

  • 一、页式存储
    • 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 ;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AMD数据中心业务创纪录,Instinct MI355X提前发布

没有人能预料到生成式人工智能(GenAI)会如此迅速地推动英伟达的扩张,也没有人能预料到英伟达的崛起和英特尔的衰落会如此之快。对于那些相信“第二名可以更努力并取得成功”的人来说,AMD的崛起无疑证明了这一点。然而,…

C++ 中的 `string` 类型:全面解析与高效操作

C 中的 string 类型:全面解析与高效操作 在 C 中,string 类型是对字符数组的高级封装,它提供了大量内置函数,使得字符串的处理变得更为简便和高效。与 C 风格的字符数组不同,string 类型不仅自动管理内存,…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>黄金矿工

目录 决策树&#xff1a;代码设计代码&#xff1a; 决策树&#xff1a; 代码设计 代码&#xff1a; class Solution {boolean[][] vis;int ret,m,n;public int getMaximumGold(int[][] grid) {m grid.length;n grid[0].length;vis new boolean[m][n]; for(int i 0; i <…

DeepSeek 的含金量还在上升

大家好啊&#xff0c;我是董董灿。 最近 DeepSeek 越来越火了。 网上有很多针对 DeepSeek 的推理测评&#xff0c;除此之外&#xff0c;也有很多人从技术的角度来探讨 DeepSeek 带给行业的影响。 比如今天就看到了一篇文章&#xff0c;探讨 DeepSeek 在使用 GPU 进行模型训练…

使用SpringBoot发送邮件|解决了部署时连接超时的bug|网易163|2025

使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附&#xff1a;Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…

两种文件类型(pdf/图片)打印A4半张纸方法

环境:windows10、Adobe Reader XI v11.0.23 Pdf: 1.把内容由横排变为纵排&#xff1a; 2.点击打印按钮&#xff1a; 3.选择打印页范围和多页&#xff1a; 4.内容打印在纸张上部 图片&#xff1a; 1.右键图片点击打印&#xff1a; 2.选择打印类型&#xff1a; 3.打印配置&am…

C语言打印输出星号图形(三角形、菱形、漏斗)

文章目录 1. 介绍2. 案例分析3. 漏斗型4. 直角三角形4.1 左上直角三角形4.2 右上直角三角形4.3 左下直角三角形4.4 右下直角三角形 5. 等腰三角形5.1 正等腰三角形5.2 倒等腰三角形 6. 平行四边形6.1 纵向左下平行四边形6.2 纵向左上平行四边形6.3 横向左上平行四边形6.4 横向左…

刷题记录 动态规划-7: 63. 不同路径 II

题目&#xff1a;63. 不同路径 II 难度&#xff1a;中等 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。…

springboot+vue+uniapp的校园二手交易小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

Python 自学秘籍:开启编程之旅,人生苦短,我用python。

从2009年&#xff0c;用了几次python后就放弃了&#xff0c;一直用的php&#xff0c;现在人工智能时代&#xff0c;完全没php什么事情。必须搞python了&#xff0c;虽然已经40多岁了。死磕python了。让滔滔陪着你一起学python 吧。 开启新世界 在当今人工智能化的时代&#xff…

react的antd表格自定义图标

将原版的加号换成箭头 自定义图标 安装图标包&#xff1a; npm install --save ant-design/icons 引入&#xff1a; import { RightOutlined, DownOutlined } from ant-design/icons; 参数是一个函数 <Table columns{columns} dataSource{data} indentSize{20}expandIc…

chrome浏览器chromedriver下载

chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新&#xff0c;可以去下载最新的chromedriver使用&#xff0c;自动化中使用新的chromedr…

Vim的基础命令

移动光标 H(左) J(上) K(下) L(右) $ 表示移动到光标所在行的行尾&#xff0c; ^ 表示移动到光标所在行的行首的第一个非空白字符。 0 表示移动到光标所在行的行首。 W 光标向前跳转一个单词 w光标向前跳转一个单词 B光标向后跳转一个单词 b光标向后跳转一个单词 G 移动光标到…

算法与数据结构(括号匹配问题)

思路 从题干可以看出&#xff0c;只要给出的括号对应关系正确&#xff0c;那么就可以返回true,否则返回false。这个题可以使用栈来解决 解题过程 首先从第一个字符开始遍历&#xff0c;如果是括号的左边&#xff08;‘&#xff08;‘&#xff0c;’[‘&#xff0c;’}‘&…

deepseek、qwen等多种模型本地化部署

想要在本地部署deepseek、qwen等模型其实很简单,快跟着小编一起部署吧 1 环境搭建 1.1下载安装环境 首先我们需要搭建一个环境ollama,下载地址如下 :Ollama 点击Download 根据自己电脑的系统选择对应版本下载即可 1.2 安装环境(window为例) 可以直接点击安装包进行安…

(2025,LLM,下一 token 预测,扩散微调,L2D,推理增强,可扩展计算)从大语言模型到扩散微调

Large Language Models to Diffusion Finetuning 目录 1. 概述 2. 研究背景 3. 方法 3.1 用于 LM 微调的高斯扩散 3.2 架构 4. 主要实验结果 5. 结论 1. 概述 本文提出了一种新的微调方法——LM to Diffusion (L2D)&#xff0c;旨在赋予预训练的大语言模型&#xff08;…

一款wordpress AI免费插件自动内容生成+前端AI交互+文章批量采集

一款wordpressAI自动内容生成前端AI会话窗口交互文章批量采集免费插件 1. SEO优化文章生成 关键词驱动的内容生成&#xff1a;用户可以输入关键词或长尾关键词&#xff0c;插件会根据这些关键词生成高质量的SEO优化文章。文章结构清晰&#xff0c;语言自然流畅&#xff0c;符合…

2024年12月 Scratch 图形化(一级)真题解析 中国电子学会全国青少年软件编程等级考试

202412 Scratch 图形化&#xff08;一级&#xff09;真题解析 中国电子学会全国青少年软件编程等级考试 一、单选题(共25题&#xff0c;共50分) 第 1 题 点击下列哪个按钮&#xff0c;可以将红框处的程序放大&#xff1f;&#xff08; &#xff09; A. B. C. D. 标…

Java面试题集合篇5:10道基础面试题——保姆级详细图文、代码解释

文章目录 前言41、多线程场景下使用 ArrayList42、List 和 Set 区别43、HashSet 实现原理44、HashSet检查重复和保证数据不可重复45、BlockingQueue46、Map接口46.1、HashMap 实现原理46.2、HashMap在JDK1.7和JDK1.8中不同点46.3、JDK1.7 VS JDK1.8 比较 47、HashMap的put方法流…

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题2)-网络部分解析-附详细代码

目录 附录1:拓扑图​编辑 附录2:地址规划表 1.SW1 2.SW2 3.SW3 4.SW4 5.SW5 6.SW6 7.SW7 8.R1 9.R2 10.R3 11.AC1 12.AC2 13.EG1 14.EG2 15.AP2 16.AP3 附录1:拓扑图 附录2:地址规划表