news 2026/2/26 2:54:22

Java技术八股学习Day25

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java技术八股学习Day25

操作系统(二)

内存管理

(1)内存管理核心职责

内存管理是操作系统的核心功能,主要负责内存分配与回收(通过 malloc 申请、free 释放)、地址转换(虚拟地址转物理地址)、内存扩充(借助虚拟内存逻辑扩容)、内存映射(文件直接映射到进程空间)、内存优化(调整分配与回收策略)、内存安全(隔离进程内存访问),确保内存资源高效、安全使用。

(2)内存碎片
  • 内部碎片:分配给进程的内存大于实际需求,未使用的部分(如分配 128 字节给仅需 65 字节的进程,剩余 63 字节),常见于固定大小分配机制。
  • 外部碎片:未分配的连续内存过小,无法满足任何进程的内存需求,常见于分段机制,会降低内存利用率。
(3)内存管理方式
① 连续内存管理

为进程分配连续的内存空间,代表算法为伙伴系统(Linux 采用),将内存按 2 的幂次划分,分配时切分合适大小的块,释放时合并相邻块,可解决外部碎片,但存在内部碎片(分配大小需为 2 的幂次)。

② 非连续内存管理

允许进程内存离散分布,灵活性更高,分为三种方式:

  • 段式管理:按逻辑意义(如代码段、数据段)划分大小不等的段,通过段表映射虚拟地址与物理地址,易产生外部碎片。
  • 页式管理:将物理内存和虚拟地址空间划分为等长的页(如 4KB),通过页表映射,无外部碎片,仅可能有少量内部碎片,是现代操作系统主流方式。
  • 段页式管理:结合段式与页式,先分段再分页,兼顾逻辑划分与内存利用率,但地址转换流程更复杂。

虚拟内存

(1)定义与核心作用

虚拟内存是逻辑存在的内存空间,并非真实物理内存,核心作用包括:隔离进程(进程拥有独立虚拟地址空间,互不干扰)、提升物理内存利用率(仅加载进程当前所需数据)、简化内存管理(程序员无需直接操作物理内存)、支持内存共享(动态库仅加载一份)、提高安全性(控制物理内存访问权限)、提供超大可用内存(物理内存不足时借用磁盘空间)。

(2)关键概念
  • 虚拟地址:程序中使用的地址(如指针值),需转换为物理地址才能访问内存。
  • 物理地址:物理内存的真实地址,存储在内存地址寄存器中。
  • 地址转换:通过 CPU 中的 MMU(内存管理单元)将虚拟地址转为物理地址,核心机制为分段、分页、段页式。
  • 虚拟地址空间:单个进程独占的虚拟地址集合;物理地址空间:物理内存的地址范围。
(3)地址转换机制
① 分段机制

虚拟地址由 “段号 + 段内偏移” 组成,通过段表映射段的物理起始地址,起始地址 + 段内偏移即为物理地址。段表存储段长、段类型等信息,易产生外部碎片。

② 分页机制

虚拟地址由 “页号 + 页内偏移” 组成,通过页表映射物理页号,物理页起始地址 + 页内偏移即为物理地址。为解决单级页表占用空间大的问题,引入多级页表(32 位系统二级、64 位系统四级),按需加载页表项,节省空间(时间换空间)。

③ TLB(转址旁路缓存)

为提高地址转换速度,MMU 内置高速缓存,存储虚拟页号与物理页号的映射关系。查询时优先访问 TLB,命中则直接获取物理页号,未命中则查询页表并更新 TLB,减少主存访问次数。

(4)换页机制与页缺失
  • 换页机制:物理内存不足时,将部分物理页数据写入磁盘,需用时再读回物理内存,实现内存扩容,本质是时间换空间。
  • 页缺失:程序访问的虚拟页未加载到物理内存或未建立映射,分为硬性页缺失(物理内存无对应页,需从磁盘读取)、软性页缺失(物理内存有页但未映射,建立映射即可)、无效页缺失(访问无效物理内存,触发错误)。
(5)页面置换算法

当物理内存无空闲页时,选择淘汰页的规则,核心目标是减少页缺失次数:

  • OPT(最佳置换):淘汰未来最长时间不使用的页,理论最优但无法实现(无法预知未来访问)。
  • FIFO(先进先出):淘汰最先进入内存的页,简单易实现,但存在 Belady 现象(内存页数增加但缺页率上升),性能较差。
  • LRU(最近最久未使用):淘汰最近最久未访问的页,接近 OPT 性能,实际应用广泛(如 InnoDB 改进版 LRU)。
  • LFU(最少使用):淘汰一段时间内访问次数最少的页,与 LRU 类似但侧重访问频率。
  • Clock(时钟算法):淘汰最近未使用的页,是 LRU 的简化版,实现高效。

局部性原理

程序执行时的内存访问特性,是虚拟内存、缓存等技术的基础:

  • 时间局部性:同一数据或指令在一段时间内被反复访问(如循环代码)。
  • 空间局部性:访问某数据时,其相邻数据也大概率被访问(如数组遍历)。
  • 应用:分页机制中通过缓存(TLB、页缓存)利用时间局部性,通过预取技术利用空间局部性,提升内存访问效率。

文件系统

(1)文件系统核心职责

负责管理存储设备上的文件与目录,核心功能包括存储管理(文件数据存储与空间分配)、文件管理(创建、删除、移动、加密等)、目录管理(创建、删除、重命名等)、访问控制(管理用户对文件的访问权限,保证安全性)。

(2)硬链接与软链接的区别
对比维度硬链接软链接(符号链接)
inode 节点号与源文件相同与源文件不同
本质源文件的平等副本,共享数据指向源文件路径的快捷方式
源文件删除影响无影响(需删除所有硬链接才彻底删除文件)软链接失效(指向无效路径)
适用对象仅文件,不可跨文件系统文件和目录,可跨文件系统
创建命令ln 源文件 链接文件ln -s 源文件 链接文件
(3)提升文件系统性能的方式
  • 硬件优化:使用 SSD、NVMe 替代机械硬盘,采用 RAID 技术提升磁盘性能。
  • 文件系统选型:根据场景选择合适的文件系统(如 ext4、XFS)。
  • 缓存机制:利用缓存减少磁盘访问次数,提高缓存命中率。
  • 避免磁盘满载:预留一定剩余空间,减少文件碎片。
  • 合理分区:按用途分区,减少文件碎片,提升读写效率。
(4)常见磁盘调度算法

磁盘调度算法用于优化磁盘访问顺序,减少寻道时间和延迟时间:

  • FCFS(先来先服务):按请求顺序处理,简单但平均寻道时间长,易出现饥饿。
  • SSTF(最短寻道时间优先):优先处理距离当前磁头最近的请求,缩短寻道时间,但易饥饿。
  • SCAN(电梯算法):磁头沿一个方向扫描,处理途经请求,到达边界后反向,无饥饿。
  • C-SCAN(循环扫描):仅沿一个方向扫描,到达边界后返回起点循环,优化 SCAN 的无用移动。
  • LOOK:SCAN 改进版,无请求时立即反向,减少无用移动。
  • C-LOOK:C-SCAN 改进版,无请求时返回最近有请求的位置,进一步优化。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 14:14:07

业绩增长乏力?原圈科技AI CRM系统揭秘保险业四大陪练场景

原圈科技的AI CRM系统,旨在解决保险业销售培训周期长、效果量化难的痛点。本文将权威、详尽地揭秘其内置的AI语音陪练在新人入职、高阶技巧、合规对练及客户经营四大核心场景中的应用模板,展示如何系统性地重塑销售生产力,助力机构在激烈竞争…

作者头像 李华
网站建设 2026/2/26 19:13:41

【软件分享】SmsForwarder短信转发器v3.3.3:下载与完整配置教程

【软件分享】SmsForwarder短信转发器v3.3.3:下载与完整配置教程 下载地址: https://pan.quark.cn/s/c59107cdae33?pwdxqvm 前言 SmsForwarder是一款强大的Android应用,能够监控手机短信、来电和应用通知,并根据自定义规则转发到各种平台。…

作者头像 李华
网站建设 2026/2/26 10:48:31

CarSim与Simulink联合仿真模型 提供Carsim参数配置文件——cpar文件——导...

CarSim与Simulink联合仿真模型 提供Carsim参数配置文件——cpar文件——导入即可运行 提供simulink模型文件——mdl/slx文件——支持2016及以上版本 手指在键盘上敲得飞起,突然发现CarSim和Simulink这俩货搞联合仿真真能省不少事。先说那个cpar配置文件吧&#xff…

作者头像 李华
网站建设 2026/2/23 22:39:50

西门子 S7 - 1200 PLC 在污水处理项目中的实战应用

西门子S7一1200 PLc程序项目,cPU1214和ET200 iO站点,博途V16与V17版,HMi为kTP1200.模拟量转换,电动阀控制,液位控制,Modbus通讯控制变频器,Pid控制,PUt与get指令,汅水处…

作者头像 李华
网站建设 2026/2/24 18:29:03

Turbo码编码译码在MATLAB中的实现探索

Turbo码编码译码 MATLAB 实现 不同算法 log—MAP max—log—map sova算法 在通信领域,Turbo码以其优异的性能备受关注。它通过交织器和分量编码器构建了一种并行级联卷积码,实现了接近香农限的纠错能力。今天咱们就来聊聊Turbo码编码译码在MATLAB里怎么实…

作者头像 李华