CSDN|真棒!20 张图揭开内存管理的迷雾( 四 )
本文插图
四级目录TLB多级页表虽然解决了空间上的问题 , 但是虚拟地址到物理地址的转换就多了几道转换的工序 , 这显然就降低了这俩地址转换的速度 , 也就是带来了时间上的开销 。程序是有局部性的 , 即在一段时间内 , 整个程序的执行仅限于程序中的某一部分 。 相应地 , 执行所访问的存储空间也局限于某个内存区域 。
本文插图
程序的局部性 我们就可以利用这一特性 , 把最常访问的几个页表项存储到访问速度更快的硬件 , 于是计算机科学家们 , 就在 CPU 芯片中 , 加入了一个专门存放程序最常访问的页表项的 Cache , 这个 Cache 就是 TLB(Translation Lookaside Buffer), 通常称为页表缓存、转址旁路缓存、快表等 。
本文插图
地址转换 在 CPU 芯片里面 , 封装了内存管理单元(Memory Management Unit)芯片 , 它用来完成地址转换和 TLB 的访问与交互 。有了 TLB 后 , 那么 CPU 在寻址时 , 会先查 TLB , 如果没找到 , 才会继续查常规的页表 。TLB 的命中率其实是很高的 , 因为程序最常访问的页就那么几个 。段页式内存管理内存分段和内存分页并不是对立的 , 它们是可以组合起来在同一个系统中使用的 , 那么组合起来后 , 通常称为段页式内存管理 。
本文插图
段页式地址空间 这样 , 地址结构就由段号、段内页号和页内位移三部分组成 。用于段页式地址变换的数据结构是每一个程序一张段表 , 每个段又建立一张页表 , 段表中的地址是页表的起始地址 , 而页表中的地址则为某页的物理页号 , 如图所示:
本文插图
段页式管理中的段表、页表与内存的关系 段页式地址变换中要得到物理地址须经过三次内存访问:
- 第一次访问段表 , 得到页表起始地址;
- 第二次访问页表 , 得到物理页号;
- 第三次将物理页号与页内位移组合 , 得到物理地址 。
本文插图
Intel X86 逻辑地址解析过程 这里说明下逻辑地址和线性地址:
- 程序所使用的地址 , 通常是没被段式内存管理映射的地址 , 称为逻辑地址;
推荐阅读
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- 科学探索|为对抗美国,俄想和中国建月球基地,却被一张图扎心了,还能拿出什么?
- AI人工智能|OpenAI新模型曝光:给它半张图片,能够猜测补全
- DeepTech深科技|OpenAI新模型曝光:给它半张图片,能够猜测补全
- CSDN|软件对于英特尔意味着什么?
- CSDN|中国首家苹果零售店重开业,苹果CEO库克发文揭幕;“携号转网”服务用户破千万;GitHub 完成北极源代码存档|极客头条
- 智能机器人|快商通智能客服云平台荣获CSDN“AI优秀案例实践奖”
- 百度|一张图看中美互联网科技公司对比,中国真能和美国势均力敌了吗?
- CSDN|万亿美元软件浪潮来临,开发者是核心!
- 行业互联网|快商通智能客服云平台荣获CSDN“AI优秀案例实践奖”