云狐网

您现在的位置是:首页 > 电脑之家 > 电脑知识

电脑知识

虚拟内存是什么意思 - 虚拟内存原理与工作方式(2/2)

云狐网络 2022-08-14 15:55:58电脑知识
Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

TLB 通常位于 MMU 中,包含少量的表项,每个表项都记录了页面的相关信息,除了虚拟页号外,其他表项都和页表是一一对应的Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(8)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

是不是你到现在还是有点不理解什么是 TLB,TLB 其实就是一种内存缓存,用于减少访问内存所需要的时间,它就是 MMU 的一部分,TLB 会将虚拟地址到物理地址的转换存储起来,通常可以称为地址翻译缓存(address-translation cache)。TLB 通常位于 CPU 和 CPU 缓存之间,它与 CPU 缓存是不同的缓存级别。下面我们来看一下 TLB 是如何工作的。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

当一个 MMU 中的虚拟地址需要进行转换时,硬件首先检查虚拟页号与 TLB 中所有表项进行并行匹配,判断虚拟页是否在 TLB 中。如果找到了有效匹配项,并且要进行的访问操作没有违反保护位的话,则将页框号直接从 TLB 中取出而不用再直接访问页表。如果虚拟页在 TLB 中但是违反了保护位的权限的话(比如只允许读但是是一个写指令),则会生成一个保护错误(protection fault)返回。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

上面探讨的是虚拟地址在 TLB 中的情况,那么如果虚拟地址不再 TLB 中该怎么办?如果 MMU 检测到没有有效的匹配项,就会进行正常的页表查找,然后从 TLB 中逐出一个表项然后把从页表中找到的项放在 TLB 中。当一个表项被从 TLB 中清除出,将修改位复制到内存中页表项,除了访问位之外,其他位保持不变。当页表项从页表装入 TLB 中时,所有的值都来自于内存。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(9)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

软件 TLB 管理Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

直到现在,我们假设每台电脑都有可以被硬件识别的页表,外加一个 TLB。在这个设计中,TLB 管理和处理 TLB 错误完全由硬件来完成。仅仅当页面不在内存中时,才会发生操作系统的陷入(trap)。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

在以前,我们上面的假设通常是正确的。但是,许多现代的 RISC 机器,包括 SPARC、MIPS 和 HP PA,几乎所有的页面管理都是在软件中完成的。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

精简指令集计算机或 RISC 是一种计算机指令集,它使计算机的微处理器的每条指令(CPI)周期比复杂指令集计算机(CISC)少Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

在这些计算机上,TLB 条目由操作系统显示加载。当发生 TLB 访问丢失时,不再是由 MMU 到页表中查找并取出需要的页表项,而是生成一个 TLB 失效并将问题交给操作系统解决。操作系统必须找到该页,把它从 TLB 中移除(移除页表中的一项),然后把新找到的页放在 TLB 中,最后再执行先前出错的指令。然而,所有这些操作都必须通过少量指令完成,因为 TLB 丢失的发生率要比出错率高很多。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(10)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

无论是用硬件还是用软件来处理 TLB 失效,常见的方式都是找到页表并执行索引操作以定位到将要访问的页面,在软件中进行搜索的问题是保存页表的页可能不在 TLB 中,这将在处理过程中导致其他 TLB 错误。改善方法是可以在内存中的固定位置维护一个大的 TLB 表项的高速缓存来减少 TLB 失效。通过首先检查软件的高速缓存,操作系统 能够有效的减少 TLB 失效问题。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

TLB 软件管理会有两种 TLB 失效问题,当一个页访问在内存中而不在 TLB 中时,将产生 软失效(soft miss),那么此时要做的就是把页表更新到 TLB 中(我们上面探讨的过程),而不会产生磁盘 I/O,处理仅仅需要一些机器指令在几纳秒的时间内完成。然而,当页本身不在内存中时,将会产生硬失效(hard miss),那么此时就需要从磁盘中进行页表提取,硬失效的处理时间通常是软失效的百万倍。在页表结构中查找映射的过程称为 页表遍历(page table walk)。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(11)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

上面的这两种情况都是理想情况下出现的现象,但是在实际应用过程中情况会更加复杂,未命中的情况可能既不是硬失效又不是软失效。一些未命中可能更软或更硬(偷笑)。比如,如果页表遍历的过程中没有找到所需要的页,那么此时会出现三种情况:Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

  • 所需的页面就在内存中,但是却没有记录在进程的页表中,这种情况可能是由其他进程从磁盘掉入内存,这种情况只需要把页正确映射就可以了,而不需要在从硬盘调入,这是一种软失效,称为 次要缺页错误(minor page fault)。
  • 基于上述情况,如果需要从硬盘直接调入页面,这就是严重缺页错误(major page falut)。
  • 还有一种情况是,程序可能访问了一个非法地址,根本无需向 TLB 中增加映射。此时,操作系统会报告一个 段错误(segmentation fault) 来终止程序。只有第三种缺页属于程序错误,其他缺页情况都会被硬件或操作系统以降低程序性能为代价来修复

针对大内存的页表Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

还记得我们讨论的是什么问题吗?(捂脸),可能讨论的太多你有所不知道了,我再提醒你一下,上面加速分页过程讨论的是虚拟地址到物理地址的映射速度必须要快的问题,还有一个问题是 如果虚拟地址空间足够大,那么页表也会足够大的问题,如何处理巨大的虚拟地址空间,下面展开我们的讨论。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

多级页表Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

第一种方案是使用多级页表(multi),下面是一个例子Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(12)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

32 位的虚拟地址被划分为 10 位的 PT1 域,10 位的 PT2 域,还有 12 位的 Offset 域。因为偏移量是 12 位,所以页面大小是 4KB,共有 2^20 次方个页面。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

引入多级页表的原因是避免把全部页表一直保存在内存中。不需要的页表就不应该保留Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

多级页表是一种分页方案,它由两个或多个层次的分页表组成,也称为分层分页。级别1(level 1)页面表的条目是指向级别 2(level 2) 页面表的指针,级别2页面表的条目是指向级别 3(level 3) 页面表的指针,依此类推。最后一级页表存储的是实际的信息。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

下面是一个二级页表的工作过程Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(13)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

在最左边是顶级页表,它有 1024 个表项,对应于 10 位的 PT1 域。当一个虚拟地址被送到 MMU 时,MMU 首先提取 PT1 域并把该值作为访问顶级页表的索引。因为整个 4 GB (即 32 位)虚拟地址已经按 4 KB 大小分块,所以顶级页表中的 1024 个表项的每一个都表示 4M 的块地址范围。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

由索引顶级页表得到的表项中含有二级页表的地址或页框号。顶级页表的表项 0 指向程序正文的页表,表项 1 指向含有数据的页表,表项 1023 指向堆栈的页表,其他的项(用阴影表示)表示没有使用。现在把 PT2 域作为访问选定的二级页表的索引,以便找到虚拟页面的对应页框号。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

倒排页表Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

针对分页层级结构中不断增加的替代方法是使用 倒排页表(inverted page tables)。采用这种解决方案的有 PowerPC、UltraSPARC 和 Itanium。在这种设计中,实际内存中的每个页框对应一个表项,而不是每个虚拟页面对应一个表项。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虽然倒排页表节省了大量的空间,但是它也有自己的缺陷:那就是从虚拟地址到物理地址的转换会变得很困难。当进程 n 访问虚拟页面 p 时,硬件不能再通过把 p 当作指向页表的一个索引来查找物理页。而是必须搜索整个倒排表来查找某个表项。另外,搜索必须对每一个内存访问操作都执行一次,而不是在发生缺页中断时执行。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

解决这一问题的方式是使用 TLB。当发生 TLB 失效时,需要用软件搜索整个倒排页表。一个可行的方式是建立一个散列表,用虚拟地址来散列。当前所有内存中的具有相同散列值的虚拟页面被链接在一起。如下图所示Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(14)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

如果散列表中的槽数与机器中物理页面数一样多,那么散列表的冲突链的长度将会是 1 个表项的长度,这将会大大提高映射速度。一旦页框被找到,新的(虚拟页号,物理页框号)就会被装在到 TLB 中。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

刊误Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

虚拟内存是什么意思(虚拟内存原理与工作方式)(15)Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

P115 页,两条线位置画反,根据下面的描述很容易误导他人,望修正。Vrx电脑_数码_手机应用问题解决的IT技术网站 - 云狐网

 2/2   首页 上一页 1 2