跳转到内容
唯一赫兹
返回

操作系统 - 内存管理

虚拟内存管理

虚拟内存和物理内存的映射方式

内存分段

内存分段会带来两个问题:

  1. 内存碎片
  2. 内存交换

内存碎片是因为多个分段不连续,分段间的空间无法被利用 要解决这个问题就需要使用磁盘的交换(Swap)空间 例如上图,当需要载入一个 200MB 的新程序时

  1. 将 256MB 的程序先写入磁盘的 Swap 空间,然后重新载入内存
  2. 使其紧靠 512MB 部分的内存
  3. 这样就能将两个不足 200MB 大小的内存碎片,整合为一个足够支撑 200MB 程序的内存了 如果需要重新加载的程序内存比较大,写入磁盘、写回内存的性能开销比较大,内存分页就解决了这个问题

内存分页

内存交换做出的优化
单个页表的映射方式

多级页表

每个页 4KB,在单个页表的情况下,要覆盖 4GB 以上的内存地址,页表需要有百万级数量的页表项,每个页表项占用 4B,这会导致页表本身就会有很高的内存占用 多级页表的情况下,以二级页表为例,一级页表覆盖完整的虚拟内存地址,如果一级页表中的一些页表项没有被用到,就可以不用创建二级页表,这样就能节省很大的页表内存占用

现代的 64 位系统内存很大,所以采用四级分页:

TLB

多级页表节省了页表的内存占用,但也提高了虚拟地址转换为物理地址的时间开销,于是引入 页表缓存(TLB, Translation Lookaside Buffer), 也叫 转址旁路缓存,用于缓存最常用的几个页表项 TLB 是 CPU 内部,MMU 旁边的,一块高速小容量存储器

内存分配机制



上一篇
操作系统 - 进程管理
下一篇
操作系统 - 硬件结构