文章目录
- 前言
- 多级页表与快表
前言
一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油!
本文总结自B站【哈工大】操作系统 李治军(全32讲)
老师课程讲的非常好,感谢
【哈工大】操作系统 李治军(全32讲)
多级页表与快表
多级页表和块表,以及前面的分页机制合起来成为一套比较完善的内存访问机制
为了提高内存利用率,页应该小,页小了,页表项就多了,页表就大了;(页是4K,每个段最多浪费4K)
CPU执行指令关键花的时间就在于通过总线访问内存,这个速度是慢的
页号必须要连续,这样才可以立即定位到页表项
用多级页表既实现连续,又让页表占的内存变少
页目录表(章)+页表(节)
多级页表优点:
多级页表既保证了页表表项的连续性,使得查找起来非常快(时间复杂度O(1));
又保证了内存中存储的页表少了,减少了内存浪费,提高了内存使用率;
多级页表缺点
多级页表增加了访存速度,特别64位系统(因为64位系统的多级页表有5,6级);
多级页表,每增加一级,访存次数就会加1; 所以 64位系统的多级页表访存次数约为5,6次;
多级页表的级数越多,访存越多,效率越低(级数越多,类比书的多层目录),这会造成指令执行效率低;
快表:
- 也叫TLB,TLB是一组相联快速存储,是寄存器;
- TLB,即Translation lookaside buffer,又称为翻译后备缓冲区寄存器;
- 通过TLB可以快速找到最近使用的逻辑页映射的物理页号;
基于快表的地址翻译步骤
步骤1: 根据逻辑地址的页号,查询一次TLB寄存器就可以得到页框号(物理页号);
步骤2: 若快表TLB不存在页框号(未命中),则查询多级页表,并把查询结果送入TLB存储作为缓冲用于后续地址翻译;
小结:快表+多级页表合在一起形成的结构,保证了查询(翻译物理地址)时间快,页表项连续,减少了内存资源浪费;
这也充分体现了操作系统折中思想;通过把一些技术组合在一起,使得访问时间不错,空间利用也不错;具体是:
多级页表是减少了空间浪费,降低了空间复杂度,访问时间还可以,但还想提高页表查询速度;
TLB是提高了页表查询速度,降低了时间复杂度;
TLB可以弥补多级页表(特别64位系统)访存耗时,慢的缺点;
TLB越大越好, 但TLB很贵,折中处理是 TLB可以存储的页表项数量范围是 [64,1024];
原因:
- 程序的地址访问存在局部性;
- 因为访问局部性,所以程序用的是固定的那几个逻辑页号;
- 最近访问的逻辑页与物理页映射关系会送入TLB存储,所以TLB的命中率会很高;
- 补充:程序多体现在循环,顺序结构;