Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

  • 操作系统原理

    • 操作系统职责与内核架构
    • 进程线程与调度
    • 内存管理与虚拟内存
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • 文件系统与VFS
    • IO模型与中断
    • 权限安全与隔离
    • 启动流程与系统服务
    • 性能观测与故障定位
  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

内存管理与虚拟内存

操作系统通过虚拟内存为每个进程提供独立地址空间,同时用分页、页表、缺页异常和回收机制管理物理内存。

# 1. 学习目标

  • 理解虚拟地址、物理地址、页表和缺页异常。
  • 能解释进程隔离、内存映射、共享内存和 Copy-on-Write。
  • 能分析 OOM、内存泄漏、Page Fault 和 Swap。

# 2. 知识框架

内存管理与虚拟内存
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

虚拟内存的价值是隔离、抽象和弹性:应用看到连续地址,内核负责映射、权限、回收和共享。

# 3. 核心概念

主题 说明 工程关注
地址空间 进程可见的虚拟地址范围 栈、堆、共享库、映射文件
页表 虚拟页到物理页的映射结构 TLB、缺页、权限保护
mmap 把文件或匿名内存映射到进程地址空间 零拷贝、共享内存、大文件处理
OOM Killer 内存极度紧张时系统终止进程 容器内存限制、服务稳定性

# 4. 机制与实践

  1. 内存问题要同时看进程 RSS、虚拟内存、共享内存、Page Cache 和 cgroup 限制。
  2. 大文件处理可考虑 mmap,但要理解页缓存、释放和平台差异。
  3. 容器中要给运行时和应用缓存设置明确内存上限。

# 5. 常用命令与工具

命令或工具 作用 使用建议
cat /proc/pid/maps 查看 Linux 进程地址空间映射 分析库、堆、栈和 mmap
pmap -x pid 查看进程内存分布 定位 RSS 和映射来源
vm_stat 查看 macOS 虚拟内存统计 观察页入页出和压缩内存

# 6. 常见误区

  • 把虚拟内存当真实占用:虚拟地址空间大不代表实际物理内存占用大。
  • 忽略共享内存统计:多个进程共享库和映射文件会让内存统计解释更复杂。
  • 只在应用里找 OOM:容器 cgroup、内核内存、Page Cache 和系统策略都可能触发终止。

# 7. 进阶研究方向

  • 阅读页表、TLB、缺页异常和 Copy-on-Write 的实现。
  • 用小程序观察 fork 后写时复制行为。
  • 研究 Linux 内存回收、匿名页、文件页和脏页刷盘。

# 8. Tips 快问快答

Q:为什么每个进程都像拥有独立内存?

A:因为 CPU 和内核通过页表把虚拟地址映射到不同物理页,并控制访问权限。

Q:mmap 一定更快吗?

A:不一定。mmap 减少拷贝和系统调用,但会引入缺页、地址空间和释放时机等问题。

Q:什么是 Copy-on-Write?

A:多个执行流先共享同一页,只有写入时才复制,减少 fork 等场景的内存开销。

# 9. 总结

虚拟内存是现代操作系统最关键的抽象之一。它让进程隔离、文件映射、共享内存和内存回收成为可能,也让内存排障必须跨应用和内核一起看。

上次更新: 2026/06/25, 10:02:19
进程线程与调度
文件系统与VFS

← 进程线程与调度 文件系统与VFS→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式