面试官:说说操作系统如何提高查询物理页的速度

本文探讨了操作系统如何通过TLB缓存技术提高查询物理页的速度,解释了虚拟内存的使用原理以及它如何减少地址转换次数。重点介绍了TLB如何利用程序的局部性特点,提升内存访问效率,同时讨论了虚拟内存的优势如内存扩展和安全隔离。
摘要由CSDN通过智能技术生成

一、问题剖析

操作系统如何提高查询物理页的速度,这个问题咋一听确实没啥想法,但是说道提高查询速度我们一般能想到什么,对啦,就是缓存。

所以这个问题其实是在问操作系统中使用了什么缓存技术提高查询物理页的速度,这项缓存技术就是TLB(Translation Lookaside Buffer),通常成为页表缓存、转址旁路缓存、快表等。

二、物理内存到底是如何使用的

我们在使用计算机内存时,并不是直接使用物理内存,而是使用虚拟内存,通过虚拟内存的虚拟地址进行计算得到物理内存的物理地址,进而访问实际物理内存空间。

虚拟地址的和物理地址的映射关系由页表来存储,页表存在于内存中。当需要访问某个物理页时,CPU先从内存中通过虚拟地址查询页表,然后计算出实际物理地址,再通过物理地址访问物理内存中的物理页。

注:虚拟地址转换成物理地址的工作是由内存管理单元(MMU)实现的。

三、传统使用方式存在的问题

虚拟地址转换成物理地址并得到物理页需要两次访问内存,第一次是查询页表,第二次是访问实际的物理页,这个过程是比较耗时的;如果再使用多级页表的话,那么转换的工序将大大增加,也就带来了更大的时间开销。

四、解决问题,提高查询物理页的速度

程序是有局部性的,在一段时间内程序的执行仅限于程序的某一部分;相应的,执行所访问的内存空间也局限于某一部分。

根据这个特性,在CPU芯片中加入了TLB,TLB是一个专门存放程序最常访问的页表项的Cache。

有了TLB后,CPU在寻址的时候,会先查询TLB,如果查询到所需物理地址,则只需访问内存一次即可得到所需物理页,大大降低了地址转换和内存查询的时间开销;如果没有找到,则继续查询常规的页表。

注:添加TLB后确实大大提高了查询速度,TLB命中率很高,因为程序最长访问的页就几个而已。

拓展:使用虚拟内存的好处?

  1. 虚拟内存的使用可以让进程申请内存空间时超过实际内存空间大小。

  2. 每个进程都有自己独立的页表和虚拟内存空间,进程之间无法相互访问页表,避免多进程之间出现地址冲突问题。

  3. 页表中的页表项除了记录物理地址外,还记录了页的读写权限和是否存在等,所以操作系统在内存访问方面提供了更好的安全性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值