问题及思考

0 问题

1 内存

1.1 内存空洞是什么?外部碎片和内部碎片又是什么?

  1. 内存空洞
    首先要理解的是机器的物理地址中不一定全部对应真实 RAM 及不对应真实的物理结构,示意图
1
2
3
4
5
6
7
8
物理地址
0 GB ┌──────────────┐
│ RAM │
1 GB ├──────────────┤
│ 地址空洞 │ ← 没有真实内存,可能保留给设备/MMIO
3 GB ├──────────────┤
│ RAM │
8 GB └──────────────┘
  1. 外部碎片
    外部碎片是:可用内存总量够,但空闲空间被切成了很多不连续的小块,无法满足连续分配要求。
    示意图:
1
2
已用  空闲  已用  空闲  已用  空闲
██ □□ ██ □□ ██ □□
  1. 内部碎片
    内部碎片:顾名思义,发生在分配给对象的内存的内部,分配给对象的空间大于对象实际需要,浪费发生在已分配块内部。
    一页是 4 KiB,某次分配必须占用一整页,但实际只用了 3 KiB,示意图:
1
2
3
4
一页 4 KiB
┌──────────────────────┐
│ 实际使用 3 KiB │浪费1KiB│
└──────────────────────┘

这 1 KiB 已经属于该分配,其他对象不能直接使用,因此是内部碎片。


问题及思考
https://cj0510.github.io/2026/07/13/Linux Kernel/problem/
作者
CJ1018
发布于
2026年7月13日
许可协议
CC BY-NC-SA 4.0