操作系统-非连续内存管理(2)

310 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

多级页表

多级页表是解决页表空间上、以及缓存友好型的缺陷的

两级页表工作原理: 将连续存放的页表再进行分级

工作原理:

①按照地址结构将逻辑地址拆分成三部分

②从PCB中读出页目录表始址,再根据一级页号查页目录表,找到下一级页表在内存中的存放位置

③根据二级页号查表,找到最终想访问的内存块号

④结合页内偏移量得到物理地址


  • 如果使用了二级分页,一级页表就可以覆盖整个 4GB 虚拟地址空间,但如果某个一级页表的页表项没有被用到(操作系统会将页面换出到硬盘),也就不需要创建这个页表项对应的二级页表了,即可以在用到时才创建二级页表。

TLB(快表)

快表又称联想存储器。

多级页表虽然解决了空间上的问题,但是虚拟地址到物理地址的转换就多了几道转换的工序,这显然就降低了这俩地址转换的速度,也就是带来了时间上的开销。

根据程序的局部性原理,我们把最常访问的几个页表项存储到访问速度更快的TLB中,与之相对应,内存中的页表称为慢表

  • 有了 TLB 后,那么 CPU 在寻址时,会先查 TLB,如果没找到,才会继续查多级页表。

段页式内存管理

内存分段和内存分页组合起来后,就称为段页式内存管理

段页式内存管理实现的方式:

  • 先将程序划分为多个有逻辑意义的段(也叫做虚拟内存),也就是分段机制;
  • 接着再把每个段划分为多个页,也就是对分段划分出来的连续空间,再划分固定大小的页;

这样,地址结构就由段号、段内页号和页内位移三部分组成。

根据这个地址结构,经过三次内存访问(查段表、查页表、查偏移量),最终找到物理地址。