内存地址映射与共享

内存管理机制
虚拟地址《=(段管理机制)=》线性地址《=(分页管理机制)=》物理地址

分页管理机制
内存分页管理机制时同过 页目录表和内存页表 组成的二级表进行的,其中页目录表(4B)来寻址一个页表,每个页表项(4B)来寻址一个一个物理内存页,结构如下图。Linux 0.11中页目录表占用一页地址,即最多可以寻址1024个页表,1024 * 1024 * 4K = 4G。所有进程共用一个页目录表,而每个进程有自己的页表项。
内存地址映射与共享_第1张图片

线性地址到物理地址变换图:
内存地址映射与共享_第2张图片

Linux 0.11 内存的管理与分配示意图
默认最多只有16M 内存,其中Linux内核占用了最前端的一部分,下图 end 标示内核结束的位置。随后是高速缓冲区,它的最高内存地址是 4MB。高速缓冲区被显示内存和 ROM BIOS 分成 2段,剩余的内存称为主内存区如下所示:
内存地址映射与共享_第3张图片

多级页表提高了空间效率,但在时间上增加了(增加了访存的次数),为此我们可以引入快表:
内存地址映射与共享_第4张图片
TLB命中时效率会很高,未命中时效率降低
内存地址映射与共享_第5张图片

TLB越大越好,但TLB很贵,通常只有[64, 1024]

相比220个页,64很小,为什么TLB就能起作用?

  • 程序的地址访问存在局部性
  • 空间局部性(Locality in Space)
    内存地址映射与共享_第6张图片
  • 计算机系统设计时应该充分利用这一局部性

你可能感兴趣的:(linux0.11)