虚拟内存管理具体有哪些?

✅ 一句话概括

虚拟内存管理是操作系统提供的一种将 进程虚拟地址空间和实际物理内存 分离的机制,包含 地址映射、内存分配、页表管理、换页、保护与共享 等内容。


📦 虚拟内存管理主要包括哪些内容?

我们分为 6 大核心模块:

模块描述
① 地址空间划分用户空间 vs 内核空间,虚拟地址布局
② 地址映射机制页表、段页式、TLB、页目录、页表项(PDE/PTE)等
③ 页表管理页表结构、映射维护、动态建立
④ 页面置换页面不在内存时触发 page fault,进行换页(如 FIFO、LRU、CLOCK)
⑤ 内存分配物理页分配(伙伴系统)、虚拟空间分配(mmap、sbrk)
⑥ 访问权限控制与共享内存保护(读/写/执行)、共享内存、Copy-on-Write(COW)等

🔍 具体展开讲讲


① 虚拟地址空间划分

操作系统为每个进程提供独立的“虚拟地址空间”

典型的 32 位进程地址空间划分:

0x00000000 ~ 0xBFFFFFFF  用户空间(3GB)
0xC0000000 ~ 0xFFFFFFFF  内核空间(1GB)

内核隔离,用户进程无法访问内核区。


② 地址映射机制(页表 + TLB)

  • 操作系统使用 页表 将虚拟地址 ↔ 物理地址进行映射
  • 每次访问虚拟地址,会查询页表找到实际物理地址
  • 使用 TLB(Translation Lookaside Buffer) 做页表缓存,加速查询

地址转换流程:

虚拟地址 = 页目录索引 + 页表索引 + 页内偏移
→ 页目录 → 页表 → 找物理页框

③ 页表管理

  • 每个进程有自己的页表
  • 页表内容包括每一页的:物理地址、权限位(P/R/W/U)、状态位(Present/Dirty/Accessed)
  • 支持多级页表(如二级页表、四级页表)

④ 页面置换(Page Replacement)

当内存满了,需要从物理内存中“换出”某些页

常见算法:

  • FIFO
  • LRU
  • CLOCK
  • OPT(理论最优)

触发机制:Page Fault(缺页中断)


⑤ 内存分配机制

分两类:

✅ 虚拟地址空间分配(进程视角)
  • sbrk():分配堆(向上增长)
  • mmap():映射匿名内存或文件内存段
  • 栈自动分配(向下增长)
✅ 物理页帧分配(系统视角)
  • 使用 伙伴系统(Buddy Allocator)分配/合并物理页
  • 页框回收时触发 OOM / 置换 / 缓存回收等机制

⑥ 访问控制与内存保护

  • 每一页都有权限位(R/W/X/U)
  • CPU 硬件支持:不允许非法访问(页错误)
  • 支持:
    • 写时复制(COW)
    • 共享内存映射
    • 执行权限控制(NX Bit)

✅ 图示结构一览(逻辑视角)

             [进程的虚拟地址空间]
              ┌───────────────┐
              │ 代码段(text) │
              │ 数据段(data)│
              │ 堆(heap)     │← sbrk
              │ ...           │
              │ 栈(stack)    │← 自动分配
              └───────────────┘
                       ↓
             [地址映射 → 页表 → 物理内存]
                       ↓
             [物理页帧、分配器、换页算法]

🧠 面试高能金句总结

虚拟内存管理是操作系统提供的内存抽象,既提升了内存使用效率,又隔离了进程地址空间。它通过页表完成地址映射,通过置换算法管理内存回收,并利用权限位进行访问控制,是现代系统运行的基础保障之一。


如果你想,我可以画出“地址转换流程图”或者“多级页表示意图”,让你面试/复习/笔记更直观!📊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值