本文已参与「新人创作礼」活动,一起开启掘金创作之路。
多级页表
多级页表是解决页表空间上、以及缓存友好型的缺陷的
两级页表工作原理: 将连续存放的页表再进行分级
工作原理:
①按照地址结构将逻辑地址拆分成三部分
②从PCB中读出页目录表始址,再根据一级页号查页目录表,找到下一级页表在内存中的存放位置
③根据二级页号查表,找到最终想访问的内存块号
④结合页内偏移量得到物理地址
- 如果使用了二级分页,一级页表就可以覆盖整个 4GB 虚拟地址空间,但如果某个一级页表的页表项没有被用到(操作系统会将页面换出到硬盘),也就不需要创建这个页表项对应的二级页表了,即可以在用到时才创建二级页表。
TLB(快表)
快表又称联想存储器。
多级页表虽然解决了空间上的问题,但是虚拟地址到物理地址的转换就多了几道转换的工序,这显然就降低了这俩地址转换的速度,也就是带来了时间上的开销。
根据程序的局部性原理,我们把最常访问的几个页表项存储到访问速度更快的TLB中,与之相对应,内存中的页表称为慢表
- 有了 TLB 后,那么 CPU 在寻址时,会先查 TLB,如果没找到,才会继续查多级页表。
段页式内存管理
内存分段和内存分页组合起来后,就称为段页式内存管理
段页式内存管理实现的方式:
- 先将程序划分为多个有逻辑意义的段(也叫做虚拟内存),也就是分段机制;
- 接着再把每个段划分为多个页,也就是对分段划分出来的连续空间,再划分固定大小的页;
这样,地址结构就由段号、段内页号和页内位移三部分组成。
根据这个地址结构,经过三次内存访问(查段表、查页表、查偏移量),最终找到物理地址。