虚拟存储器
掌握虚拟存储器的基本概念,页式虚拟存储器的页表、地址转换与缺页处理,快表 TLB 的作用与 TLB、页表、Cache 三者配合的访存过程;了解段式、段页式虚拟存储器的地址结构与地址变换。
本节导读
虚拟存储器是存储器层次结构的第三部分,大纲列了基本概念,页式虚拟存储器(基本原理、页表、地址转换、TLB),段式和段页式虚拟存储器。操作系统的内存管理(第 25 节)会从软件一侧再讲一遍,这一节偏重硬件:地址怎样拆分、页表项里有什么、一次访存要经过哪几步。
学完你应该能把虚拟地址拆成虚页号和页内偏移、查页表拼出物理地址,能算出带 TLB 的平均访存时间,并判断 TLB、页表、Cache 的命中与缺失组合是否可能出现。
基本概念
虚拟存储器是主存—辅存层次:程序使用的是虚拟地址(逻辑地址),它的空间可以比实际主存大得多;程序运行时只把当前要用的部分调入主存,其余留在辅存。虚拟地址到物理地址(主存地址)的转换由 CPU 中的存储管理部件 MMU 用硬件完成,调入调出由操作系统负责。
与 Cache 比较:二者都利用局部性、都以块(页)为单位调入;但虚拟存储器的页比 Cache 块大得多,缺页时要访问磁盘,代价很高,所以采用全相联映射(页可以放在任意一个页框中)、写回法,缺页由操作系统处理,而 Cache 的缺失完全由硬件处理。
页式虚拟存储器
虚拟地址空间和主存空间都划分成大小相同的页,主存中的页也叫页框(物理页)。
虚拟地址=虚页号∣页内偏移 物理地址=页框号∣页内偏移页内偏移的位数 = log2(页大小),虚拟地址与物理地址的页内偏移相同。每个进程有一张页表,存放在主存里,起始地址放在页表基址寄存器中;以虚页号为下标找到页表项,页表项的主要内容:
| 字段 | 作用 |
|---|---|
| 有效位(装入位) | 该页是否在主存中;为 0 时访问它产生缺页异常 |
| 页框号或磁盘地址 | 在主存时给出页框号,不在时给出它在辅存中的位置 |
| 修改位(脏位) | 该页调入后是否被改过,换出时决定要不要写回辅存 |
| 引用位 | 最近是否被访问过,供页面置换算法使用 |
| 存取权限 | 只读、可读写、可执行等,用于存储保护 |
地址转换:取虚页号,访问主存中的页表项;有效位为 1 时,用页框号替换虚页号、页内偏移照抄,得到物理地址;有效位为 0 时产生缺页异常,由操作系统调入该页,必要时先换出一页,然后重新执行这条指令。页表的大小 = 页表项个数 × 每项字节数,页表项个数 = 2虚页号位数。虚拟地址空间很大时,一级页表太大,可以用多级页表,只为用到的部分建立下一级页表。
快表 TLB
不加处理时,每次访存都要先访问一次主存查页表,速度减半。把最近用过的页表项放在一个小而快的相联存储器里,叫快表 TLB(页表的 Cache),一般采用全相联或组相联,TLB 项的标记是虚页号(或其一部分),内容是页框号和有效位等。
一次访存的过程:先用虚页号查 TLB;命中就直接得到页框号;缺失则访问主存中的页表,若页在主存中,把这一项装入 TLB;若缺页,转操作系统处理。得到物理地址后,再用物理地址访问 Cache,Cache 缺失才访问主存。这样,TLB、页表、Cache 三者的命中与否有一定的依赖关系:页不在主存时,它的页表项不可能在 TLB 中,它的数据也不可能在 Cache 中。
本节后面还有约 1399 字:报名学员看全文
每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。
题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。
学完练一练
按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。
本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。