CPU Cache
Cache 有两种写策略:
- write-through:同步写 Cache 和 Main Memory
- write-back:不同步写 Main Memory,直到CPU发出 flush 指令,或收到了 FLUSH 硬件信号
Translation Lookaside Buffers (TLB)
为了加快地址转换,每个 CPU 均有一个Translation Lookaside Buffers (TLB)单元,缓存地址转换表。
什么是内存 Page
为高效管理内存,内存管理时,要以一定大的粒度去管理,一般为4 Kbytes。每个连续的4k内存块为一个 page。
进程虚拟内存地址分配
如上图,进程的地址空间被分为很多 segment,其中 heap(堆)和 stack (栈)可扩展。
进程虚拟内存和物理内存地址的快速转换
从进程角度看,只有一个线性的内存空间,而这个空间其实被映射到物理内存中:
如果这个转换在CPU中完成,会影响性能,所以有专門的硬件作转换,叫 MMU:
MMU 中记录了每个 Page 的元数据(状态和属性)
- Present flag:Page 是否在物理内存中
- Accessed flag:是否被访问过
- Dirty flag:是否被写入过
- Read/Write flag:读写权限
- Page Size flag:是否大页(2/4Mbytes)
参考
-
[Understanding The Linux Kernel 3rd Edition]
-
https://www.kernel.org/doc/html/latest/admin-guide/mm/concepts.html