Please enable Javascript to view the contents

Kernel - 内存寻址

 ·  ☕ 1 分钟

CPU Cache

image-20210301112938070

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。

进程虚拟内存地址分配

image-20210301101452316

如上图,进程的地址空间被分为很多 segment,其中 heap(堆)和 stack (栈)可扩展。

进程虚拟内存和物理内存地址的快速转换

从进程角度看,只有一个线性的内存空间,而这个空间其实被映射到物理内存中:

image-20210301102914281

如果这个转换在CPU中完成,会影响性能,所以有专門的硬件作转换,叫 MMU:

image-20210301103150825

MMU 中记录了每个 Page 的元数据(状态和属性)

  • Present flag:Page 是否在物理内存中
  • Accessed flag:是否被访问过
  • Dirty flag:是否被写入过
  • Read/Write flag:读写权限
  • Page Size flag:是否大页(2/4Mbytes)

参考

分享

Mark Zhu
作者
Mark Zhu
Old Developer