🏷️ 知识点:虚拟内存管理
2.10 本节小结 上述示例涵盖了从虚拟地址到Cache 查找过程中可能出现的典型情形。完整的地址翻译与数 据访问流程如下:首先查询 TLB; 若 TLB 未命中,则需访问页表以完成虚实地址转换。在此过 程中,若发现所需页面尚未调入主存(页表项无效),则触发缺页中断,从外存调入该页面。随 后,利用所得物理地址访问Cache; 若 Cache 未命中,则进一步从主存读取所需数据。 · 对 于 0x0b1:Cache 组索引为0xc, 标记为0x02。查 Cache 索引为0xc 的行,有效位为0, Cache 未命中,需从主存中读取物理页号为0x2、偏移为0x31处的数据。 · 对 于 0x354:Cache 组索引为5,标记为0x0d。查 Cache 索引为5的行,标记为0d 且有 效位为1,Cache 命中。偏移为0(块0),故虚拟地址0x03d4对应的数据为36H。 物理地址 Cache标记 Cache索引 偏 移 11 10 9 8 7 6 5 4 3 2 1 0 0x354 0 0 1 1 0 1 0 1 0 1 0 0 0x0b1 0 0 0 0 1 0 1 1 0 0 0 1 物理页号 页内偏移 表3.5 物理地址结构 获得主存中页面的物理地址后,需通过该地址访问数据,此时应检查其内容是否在Cache 中, 物理地址结构如表3.5所示。 · 对于0x0229: 组索引为0,TLB 标记为0x02。查 TLB 第0组,无匹配项。再查页表,虚 拟页号为0x08, 对应页表项有效位为0,页面不在主存中,触发缺页中断。 · 对于0x00fl: 组索引为3,TLB 标记为0x00。查 TLB 第3组,无匹配项, TLB 未命中, 转而查询页表。虚拟页号为0x03, 页表第3行有效位为1,表明页面在主存中。物理页 号为0x02(000010), 拼接页内偏移110001,得物理地址为0x0b1 (000010110001)。 地址为0x354(001101010100)。 225第 3 章 内 存 管 理 225 · 对 于 0x03d4: 组索引为3,TLB 标记为0x03。查TLB 第3组,存在标记为03且有效位 为1的项,TLB 命中。对应物理页号为0xOd(001101), 拼接页内偏移010100,得物理 由表3.4可得各地址的虚拟页号、组索引及TLB 标记。接下来需判断对应页面是否已在主存 中;若在主存中,则进一步确定其物理地址。 虚拟地址 T L B 标 记 组 索 引 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0x03d4 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0x00fl 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0x0229 0 0 0 0 1 0 0 0 1 0 1 0 0 1 虚拟页号 页内偏移 表3 .4 虚拟地址结构 首先将十六进制的虚拟地址0x03d4,0x00f¹ 和 0x0229 转换为二进制形式,如表3.4所示。 索引 标记位 有效位 块0 块1 块2 块3 索引 标记位 有效位 块0 块1 块2 块3 0 19 1 99 11 23 11 8 24 1 3A 00 51 89 1 15 0 一 一
一 9 2D 0 一 一 2 1B 1 00 02 04 08 A 2D 1 93 15 DA 3B 3 36 0 一 一 一 一 B 0B 0 一 一 一 一 4 32 1 43 6D 8F 09 C 02 0
5 OD 1 36 72 F0 1D D 16 1 04 96 34 15 6 31 0 一 一 一 一 E 13 1 83 77 1B D3 7 16 1 11 C2 DF 03 F 14 0 一 一 一 表3.3 data Cache 内 容 虚拟 页号 物理 页号 有效位 虚拟 页号 物理 页号 有效位 00 28 1 08 一 0 01 一 0 09 17 1 02 33 1 0A 09 1 03 02 1 0B 一 0 04 一 0 0C 一 0 05 16 1 0D 2D 1 06 0 0E 11 1 07 一 0 0F 0D 1 表3.2 部分页表 索引 标记 位 物理 页号 有效位 标记 位 物理 页号 有效 位 0 03 一 0 09 0D 1 00 一 0 07 02 1 1 03 2D 1 02 一 0 04 一 0 0A 一 0 2 02 一 0 08 一 0 06 一 0 03 一 0 3 07 一 0 03 0D 1 0A 34 1 02 一 0 表3. 1 TLB TLB 、部分页表及data Cache的内容分别见表3.1、表3.2和表3.3。 图3.28 地址结构 TLB标记 TLB组索引虚拟页号 页内偏移(a) 虚拟地址 (b) 物理地址 TLB标记 TLB组索引 虚拟页号 页内偏移 (a) 虚拟地址 (b) 物理地址 16个条目,因此组数为16/4=4,组索引占log24=2 位,虚拟页号的低2位作为组索引、高6位 作为TLB 标记。data Cache 行大小为4B, 故物理地址中最低log₂4=2 位为块内偏移;Cache 共 16组,因此接下来的log₂16=4 位为组索引,剩余高6位为标记。地址结构如图3.28所示。 系统以字节编址,页面大小为64B, 故页内偏移占log₂64=6 位。虚拟地址共14位,故虚拟 页号为14-6=8位;物理地址共12位,故物理页号为12-6=6位。TLB 采用四路组相联,共 要求分析对虚拟地址0x03d4,0x00f1 和 0x0229 的访问过程。 · data Cache采用物理寻址、直接映射方式,行大小为4B, 共16组。 · TLB 采用四路组相联结构,共16个条目; ●页面大小为64B; ●物理地址为12位; ●虚拟地址为14位; ●存储器以字节为编址单位; ●配置一个TLB和一个data Cache; 设某系统满足以下条件: 考虑到408统考越来越注重学科综合能力的考查,本节结合《计算机组成原理》中Cache 的 相关内容,分析虚实地址的变换过程。对于不参加统考的读者,可酌情跳过;对于参加统考但尚 未复习该部分内容的读者,建议先完成相关章节的学习,再回过头来学习本节。
[tag_link]
正确答案:【解答】
2.10 本节小结 上述示例涵盖了从虚拟地址到Cache 查找过程中可能出现的典型情形。完整的地址翻译与数 据访问流程如下:首先查询 TLB; 若 TLB 未命中,则需访问页表以完成虚实地址转换。在此过 程中,若发现所需页面尚未调入主存(页表项无效),则触发缺页中断,从外存调入该页面。随 后,利用所得物理地址访问Cache; 若 Cache 未命中,则进一步从主存读取所需数据。 · 对 于 0x0b1:Cache 组索引为0xc, 标记为0x02。查 Cache 索引为0xc 的行,有效位为0, Cache 未命中,需从主存中读取物理页号为0x2、偏移为0x31处的数据。 · 对 于 0x354:Cache 组索引为5,标记为0x0d。查 Cache 索引为5的行,标记为0d 且有 效位为1,Cache 命中。偏移为0(块0),故虚拟地址0x03d4对应的数据为36H。 物理地址 Cache标记 Cache索引 偏 移 11 10 9 8 7 6 5 4 3 2 1 0 0x354 0 0 1 1 0 1 0 1 0 1 0 0 0x0b1 0 0 0 0 1 0 1 1 0 0 0 1 物理页号 页内偏移 表3.5 物理地址结构 获得主存中页面的物理地址后,需通过该地址访问数据,此时应检查其内容是否在Cache 中, 物理地址结构如表3.5所示。 · 对于0x0229: 组索引为0,TLB 标记为0x02。查 TLB 第0组,无匹配项。再查页表,虚 拟页号为0x08, 对应页表项有效位为0,页面不在主存中,触发缺页中断。 · 对于0x00fl: 组索引为3,TLB 标记为0x00。查 TLB 第3组,无匹配项, TLB 未命中, 转而查询页表。虚拟页号为0x03, 页表第3行有效位为1,表明页面在主存中。物理页 号为0x02(000010), 拼接页内偏移110001,得物理地址为0x0b1 (000010110001)。 地址为0x354(001101010100)。 225第 3 章 内 存 管 理 225 · 对 于 0x03d4: 组索引为3,TLB 标记为0x03。查TLB 第3组,存在标记为03且有效位 为1的项,TLB 命中。对应物理页号为0xOd(001101), 拼接页内偏移010100,得物理 由表3.4可得各地址的虚拟页号、组索引及TLB 标记。接下来需判断对应页面是否已在主存 中;若在主存中,则进一步确定其物理地址。 虚拟地址 T L B 标 记 组 索 引 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0x03d4 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0x00fl 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0x0229 0 0 0 0 1 0 0 0 1 0 1 0 0 1 虚拟页号 页内偏移 表3 .4 虚拟地址结构 首先将十六进制的虚拟地址0x03d4,0x00f¹ 和 0x0229 转换为二进制形式,如表3.4所示。 索引 标记位 有效位 块0 块1 块2 块3 索引 标记位 有效位 块0 块1 块2 块3 0 19 1 99 11 23 11 8 24 1 3A 00 51 89 1 15 0 一 一
一 9 2D 0 一 一 2 1B 1 00 02 04 08 A 2D 1 93 15 DA 3B 3 36 0 一 一 一 一 B 0B 0 一 一 一 一 4 32 1 43 6D 8F 09 C 02 0
5 OD 1 36 72 F0 1D D 16 1 04 96 34 15 6 31 0 一 一 一 一 E 13 1 83 77 1B D3 7 16 1 11 C2 DF 03 F 14 0 一 一 一 表3.3 data Cache 内 容 虚拟 页号 物理 页号 有效位 虚拟 页号 物理 页号 有效位 00 28 1 08 一 0 01 一 0 09 17 1 02 33 1 0A 09 1 03 02 1 0B 一 0 04 一 0 0C 一 0 05 16 1 0D 2D 1 06 0 0E 11 1 07 一 0 0F 0D 1 表3.2 部分页表 索引 标记 位 物理 页号 有效位 标记 位 物理 页号 有效 位 0 03 一 0 09 0D 1 00 一 0 07 02 1 1 03 2D 1 02 一 0 04 一 0 0A 一 0 2 02 一 0 08 一 0 06 一 0 03 一 0 3 07 一 0 03 0D 1 0A 34 1 02 一 0 表3. 1 TLB TLB 、部分页表及data Cache的内容分别见表3.1、表3.2和表3.3。 图3.28 地址结构 TLB标记 TLB组索引虚拟页号 页内偏移(a) 虚拟地址 (b) 物理地址 TLB标记 TLB组索引 虚拟页号 页内偏移 (a) 虚拟地址 (b) 物理地址 16个条目,因此组数为16/4=4,组索引占log24=2 位,虚拟页号的低2位作为组索引、高6位 作为TLB 标记。data Cache 行大小为4B, 故物理地址中最低log₂4=2 位为块内偏移;Cache 共 16组,因此接下来的log₂16=4 位为组索引,剩余高6位为标记。地址结构如图3.28所示。 系统以字节编址,页面大小为64B, 故页内偏移占log₂64=6 位。虚拟地址共14位,故虚拟 页号为14-6=8位;物理地址共12位,故物理页号为12-6=6位。TLB 采用四路组相联,共 要求分析对虚拟地址0x03d4,0x00f1 和 0x0229 的访问过程。 · data Cache采用物理寻址、直接映射方式,行大小为4B, 共16组。 · TLB 采用四路组相联结构,共16个条目; ●页面大小为64B; ●物理地址为12位; ●虚拟地址为14位; ●存储器以字节为编址单位; ●配置一个TLB和一个data Cache; 设某系统满足以下条件: 考虑到408统考越来越注重学科综合能力的考查,本节结合《计算机组成原理》中Cache 的 相关内容,分析虚实地址的变换过程。对于不参加统考的读者,可酌情跳过;对于参加统考但尚 未复习该部分内容的读者,建议先完成相关章节的学习,再回过头来学习本节。
[tag_link]
正确答案:B
2.9 地址翻译的示例 程序编写的局部化程度越高,执行时的缺页率就越低。例如,若数组采用按行存储,则访问 时应尽量按行顺序进行,避免按列访问破坏空间局部性,从而导致缺页率异常升高。 对于已修改的页面(脏页),换出时必须写回磁盘。若采用“每换出一页即写回”的策略, 则会频繁触发磁盘 I/O, 效率极低。为此,系统引入已修改换出页面链表:当脏页被换出时, 暂不写回磁盘,而是挂入该链表;待积累足够数量后,再批量写回磁盘,从而显著减少磁盘 I/O 次数,降低页面换出开销。此外,若某进程在这些页面尚未写回磁盘前再次访问它们,则 可直接从链表中复用,无须重新从外存调入,进一步减少页面换入频率与I/O 开销。 好的页面置换算法能有效降低运行过程中的缺页率。例如,LRU 、CLOCK 等算法通过预测 未来访问行为,优先保留可能被再次访问的页面,从而提升内存命中率,加快页面访问速度。 分配给进程的物理块数越多,缺页率通常越低。然而,当物理块数量超过某一阈值后,继续增 加块数对缺页率的改善趋于平缓。因为此时进程的活跃页面已基本常驻内存,缺页主要由非活跃页 面引发,而这些页面本就无须长期驻留。若再分配更多物理块,则不仅收益甚微,反而造成内存资 源浪费。因此,只需确保活跃页面常驻内存,即可将缺页率有效控制在可接受范围内。 根据局部性原理,页面较大时,单次装入可覆盖更多局部访问区域,从而降低缺页率;而 页面较小时,缺页率则相对较高。较小的页面虽能减少页内碎片、提高内存利用率,但会导致每 个进程所需页面数量增多,导致页表过长,占用大量内存。较大的页面虽可缩短页表长度,却会 增大页内碎片。因此,页面大小的设计需在碎片控制与页表开销之间取得合理平衡。 缺页率是影响虚拟存储器性能的核心因素,而缺页率又受页面大小、分配给进程的物理块 数、页面置换算法、写回磁盘的频率以及程序的局部化程度等多方面影响。 考点追踪▶请求分页系统性能的影响因素分析(2020、2022)
[tag_link]
正确答案:【解答】
2.9 地址翻译的示例 程序编写的局部化程度越高,执行时的缺页率就越低。例如,若数组采用按行存储,则访问 时应尽量按行顺序进行,避免按列访问破坏空间局部性,从而导致缺页率异常升高。 对于已修改的页面(脏页),换出时必须写回磁盘。若采用“每换出一页即写回”的策略, 则会频繁触发磁盘 I/O, 效率极低。为此,系统引入已修改换出页面链表:当脏页被换出时, 暂不写回磁盘,而是挂入该链表;待积累足够数量后,再批量写回磁盘,从而显著减少磁盘 I/O 次数,降低页面换出开销。此外,若某进程在这些页面尚未写回磁盘前再次访问它们,则 可直接从链表中复用,无须重新从外存调入,进一步减少页面换入频率与I/O 开销。 好的页面置换算法能有效降低运行过程中的缺页率。例如,LRU 、CLOCK 等算法通过预测 未来访问行为,优先保留可能被再次访问的页面,从而提升内存命中率,加快页面访问速度。 分配给进程的物理块数越多,缺页率通常越低。然而,当物理块数量超过某一阈值后,继续增 加块数对缺页率的改善趋于平缓。因为此时进程的活跃页面已基本常驻内存,缺页主要由非活跃页 面引发,而这些页面本就无须长期驻留。若再分配更多物理块,则不仅收益甚微,反而造成内存资 源浪费。因此,只需确保活跃页面常驻内存,即可将缺页率有效控制在可接受范围内。 根据局部性原理,页面较大时,单次装入可覆盖更多局部访问区域,从而降低缺页率;而 页面较小时,缺页率则相对较高。较小的页面虽能减少页内碎片、提高内存利用率,但会导致每 个进程所需页面数量增多,导致页表过长,占用大量内存。较大的页面虽可缩短页表长度,却会 增大页内碎片。因此,页面大小的设计需在碎片控制与页表开销之间取得合理平衡。 缺页率是影响虚拟存储器性能的核心因素,而缺页率又受页面大小、分配给进程的物理块 数、页面置换算法、写回磁盘的频率以及程序的局部化程度等多方面影响。 考点追踪▶请求分页系统性能的影响因素分析(2020、2022)
[tag_link]
正确答案:B
2.8 虚拟存储器性能影响因素 由此可见,内存映射文件带来的好处主要有:①使程序员的编程更为简单,已建立映射的 文件,可直接按内存方式进行读/写;②便于多个进程共享同一个磁盘文件。 区域执行写操作后,另一个进程在其映射区域执行读操作时,能够立即看到更新结果——因为二 者访问的是同一块物理内存,数据必然一致,无须额外的复制或同步机制。 223第 3 章 内 存 管 理 223 共享内存 进程1 进程1的虚拟地址空间 图3.27 内存映射文件 共享内存 物理内存 进程2 共享内存 进程2的虚拟地址空间 采用内存映射I/O 的共享内存 进程可通过共享内存实现高效通信。 实践中,这种共享内存往往正是通过将同 一文件映射到多个通信进程的虚拟地址空 间来实现的。此时,尽管各进程的虚拟地 址空间相互独立,但操作系统会通过页表 将它们对应的虚拟页映射到相同的物理页 (见图3.27)。因此,当一个进程在共享 存;当进程退出或显式解除文件映射时, 所有被修改的页面才会被写回磁盘文件。 进程通过该系统调用,将一个文件映射到其虚拟地址空间的某一区域,此后便可像访问内 存一样读/写文件。这种功能将一个文件当作内存中的一个大字符数组来访问,而无须调用传统 的文件I/O 接口,显然更为便捷。磁盘文件的读/写由操作系统负责完成,对进程而言是透明的。 映射时并不会立即加载文件内容,而是在进程首次访问某页面时,才按需将其一页一页地调入内 内存映射文件( Memory-Mapped Files)是操作系统向应用程序提供的一种系统调用机制,它 在磁盘文件与进程的虚拟地址空间之间建立直接映射关系,与虚拟内存机制紧密相关。 考点追踪 内存映射文件的原理与特点(2025)
[tag_link]
正确答案:【解答】
2.8 虚拟存储器性能影响因素 由此可见,内存映射文件带来的好处主要有:①使程序员的编程更为简单,已建立映射的 文件,可直接按内存方式进行读/写;②便于多个进程共享同一个磁盘文件。 区域执行写操作后,另一个进程在其映射区域执行读操作时,能够立即看到更新结果——因为二 者访问的是同一块物理内存,数据必然一致,无须额外的复制或同步机制。 223第 3 章 内 存 管 理 223 共享内存 进程1 进程1的虚拟地址空间 图3.27 内存映射文件 共享内存 物理内存 进程2 共享内存 进程2的虚拟地址空间 采用内存映射I/O 的共享内存 进程可通过共享内存实现高效通信。 实践中,这种共享内存往往正是通过将同 一文件映射到多个通信进程的虚拟地址空 间来实现的。此时,尽管各进程的虚拟地 址空间相互独立,但操作系统会通过页表 将它们对应的虚拟页映射到相同的物理页 (见图3.27)。因此,当一个进程在共享 存;当进程退出或显式解除文件映射时, 所有被修改的页面才会被写回磁盘文件。 进程通过该系统调用,将一个文件映射到其虚拟地址空间的某一区域,此后便可像访问内 存一样读/写文件。这种功能将一个文件当作内存中的一个大字符数组来访问,而无须调用传统 的文件I/O 接口,显然更为便捷。磁盘文件的读/写由操作系统负责完成,对进程而言是透明的。 映射时并不会立即加载文件内容,而是在进程首次访问某页面时,才按需将其一页一页地调入内 内存映射文件( Memory-Mapped Files)是操作系统向应用程序提供的一种系统调用机制,它 在磁盘文件与进程的虚拟地址空间之间建立直接映射关系,与虚拟内存机制紧密相关。 考点追踪 内存映射文件的原理与特点(2025)
[tag_link]
正确答案:B
2.7 内存映射文件 Linux 系统采用3.1.2节介绍的“伙伴算法”对内存中不同长度的连续空闲页框进行统计和管 理。该算法将连续的空闲页框组织为“空闲块”,并按其大小(所含连续页框的数量)分组。分 配页框是一个“化整为零”的过程,会产生外部碎片;因此,系统必须具备将零碎页框重新合并 为较大连续块的能力。Linux 通过伙伴算法的逆操作实现页框回收:当一个页框被释放时,系统 首先检查其是否存在大小相等的伙伴空闲块;若存在,则将二者合并为一个大小翻倍的新空闲块; 随后继续向上检查该新块是否能与其更高一级的伙伴再次合并,直至无法再合并为止。 在 Linux内核中,设置了一个负责页面换出的守护进程kswapd, 它定期检查内存使用情况。 当空闲页框数量低于特定阈值时,便主动发起页框回收操作。之所以不能等到空闲页框完全耗尽 才启动回收,是因为释放某些页框(如脏页)通常需要先将其写回磁盘,而该I/O 操作本身往往 需要临时页框作为缓冲区。若此时系统已无空闲页框,则既无法分配I/O 缓冲区,也无法完成页 面释放,从而可能导致内核陷入内存分配死锁,甚至引发系统崩溃。 当系统可分配的内存不足时,就必须回收部分页框,但并非所有页框都可回收。属于内核的 大部分页框(如内核栈、内核代码段、内核数据段、大部分内核使用的页框)均不可回收;而由 进程使用的页框(如进程代码段、进程数据段、进程堆栈、进程访问文件时映射的文件页、进程 间共享内存所占用的页框)则大多可以回收。
[tag_link]
正确答案:【解答】
2.7 内存映射文件 Linux 系统采用3.1.2节介绍的“伙伴算法”对内存中不同长度的连续空闲页框进行统计和管 理。该算法将连续的空闲页框组织为“空闲块”,并按其大小(所含连续页框的数量)分组。分 配页框是一个“化整为零”的过程,会产生外部碎片;因此,系统必须具备将零碎页框重新合并 为较大连续块的能力。Linux 通过伙伴算法的逆操作实现页框回收:当一个页框被释放时,系统 首先检查其是否存在大小相等的伙伴空闲块;若存在,则将二者合并为一个大小翻倍的新空闲块; 随后继续向上检查该新块是否能与其更高一级的伙伴再次合并,直至无法再合并为止。 在 Linux内核中,设置了一个负责页面换出的守护进程kswapd, 它定期检查内存使用情况。 当空闲页框数量低于特定阈值时,便主动发起页框回收操作。之所以不能等到空闲页框完全耗尽 才启动回收,是因为释放某些页框(如脏页)通常需要先将其写回磁盘,而该I/O 操作本身往往 需要临时页框作为缓冲区。若此时系统已无空闲页框,则既无法分配I/O 缓冲区,也无法完成页 面释放,从而可能导致内核陷入内存分配死锁,甚至引发系统崩溃。 当系统可分配的内存不足时,就必须回收部分页框,但并非所有页框都可回收。属于内核的 大部分页框(如内核栈、内核代码段、内核数据段、大部分内核使用的页框)均不可回收;而由 进程使用的页框(如进程代码段、进程数据段、进程堆栈、进程访问文件时映射的文件页、进程 间共享内存所占用的页框)则大多可以回收。
[tag_link]
正确答案:B
页框回收 页面缓冲算法的优点:①显著降低页面换入/换出频率,大幅减少磁盘I/O 开销;②即使采 用简单的置换策略(如FIFO), 也能获得良好性能,且无须特殊硬件支持,实现简单高效。 上述通过链表管理物理页框、延迟实际 I/O 的机制,即为页框回收的过程。 2)修改页面链表。 当进程需要将一个已修改的页面换出时,系统不会立即写回磁盘,而是 将其所在的页框挂在该链表的末尾。待链表中积累足够数量的脏页后,再批量写回磁盘。 这样不仅降低了写回频率,也减少了因数据缺失而需重新读盘的次数。 避免从磁盘重新读入,有效减少页面换入开销。 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导222 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导
- 空闲页面链表(也称空闲页框链表)。 当进程需要读入一个页面时,系统从该链表头部 取出一个页框,并将目标页面装入其中。若某未被修改的页面需要被换出,则系统并不 将其写回磁盘,而直接将其所在的物理页框挂在空闲链表的末尾。这些页框中仍保留着 原有数据。若后续有进程访问相同页面,则可直接从空闲链表中取下该页框复用,从而 为显著降低页面换入/换出的频率,系统在内存中维护如下两个专用链表。 页面缓冲算法在原页面置换算法的基础上增设一个修改页面链表,保存已修改且需要被换出 的页面,等被换出的页面数量达到一定值时,再批量写回磁盘,以减少页面换出的开销。 3)磁盘内容读入内存的频率。若每次访问缺失页面都需从磁盘重新读取,则会引发高频率 的磁盘I/O, 进而增加页面换入的开销。 2)已修改页面写回磁盘的频率。对于已被修改的页面(脏页),换出时必须写回磁盘。若 采用“每次换出即写回”的策略,则会导致频繁的磁盘I/O 操作。 1)页面置换算法的选择。 一个好的置换算法可有效降低进程运行过程中的缺页率,从而减 少页面换入/换出的频率,显著提升系统性能。 影响页面换入/换出效率的主要因素有如下几种。 在页式虚拟存储系统中,页面换入/换出的开销对系统性能影响显著。
[tag_link]
正确答案:【解答】
页框回收 页面缓冲算法的优点:①显著降低页面换入/换出频率,大幅减少磁盘I/O 开销;②即使采 用简单的置换策略(如FIFO), 也能获得良好性能,且无须特殊硬件支持,实现简单高效。 上述通过链表管理物理页框、延迟实际 I/O 的机制,即为页框回收的过程。 2)修改页面链表。 当进程需要将一个已修改的页面换出时,系统不会立即写回磁盘,而是 将其所在的页框挂在该链表的末尾。待链表中积累足够数量的脏页后,再批量写回磁盘。 这样不仅降低了写回频率,也减少了因数据缺失而需重新读盘的次数。 避免从磁盘重新读入,有效减少页面换入开销。 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导222 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导
- 空闲页面链表(也称空闲页框链表)。 当进程需要读入一个页面时,系统从该链表头部 取出一个页框,并将目标页面装入其中。若某未被修改的页面需要被换出,则系统并不 将其写回磁盘,而直接将其所在的物理页框挂在空闲链表的末尾。这些页框中仍保留着 原有数据。若后续有进程访问相同页面,则可直接从空闲链表中取下该页框复用,从而 为显著降低页面换入/换出的频率,系统在内存中维护如下两个专用链表。 页面缓冲算法在原页面置换算法的基础上增设一个修改页面链表,保存已修改且需要被换出 的页面,等被换出的页面数量达到一定值时,再批量写回磁盘,以减少页面换出的开销。 3)磁盘内容读入内存的频率。若每次访问缺失页面都需从磁盘重新读取,则会引发高频率 的磁盘I/O, 进而增加页面换入的开销。 2)已修改页面写回磁盘的频率。对于已被修改的页面(脏页),换出时必须写回磁盘。若 采用“每次换出即写回”的策略,则会导致频繁的磁盘I/O 操作。 1)页面置换算法的选择。 一个好的置换算法可有效降低进程运行过程中的缺页率,从而减 少页面换入/换出的频率,显著提升系统性能。 影响页面换入/换出效率的主要因素有如下几种。 在页式虚拟存储系统中,页面换入/换出的开销对系统性能影响显著。
[tag_link]
正确答案:B
页面缓冲算法 本节为2025年大纲新增考点。实际上,2012年统考真题第45题已涉及页框回收,其将页框 回收的过程描述为“被系统回收的页框,放入空闲页框链尾,其中内容在下一次分配之前不清空”, 这一描述正是页面缓冲算法中空闲页面链表的定义。因此,本节主要介绍页面缓冲算法。页框回 收算法较为复杂,且主流操作系统教材通常未系统介绍相关内容,其细节多见于深入剖析 Linux 内核的图书,而408考试中出现的概率也极低,因此本书不做介绍。
[tag_link]
正确答案:【解答】
页面缓冲算法 本节为2025年大纲新增考点。实际上,2012年统考真题第45题已涉及页框回收,其将页框 回收的过程描述为“被系统回收的页框,放入空闲页框链尾,其中内容在下一次分配之前不清空”, 这一描述正是页面缓冲算法中空闲页面链表的定义。因此,本节主要介绍页面缓冲算法。页框回 收算法较为复杂,且主流操作系统教材通常未系统介绍相关内容,其细节多见于深入剖析 Linux 内核的图书,而408考试中出现的概率也极低,因此本书不做介绍。
[tag_link]
正确答案:D
2.6 页 框 回 收 假设工作集窗口尺寸4设置为5,则在t₁ 时刻,进程的工作集为{2,3,5};在t₂ 时刻,工作集 为{1,2,3,4}。在实际应用中,工作集窗口通常设置得较大,对于局部性较好的程序,其工作集大 小一般远小于窗口尺寸4。由于工作集反映了进程在随后一段时间内很可能频繁访问的页面集合, 因此驻留集的大小不应小于工作集的大小,否则进程在运行过程中将频繁发生缺页。 考点追踪 工作集的应用分析(2016) 工作集是指在某段时间间隔内,进程实际访问过的页面集合。通常,工 作 集 W 可由时间 t 和工作集窗口尺寸4共同确定。例如,某进程对页面的访问序列如下:
[tag_link]
正确答案:【解答】
2.6 页 框 回 收 假设工作集窗口尺寸4设置为5,则在t₁ 时刻,进程的工作集为{2,3,5};在t₂ 时刻,工作集 为{1,2,3,4}。在实际应用中,工作集窗口通常设置得较大,对于局部性较好的程序,其工作集大 小一般远小于窗口尺寸4。由于工作集反映了进程在随后一段时间内很可能频繁访问的页面集合, 因此驻留集的大小不应小于工作集的大小,否则进程在运行过程中将频繁发生缺页。 考点追踪 工作集的应用分析(2016) 工作集是指在某段时间间隔内,进程实际访问过的页面集合。通常,工 作 集 W 可由时间 t 和工作集窗口尺寸4共同确定。例如,某进程对页面的访问序列如下:
[tag_link]
正确答案:B
工作集 抖动是虚拟存储系统中的严重性能问题,必须加以解决。由于抖动的发生直接源于系统为进 程分配的页框数(驻留集)过少,于是又提出了工作集的概念,用以动态指导页框分配。 系统发生抖动的根本原因在于:分配给进程的物理块数量过少,无法满足其正常运行的基本 需求,导致进程在执行过程中频繁触发缺页中断,不得不反复请求系统将所缺页面调入内存。此 时,磁盘I/O 频率急剧上升,进程的大部分时间都消耗在页面的换入与换出操作上,几乎无法完 成有效计算,进而造成CPU 利用率急剧下降,甚至趋近于零。 考点追踪 抖动的处理措施(2011) 在页面置换过程中,最糟糕的情形是:刚刚换出的页面马上又要换入内存,而刚刚换入的页 面又立即被换出。这种频繁的页面调度行为称为抖动(也称颠簸)。
[tag_link]
正确答案:【解答】
工作集 抖动是虚拟存储系统中的严重性能问题,必须加以解决。由于抖动的发生直接源于系统为进 程分配的页框数(驻留集)过少,于是又提出了工作集的概念,用以动态指导页框分配。 系统发生抖动的根本原因在于:分配给进程的物理块数量过少,无法满足其正常运行的基本 需求,导致进程在执行过程中频繁触发缺页中断,不得不反复请求系统将所缺页面调入内存。此 时,磁盘I/O 频率急剧上升,进程的大部分时间都消耗在页面的换入与换出操作上,几乎无法完 成有效计算,进而造成CPU 利用率急剧下降,甚至趋近于零。 考点追踪 抖动的处理措施(2011) 在页面置换过程中,最糟糕的情形是:刚刚换出的页面马上又要换入内存,而刚刚换入的页 面又立即被换出。这种频繁的页面调度行为称为抖动(也称颠簸)。
[tag_link]
正确答案:B
抖动 *3.2.5 抖动和工作集 操作系统中的页面置换算法普遍遵循一个原则:尽可能保留近期访问过的页面,优先淘汰未 访问过的页面。简单 CLOCK 算法仅依据访问位判断页面是否“被访问过”;而改进型 CLOCK 算法则在此基础上进一步细化:对“未访问过”的页面,优先换出其中未修改者;即使所有页面 均“被访问过”,仍优先选择未修改者换出,以最小化磁盘写回成本。 改进型CLOCK 算法优于简单CLOCK算法之处在于:优先淘汰未修改的页面,从而降低磁 盘I/O 开销。但为定位合适的淘汰页,可能需多轮扫描,算法本身的运行开销相应增加。 零,随后重复第①步;若仍无1类页面,则执行第②步。此时必能找到可淘汰页面。 ③若前两步均失败(所有页面A=1), 则将指针复位至起始位置,并将所有帧的访问位清 ②若第①步失败,则进行第二轮扫描,寻找A=0 且 M=1 的2类页面,将第一个找到的2 类页面作为淘汰页。此轮扫描中,将所有经过的页面的访问位A 置为0。 ①从当前指针位置开始,进行第一轮扫描,寻找A=0 且 M=0 的1类页面,将第一个找到 的1类页面作为淘汰页。此轮扫描不修改任何访问位A。 内存中的每一页必属于这四类页面之一。进行页面置换时,算法采用与简单CLOCK 类似的 循环扫描机制,区别在于该算法需同时检查访问位与修改位,具体步骤如下。 ●4类 (A=1,M =1): 最近已被访问,且已被修改,可能再次被访问。 ●3类 (A=1,M=0): 最近已被访问,但未被修改,可能再次被访问。 ●2类 (A=0,M=1): 最近未被访问,但已被修改,是次佳的淘汰页。 ●1类 (A=0,M=0): 最近未被访问,且未被修改,是最佳的淘汰页。 将一个页面换出时,若该页已被修改,则需将其写回磁盘;若未被修改,则无须写回。可见, 修改过的页面置换代价更高。为降低I/O 开 销 ,改进型 CLOCK 算法在访问位( A) 的基础上,引 入修改位( M) , 综合考虑页面的使用情况与置换代价。在选择淘汰页时,优先考虑既未被访问 过又未被修改的页面。根据(A,M) 的组合,页面可分为以下四类: 改 进CLOCK 算法的应用分析(2016、2021) 考点追踪 改进 CLOCK 算法的思想(2018) (2)改进型CLOCK 算法 (b) 第6次缺页中断缺页中断时替换指针扫描示意图(a) 第5次缺页中断 图3.26 (b) 第6次缺页中断 缺页中断时替换指针扫描示意图 帧3 页2(0)页2(1)页0(0)页1(1)页4(1)页1(0)页1(0)页2(0) 页0(0) 页1( 页2(0) 页2(1) 页0(0) 页1(1) 页4(1) 页1(0) 页1(0) 帧2帧 4 帧2 页3(1)页3(1)页3(1)页7(0) 页3(1) 页3(1) 页3(1) 帧1 存在,每次访问均将对应帧的访问位置为1。当访问1时发生第7次缺页,此时替换指针指向帧4, 且所有帧的访问位均为1,算法再次完成一轮扫描并将访问位清零,故淘汰帧4中的页面2。后续 访问3,已存在,访问位置为1。最后访问2时发生第8次缺页,替换指针指向帧1,帧1的访问位 为1,将其置0后继续扫描,帧2的访问位为0,故淘汰帧2中的页面0,装入页面2。 初始阶段,页面7,0,1,2依次调入,访问位均置为1。随后访问0,已存在,访问位保持为1。 访问3时发生第5次缺页,此时替换指针位于帧1,而所有页框的访问位均为1。算法遂完整扫 描一圈,将各帧访问位清零,指针回到最初的位置(帧1),故淘汰帧1中的页面7,装入页面3, 访问位置为1,如图3.26(a) 所示。接着访问0,已存在,访问位置为1。访问4时发生第6次缺页, 替换指针指向帧2(上次替换位置的下一帧),帧2的访问位为1,将其置0后继续扫描;帧3的 访问位为0,故淘汰帧3中的页面2,装入页面4,如图3.26(b)所示。此后访问2,3,0,3,2,均已 图3.25 CLOCK 算法时的置换图 帧1 1 1 7 1 7 1 7 1 7 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 0 3 1 3 0 帧2 0 1 0 1 0 l 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 2 1 帧3 1 1 1 1 1 1 1 0 1 0 4 1 4 1 4 1 4 1 4 1 4 1 4 0 4 0 4 0 帧4 2 1 2 1 2 0 2 0 2 0 2 1 2 1 2 l 2 l 2 1 1 1 1 1 1 1 缺页否 √ √ √ √ √ √ 访问顺序 7 0 1 2 0 3 0 4 2 3 0 3 2 1 3 2 假设页面访问需列为7,0,1,2,0,3,0,4,2,3,0,3,2,1,3,2,采用简单CLOCK 算 法 ,分配4 个页框,每个页框记录(页面号,访问位),具体过程如图3.25所示。 考点追踪 CLOCK 算法的应用分析(2010) 简单的CLOCK 算法为每个页面设置一个访问位,当某页首次被装入内存或被访问时,其访 问位被置为1。系统将所有页框组织成一个循环队列,并维护一个替换指针,指向当前检查位置。 发生缺页且需置换时,算法按以下规则操作:若指针所指页面的访问位为0,则直接淘汰该页; 若为1,则将其置为0,指针顺移至下一页面,给予该页一次“宽恕”机会——即暂不淘汰,待 后续轮询时再行判断。由于指针在队列中循环移动,形如时钟指针,故称CLOCK 算法。又因其 仅依据“最近是否被使用”这一粗略信息进行决策,也被称为最近未用( NRU) 算法。 (1)简单的CLOCK 算法 LRU 算法的性能接近OPT 算法,但其实现开销较大。因此,操作系统的设计者尝试了许多 算法,试图以较小的开销接近LRU 算法的性能,这类算法统称为CLOCK 算法的变体。
[tag_link]
正确答案:【解答】
抖动 *3.2.5 抖动和工作集 操作系统中的页面置换算法普遍遵循一个原则:尽可能保留近期访问过的页面,优先淘汰未 访问过的页面。简单 CLOCK 算法仅依据访问位判断页面是否“被访问过”;而改进型 CLOCK 算法则在此基础上进一步细化:对“未访问过”的页面,优先换出其中未修改者;即使所有页面 均“被访问过”,仍优先选择未修改者换出,以最小化磁盘写回成本。 改进型CLOCK 算法优于简单CLOCK算法之处在于:优先淘汰未修改的页面,从而降低磁 盘I/O 开销。但为定位合适的淘汰页,可能需多轮扫描,算法本身的运行开销相应增加。 零,随后重复第①步;若仍无1类页面,则执行第②步。此时必能找到可淘汰页面。 ③若前两步均失败(所有页面A=1), 则将指针复位至起始位置,并将所有帧的访问位清 ②若第①步失败,则进行第二轮扫描,寻找A=0 且 M=1 的2类页面,将第一个找到的2 类页面作为淘汰页。此轮扫描中,将所有经过的页面的访问位A 置为0。 ①从当前指针位置开始,进行第一轮扫描,寻找A=0 且 M=0 的1类页面,将第一个找到 的1类页面作为淘汰页。此轮扫描不修改任何访问位A。 内存中的每一页必属于这四类页面之一。进行页面置换时,算法采用与简单CLOCK 类似的 循环扫描机制,区别在于该算法需同时检查访问位与修改位,具体步骤如下。 ●4类 (A=1,M =1): 最近已被访问,且已被修改,可能再次被访问。 ●3类 (A=1,M=0): 最近已被访问,但未被修改,可能再次被访问。 ●2类 (A=0,M=1): 最近未被访问,但已被修改,是次佳的淘汰页。 ●1类 (A=0,M=0): 最近未被访问,且未被修改,是最佳的淘汰页。 将一个页面换出时,若该页已被修改,则需将其写回磁盘;若未被修改,则无须写回。可见, 修改过的页面置换代价更高。为降低I/O 开 销 ,改进型 CLOCK 算法在访问位( A) 的基础上,引 入修改位( M) , 综合考虑页面的使用情况与置换代价。在选择淘汰页时,优先考虑既未被访问 过又未被修改的页面。根据(A,M) 的组合,页面可分为以下四类: 改 进CLOCK 算法的应用分析(2016、2021) 考点追踪 改进 CLOCK 算法的思想(2018) (2)改进型CLOCK 算法 (b) 第6次缺页中断缺页中断时替换指针扫描示意图(a) 第5次缺页中断 图3.26 (b) 第6次缺页中断 缺页中断时替换指针扫描示意图 帧3 页2(0)页2(1)页0(0)页1(1)页4(1)页1(0)页1(0)页2(0) 页0(0) 页1( 页2(0) 页2(1) 页0(0) 页1(1) 页4(1) 页1(0) 页1(0) 帧2帧 4 帧2 页3(1)页3(1)页3(1)页7(0) 页3(1) 页3(1) 页3(1) 帧1 存在,每次访问均将对应帧的访问位置为1。当访问1时发生第7次缺页,此时替换指针指向帧4, 且所有帧的访问位均为1,算法再次完成一轮扫描并将访问位清零,故淘汰帧4中的页面2。后续 访问3,已存在,访问位置为1。最后访问2时发生第8次缺页,替换指针指向帧1,帧1的访问位 为1,将其置0后继续扫描,帧2的访问位为0,故淘汰帧2中的页面0,装入页面2。 初始阶段,页面7,0,1,2依次调入,访问位均置为1。随后访问0,已存在,访问位保持为1。 访问3时发生第5次缺页,此时替换指针位于帧1,而所有页框的访问位均为1。算法遂完整扫 描一圈,将各帧访问位清零,指针回到最初的位置(帧1),故淘汰帧1中的页面7,装入页面3, 访问位置为1,如图3.26(a) 所示。接着访问0,已存在,访问位置为1。访问4时发生第6次缺页, 替换指针指向帧2(上次替换位置的下一帧),帧2的访问位为1,将其置0后继续扫描;帧3的 访问位为0,故淘汰帧3中的页面2,装入页面4,如图3.26(b)所示。此后访问2,3,0,3,2,均已 图3.25 CLOCK 算法时的置换图 帧1 1 1 7 1 7 1 7 1 7 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 0 3 1 3 0 帧2 0 1 0 1 0 l 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 2 1 帧3 1 1 1 1 1 1 1 0 1 0 4 1 4 1 4 1 4 1 4 1 4 1 4 0 4 0 4 0 帧4 2 1 2 1 2 0 2 0 2 0 2 1 2 1 2 l 2 l 2 1 1 1 1 1 1 1 缺页否 √ √ √ √ √ √ 访问顺序 7 0 1 2 0 3 0 4 2 3 0 3 2 1 3 2 假设页面访问需列为7,0,1,2,0,3,0,4,2,3,0,3,2,1,3,2,采用简单CLOCK 算 法 ,分配4 个页框,每个页框记录(页面号,访问位),具体过程如图3.25所示。 考点追踪 CLOCK 算法的应用分析(2010) 简单的CLOCK 算法为每个页面设置一个访问位,当某页首次被装入内存或被访问时,其访 问位被置为1。系统将所有页框组织成一个循环队列,并维护一个替换指针,指向当前检查位置。 发生缺页且需置换时,算法按以下规则操作:若指针所指页面的访问位为0,则直接淘汰该页; 若为1,则将其置为0,指针顺移至下一页面,给予该页一次“宽恕”机会——即暂不淘汰,待 后续轮询时再行判断。由于指针在队列中循环移动,形如时钟指针,故称CLOCK 算法。又因其 仅依据“最近是否被使用”这一粗略信息进行决策,也被称为最近未用( NRU) 算法。 (1)简单的CLOCK 算法 LRU 算法的性能接近OPT 算法,但其实现开销较大。因此,操作系统的设计者尝试了许多 算法,试图以较小的开销接近LRU 算法的性能,这类算法统称为CLOCK 算法的变体。
[tag_link]
正确答案:D
时钟 ( CLOCK) 算法 OPT 算法的性能最好,但无法实现。FIFO 算法实现简单,但忽略局部性,性能较差。LRU 算法性能接近OPT 算法,具有良好的实际效果,但其实现通常需要硬件支持,开销较大。 由图可见,前5次缺页处理的结果与 OPT 算法相同,但这仅是巧合,并无必然联系。实际 上,LRU 算法根据页面过去的使用情况来判断,是“向前看”的;而OPT 算法则根据页面未来 的使用情况来判断,是“向后看”的。而页面过去与未来的走向之间并无必然联系。 图3.24 LRU页面置换算法时的置换图 物理块1 7 7 7 2 2 4 4 4 0 1 1 1 物理块2 0 0 0 0 0 0 3 3 3 0 0 物理块3 1 1 3 3 2 2 2 2 2 7 缺页否 √ √ √ √ √ √ √ √ √ √ √ 访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 仍用上面的例子采用LRU 算法进行置换,如图3.24所示。首次访问页面2时发生缺页,将 最近最久未使用的页面7换出;随后访问页面3时再次缺页,将最近最久未使用的页面1换出。 考点追踪 LRU 算法的应用分析(2009、2015、2019、2025) LRU 算法选择淘汰最近最长时间未使用的页面,其基本思想是:若某页面在过去一段时间内 未被使用,则在近期未来很可能也不会被访问。为实现这一策略,系统需为每个页面维护一个访 问字段,记录其自上次被访问以来所经历的时间,淘汰页面时选择该值最大的页面。
[tag_link]
正确答案:【解答】
时钟 ( CLOCK) 算法 OPT 算法的性能最好,但无法实现。FIFO 算法实现简单,但忽略局部性,性能较差。LRU 算法性能接近OPT 算法,具有良好的实际效果,但其实现通常需要硬件支持,开销较大。 由图可见,前5次缺页处理的结果与 OPT 算法相同,但这仅是巧合,并无必然联系。实际 上,LRU 算法根据页面过去的使用情况来判断,是“向前看”的;而OPT 算法则根据页面未来 的使用情况来判断,是“向后看”的。而页面过去与未来的走向之间并无必然联系。 图3.24 LRU页面置换算法时的置换图 物理块1 7 7 7 2 2 4 4 4 0 1 1 1 物理块2 0 0 0 0 0 0 3 3 3 0 0 物理块3 1 1 3 3 2 2 2 2 2 7 缺页否 √ √ √ √ √ √ √ √ √ √ √ 访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 仍用上面的例子采用LRU 算法进行置换,如图3.24所示。首次访问页面2时发生缺页,将 最近最久未使用的页面7换出;随后访问页面3时再次缺页,将最近最久未使用的页面1换出。 考点追踪 LRU 算法的应用分析(2009、2015、2019、2025) LRU 算法选择淘汰最近最长时间未使用的页面,其基本思想是:若某页面在过去一段时间内 未被使用,则在近期未来很可能也不会被访问。为实现这一策略,系统需为每个页面维护一个访 问字段,记录其自上次被访问以来所经历的时间,淘汰页面时选择该值最大的页面。
[tag_link]
正确答案:B
最近最久未使用 ( LRU ) 算法 只有FIFO 算法可能出现 Belady 异常,而OPT 算法和 LRU 算法永远不会出现此类异常。 图3.23 Belady 异常 物理块1 3 3 3 0 0 0 4 4 4 物理块2 2 2 2 3 3 3 1 1 物理块3 1 1 1 2 2 2 0 缺页否 √ √ √ √ √ 物理块1。 3 3 3 3 4 4 4 4 0 0 物理块2. 2 2 2 2 3 3 3 3 4 物理块3。 1 1 1 1 2 2 2 2 物理块4. 0 0 0 0 1 1 1 缺页否 √ √ √ √ √ √ √ √ √ √ 访问页面 0 2 值得注意的是,FIFO 算法存在一种反直觉现象:当为进程分配的物理块数增加时,缺页次 数反而可能上升,这一现象称为Belady 异常。其根本原因在于FIFO 仅依据调入时间决策,而忽 略了页面的实际使用情况。例如,页面访问需列为3,2,1,0,3,2,4,3,2,1,0,4,当分配3个物理 块时,缺页次数为9次;当分配4个物理块时,缺页次数反而增至10次,如图3.23所示。 图3.22 FIFO 算法的置换图 物理块1 7 7 7 2 2 2 4 4 4 0 0 0 7 7 7 物理块2 0 0 0 3 3 3 2 2 2 1 1 1 0 0 物理块3 1 1 1 0 0 0 3 3 3 2 2 2 1 缺页否 √ √ √ √ √ √ √ √ √ √ 访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 仍用上面的例子,采用FIFO 算法进行置换。当访问页面2时发生缺页,淘汰最早进入的页 面7。随后访问页面3时再次缺页,此时将2,0,1中最先进入的页面0换出……以此类推,具体 过程如图3.22所示。可见,共发生15次缺页中断,其中12次触发页面置换。 考点追踪 FIFO 算法的应用分析(2010) 先进先出页面置换算法选择淘汰最早进入内存的页面。该算法实现简单,将内存中的页面按 调入时间组织成一个队列,需要换出时直接移除队首页面。然而,FIFO 算法未利用局部性原理, 与进程实际运行规律不符,最早装入的页面仍可能被频繁访问,因此性能通常较差。
[tag_link]
正确答案:【解答】
最近最久未使用 ( LRU ) 算法 只有FIFO 算法可能出现 Belady 异常,而OPT 算法和 LRU 算法永远不会出现此类异常。 图3.23 Belady 异常 物理块1 3 3 3 0 0 0 4 4 4 物理块2 2 2 2 3 3 3 1 1 物理块3 1 1 1 2 2 2 0 缺页否 √ √ √ √ √ 物理块1。 3 3 3 3 4 4 4 4 0 0 物理块2. 2 2 2 2 3 3 3 3 4 物理块3。 1 1 1 1 2 2 2 2 物理块4. 0 0 0 0 1 1 1 缺页否 √ √ √ √ √ √ √ √ √ √ 访问页面 0 2 值得注意的是,FIFO 算法存在一种反直觉现象:当为进程分配的物理块数增加时,缺页次 数反而可能上升,这一现象称为Belady 异常。其根本原因在于FIFO 仅依据调入时间决策,而忽 略了页面的实际使用情况。例如,页面访问需列为3,2,1,0,3,2,4,3,2,1,0,4,当分配3个物理 块时,缺页次数为9次;当分配4个物理块时,缺页次数反而增至10次,如图3.23所示。 图3.22 FIFO 算法的置换图 物理块1 7 7 7 2 2 2 4 4 4 0 0 0 7 7 7 物理块2 0 0 0 3 3 3 2 2 2 1 1 1 0 0 物理块3 1 1 1 0 0 0 3 3 3 2 2 2 1 缺页否 √ √ √ √ √ √ √ √ √ √ 访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 仍用上面的例子,采用FIFO 算法进行置换。当访问页面2时发生缺页,淘汰最早进入的页 面7。随后访问页面3时再次缺页,此时将2,0,1中最先进入的页面0换出……以此类推,具体 过程如图3.22所示。可见,共发生15次缺页中断,其中12次触发页面置换。 考点追踪 FIFO 算法的应用分析(2010) 先进先出页面置换算法选择淘汰最早进入内存的页面。该算法实现简单,将内存中的页面按 调入时间组织成一个队列,需要换出时直接移除队首页面。然而,FIFO 算法未利用局部性原理, 与进程实际运行规律不符,最早装入的页面仍可能被频繁访问,因此性能通常较差。
[tag_link]
正确答案:B
先进先出 ( FIFO) 算法 可见,整个过程中共发生9次缺页中断,其中6次触发页面置换(不算初始装入)。 图3.21 利用最佳置换算法时的置换图 物理块1 7 7 7 2 2 2 2 2 7 物理块2 0 0 0 0 4 0 0 0 物理块3 1 1 3 3 3 1 1 缺页否 √ √ √ √ √ √ √ √ 访问页面 0 1 进程运行时,首先将页面7,0,1依次装入内存。当访问页面2时,发生缺页中断。根据OPT 算法,选择未来最久才被再次访问的页面(页面7的下一次访问在第18次,远晚于其他页面) 淘汰。随后访问页面0时,因其已在内存中,不产生缺页。访问页面3时再次缺页,此时页面1 的下次访问(第14次)最晚,故将其淘汰……以此类推,具体过程如图3.21所示。 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 假定系统为某进程分配了三个物理块,并给定如下页面访问序列: 最佳页面置换算法在发生缺页时,选择淘汰以后永不使用或在最长时间内不再被访问的 页面,从而在理论上获得最低的缺页率。然而,由于操作系统无法预知未来的页面访问序列, 该算法在实际系统中无法实现。尽管如此, OPT 算法仍具有重要的理论意义,常用于评价其 他算法。
[tag_link]
正确答案:【解答】
先进先出 ( FIFO) 算法 可见,整个过程中共发生9次缺页中断,其中6次触发页面置换(不算初始装入)。 图3.21 利用最佳置换算法时的置换图 物理块1 7 7 7 2 2 2 2 2 7 物理块2 0 0 0 0 4 0 0 0 物理块3 1 1 3 3 3 1 1 缺页否 √ √ √ √ √ √ √ √ 访问页面 0 1 进程运行时,首先将页面7,0,1依次装入内存。当访问页面2时,发生缺页中断。根据OPT 算法,选择未来最久才被再次访问的页面(页面7的下一次访问在第18次,远晚于其他页面) 淘汰。随后访问页面0时,因其已在内存中,不产生缺页。访问页面3时再次缺页,此时页面1 的下次访问(第14次)最晚,故将其淘汰……以此类推,具体过程如图3.21所示。 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 假定系统为某进程分配了三个物理块,并给定如下页面访问序列: 最佳页面置换算法在发生缺页时,选择淘汰以后永不使用或在最长时间内不再被访问的 页面,从而在理论上获得最低的缺页率。然而,由于操作系统无法预知未来的页面访问序列, 该算法在实际系统中无法实现。尽管如此, OPT 算法仍具有重要的理论意义,常用于评价其 他算法。
[tag_link]
正确答案:B
最 佳( OPT) 算法 常见的页面置换算法有以下四种。 考点追踪 各种页面置换算法的特点(2014) 进程运行时,若其访问的页面不在内存中,需将其调入,但内存又无空闲页框,则必须从内 存中换出一页至外存。选择换出哪一页的算法称为页面置换算法。由于页面的换入与换出均涉及 磁盘I/O, 开销较大,因此, 一个好的页面置换算法应致力于降低缺页率。
[tag_link]
正确答案:【解答】
最 佳( OPT) 算法 常见的页面置换算法有以下四种。 考点追踪 各种页面置换算法的特点(2014) 进程运行时,若其访问的页面不在内存中,需将其调入,但内存又无空闲页框,则必须从内 存中换出一页至外存。选择换出哪一页的算法称为页面置换算法。由于页面的换入与换出均涉及 磁盘I/O, 开销较大,因此, 一个好的页面置换算法应致力于降低缺页率。
[tag_link]
正确答案:D
2.4 页面置换算法 当进程访问的页面不在内存中时(页表项的存在位为0),CPU 会触发缺页中断。中断响应 后,系统转入缺页中断处理程序。该程序首先通过页表项获取该页在外存中的地址,然后判断内 存是否已满:若内存未满,则分配一个空闲页框,发起磁盘I/O 将所缺页面调入,并更新页表项: 填写物理块号,置存在位为1;若内存已满,则先按某种置换算法选出一页准备换出。若该页的 修改位为0,则直接丢弃;若修改位为1,则需先将其写回对换区,再释放该页框。随后,将所 缺页面调入该页框,并更新页表项,置存在位为1。调入完成后,进程即可通过更新后的页表生 成正确的物理地址。整个页面调入过程对用户完全透明,由操作系统自动完成。
[tag_link]
正确答案:【解答】
2.4 页面置换算法 当进程访问的页面不在内存中时(页表项的存在位为0),CPU 会触发缺页中断。中断响应 后,系统转入缺页中断处理程序。该程序首先通过页表项获取该页在外存中的地址,然后判断内 存是否已满:若内存未满,则分配一个空闲页框,发起磁盘I/O 将所缺页面调入,并更新页表项: 填写物理块号,置存在位为1;若内存已满,则先按某种置换算法选出一页准备换出。若该页的 修改位为0,则直接丢弃;若修改位为1,则需先将其写回对换区,再释放该页框。随后,将所 缺页面调入该页框,并更新页表项,置存在位为1。调入完成后,进程即可通过更新后的页表生 成正确的物理地址。整个页面调入过程对用户完全透明,由操作系统自动完成。
[tag_link]
正确答案:B
如何调入页面 3) UNIX 方式。与进程相关的文件始终保留在文件区。因此,未运行过的页面从文件区 调入;曾经运行过但已被换出的页面则存放在对换区,后续调入时从对换区读取。若 多个进程共享同一页面,则只要该页面已在内存中,其他进程便可直接复用,无须重 复调入。 2)系统对换区空间不足。对于不会被修改的页面,直接从文件区调入;当换出此类页面时, 因其内容未变,无须写回磁盘。而对于可能被修改的页面,换出时必须保存到对换区, 后续调入时也需从对换区读取,从而兼顾效率与正确性。 1)系统拥有足够的对换区空间。此时可将所有页面从对换区调入,以提高调页速度。为此, 需在进程运行前,将与该进程相关的文件从文件区复制到对换区。 请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放换出页面的对换区, 也称交换区。对换区采用连续分配方式,而文件区采用离散分配方式,因此对换区的磁盘I/O 速 度通常快于文件区。这样,系统在发生缺页时,调入页面的来源可分为以下三种情况。
[tag_link]
正确答案:【解答】
如何调入页面 3) UNIX 方式。与进程相关的文件始终保留在文件区。因此,未运行过的页面从文件区 调入;曾经运行过但已被换出的页面则存放在对换区,后续调入时从对换区读取。若 多个进程共享同一页面,则只要该页面已在内存中,其他进程便可直接复用,无须重 复调入。 2)系统对换区空间不足。对于不会被修改的页面,直接从文件区调入;当换出此类页面时, 因其内容未变,无须写回磁盘。而对于可能被修改的页面,换出时必须保存到对换区, 后续调入时也需从对换区读取,从而兼顾效率与正确性。 1)系统拥有足够的对换区空间。此时可将所有页面从对换区调入,以提高调页速度。为此, 需在进程运行前,将与该进程相关的文件从文件区复制到对换区。 请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放换出页面的对换区, 也称交换区。对换区采用连续分配方式,而文件区采用离散分配方式,因此对换区的磁盘I/O 速 度通常快于文件区。这样,系统在发生缺页时,调入页面的来源可分为以下三种情况。
[tag_link]
正确答案:A
从何处调入页面 预调页本质上是在进程运行前完成页面加载,而请求调页则是在运行期间动态调入。 2)请求调页策略。 当进程在运行中访问的页面不在内存时,便会触发缺页中断,由系统将 其所需页面调入内存。这种策略调入的页面必然会被访问,且实现相对简单,因此当前 的虚拟存储器大多采用此策略。其缺点是每次仅调入一页,导致磁盘I/O 开销较大。 1)预调页策略。 根据局部性原理,一次调入若干相邻页面通常比逐页调入更高效。然而, 若预调入的页面大多未被访问,则会造成内存浪费。因此,系统可尝试预测进程近期可 能访问的页面并预先调入,但目前预测成功率仅约50%。鉴于预测效果有限,该策略主 要用于进程首次调入时,由程序员显式指定应优先加载的页面。 为确定系统将进程运行时所缺页面调入内存的时机,可采用以下两种调页策略。
[tag_link]
正确答案:【解答】
从何处调入页面 预调页本质上是在进程运行前完成页面加载,而请求调页则是在运行期间动态调入。 2)请求调页策略。 当进程在运行中访问的页面不在内存时,便会触发缺页中断,由系统将 其所需页面调入内存。这种策略调入的页面必然会被访问,且实现相对简单,因此当前 的虚拟存储器大多采用此策略。其缺点是每次仅调入一页,导致磁盘I/O 开销较大。 1)预调页策略。 根据局部性原理,一次调入若干相邻页面通常比逐页调入更高效。然而, 若预调入的页面大多未被访问,则会造成内存浪费。因此,系统可尝试预测进程近期可 能访问的页面并预先调入,但目前预测成功率仅约50%。鉴于预测效果有限,该策略主 要用于进程首次调入时,由程序员显式指定应优先加载的页面。 为确定系统将进程运行时所缺页面调入内存的时机,可采用以下两种调页策略。
[tag_link]
正确答案:B
调入页面的时机 3)优先权分配算法,为重要或紧迫的进程分配更多页框。 通常的做法是将所有可分配页框 分为两部分:一部分按比例分配给各进程,另一部分则依据进程的优先权动态分配。 2)按比例分配算法,根据进程的逻辑地址空间大小按比例分配页框。 1)平均分配算法,将系统中所有可供分配的页框平均分配给各个进程。 在采用固定分配策略时,系统需将空闲页框分配给各进程,常见的分配算法如下。
[tag_link]
正确答案:【解答】
调入页面的时机 3)优先权分配算法,为重要或紧迫的进程分配更多页框。 通常的做法是将所有可分配页框 分为两部分:一部分按比例分配给各进程,另一部分则依据进程的优先权动态分配。 2)按比例分配算法,根据进程的逻辑地址空间大小按比例分配页框。 1)平均分配算法,将系统中所有可供分配的页框平均分配给各个进程。 在采用固定分配策略时,系统需将空闲页框分配给各进程,常见的分配算法如下。
[tag_link]
正确答案:B
页框调入算法 页面分配策略曾在2015年统考选择题中出现过,考查的正是这三种策略的名称。不少考生 因误判其为非重点内容,复习时一带而过,最终在考试中失分。而在这种基础题上失分,实属可 惜。再次提醒读者,考研成功的秘诀在于“全面”和“反复多次”。 系统初始为每个进程分配一定数量的页框;当某进程发生缺页时,仅允许从其自身已分配的 页框中选择一页换出,因此不会影响其他进程的运行。此外,系统还根据进程的缺页率动态调整 其驻留集大小:若缺页率过高,表明当前页框不足,则为其增加若干页框;若缺页率过低,说明 存在资源冗余,则可适当回收部分页框,但需确保不会引发缺页率的显著上升。该策略在有效抑 制进程频繁调页的同时,兼顾了系统的多道程序并发能力。尽管其实现机制较为复杂、运行开销 较大,但相比因频繁换入/换出所消耗的磁盘I/O 与 CPU 资源,这一开销无疑是值得的。 (3)可变分配局部置换 所谓可变分配,是指初始时为每个进程分配一定数量的页框,并在运行期间根据需要动态调 整。所谓全局置换,是指当进程发生缺页时,系统首先从空闲页框队列中取出一个页框分配给该 进程,并将所缺页面调入;若空闲页框已耗尽,则允许从内存所有页框中选择一个换出,而不论 其归属哪个进程。该方法比固定分配局部置换更为灵活,能够动态扩充进程的驻留集以更好地适 应运行需求。然而,由于每次缺页都会为其分配新页框,若缺乏有效调控,则某些活跃进程的驻 留集可能持续膨胀,不断抢占其他进程的页框,进而削弱系统的多道程序并发能力。 (2)可变分配全局置换 理论上可形成四种组合,但由于固定分配要求进程的页框数量保持不变,而全局置换会导致进程的 页框数量发生变化,二者互斥,因此实际可行的策略仅有三种。 注 意 注 意 调入,从而维持其驻留集大小恒定。该策略的难点在于:若初始分配的页框太少,则进程将频繁 缺页;若分配过多,则不仅浪费内存资源,还会减少系统可容纳的并发进程数。 所谓固定分配,是指为每个进程分配固定数量的页框,并在其运行期间保持不变。所谓局部 置换,是指当进程发生缺页时,只能从该进程自身已分配的页框中选择一页换出,再将所缺页面 (1)固定分配局部置换 考点追踪 页面分配与置换策略的名称(2015) 在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也 可采取两种策略,即全局和局部置换。于是可组合出以下三种适用的策略。
[tag_link]
正确答案:【解答】
页框调入算法 页面分配策略曾在2015年统考选择题中出现过,考查的正是这三种策略的名称。不少考生 因误判其为非重点内容,复习时一带而过,最终在考试中失分。而在这种基础题上失分,实属可 惜。再次提醒读者,考研成功的秘诀在于“全面”和“反复多次”。 系统初始为每个进程分配一定数量的页框;当某进程发生缺页时,仅允许从其自身已分配的 页框中选择一页换出,因此不会影响其他进程的运行。此外,系统还根据进程的缺页率动态调整 其驻留集大小:若缺页率过高,表明当前页框不足,则为其增加若干页框;若缺页率过低,说明 存在资源冗余,则可适当回收部分页框,但需确保不会引发缺页率的显著上升。该策略在有效抑 制进程频繁调页的同时,兼顾了系统的多道程序并发能力。尽管其实现机制较为复杂、运行开销 较大,但相比因频繁换入/换出所消耗的磁盘I/O 与 CPU 资源,这一开销无疑是值得的。 (3)可变分配局部置换 所谓可变分配,是指初始时为每个进程分配一定数量的页框,并在运行期间根据需要动态调 整。所谓全局置换,是指当进程发生缺页时,系统首先从空闲页框队列中取出一个页框分配给该 进程,并将所缺页面调入;若空闲页框已耗尽,则允许从内存所有页框中选择一个换出,而不论 其归属哪个进程。该方法比固定分配局部置换更为灵活,能够动态扩充进程的驻留集以更好地适 应运行需求。然而,由于每次缺页都会为其分配新页框,若缺乏有效调控,则某些活跃进程的驻 留集可能持续膨胀,不断抢占其他进程的页框,进而削弱系统的多道程序并发能力。 (2)可变分配全局置换 理论上可形成四种组合,但由于固定分配要求进程的页框数量保持不变,而全局置换会导致进程的 页框数量发生变化,二者互斥,因此实际可行的策略仅有三种。 注 意 注 意 调入,从而维持其驻留集大小恒定。该策略的难点在于:若初始分配的页框太少,则进程将频繁 缺页;若分配过多,则不仅浪费内存资源,还会减少系统可容纳的并发进程数。 所谓固定分配,是指为每个进程分配固定数量的页框,并在其运行期间保持不变。所谓局部 置换,是指当进程发生缺页时,只能从该进程自身已分配的页框中选择一页换出,再将所缺页面 (1)固定分配局部置换 考点追踪 页面分配与置换策略的名称(2015) 在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也 可采取两种策略,即全局和局部置换。于是可组合出以下三种适用的策略。
[tag_link]
正确答案:B
内存分配策略 2)驻留集过大,当分配给进程的页框数超过某一阈值后,继续增加页框对缺页率的改善趋 于平缓,不仅浪费内存资源,还会因可用页框总量减少而降低系统的整体并发能力。
- 驻留集过小,内存中可容纳的进程数量增多,有助于提高多道程序的并发度;但每个进 程获得的页框过少,将导致缺页率显著升高,CPU 需耗费大量时间处理缺页中断。 在页式虚拟存储系统中,进程启动时既不需要、也不可能将其所有页面装入内存。因此,操 作系统必须决定为该进程分配多少页框——这一集合即称为该进程的驻留集。驻留集大小的选择 需在系统并发度与缺页开销之间进行权衡,具体体现在以下两个方面: (2)驻留集大小 最小页框数(也称最小物理块数)是指能保证进程正常运行所需的最少页框数量。若系统为 进程分配的页框数少于此值,则进程将无法执行。进程应获得的最小页框数与计算机的硬件结构 有关,具体取决于指令的格式、功能和寻址方式。例如,对于采用单地址指令和直接寻址的简单 机器,最小页框数为2:一个用于存放指令,另一个用于存放数据。若支持间接寻址,则至少需 要3个页框:分别用于存放指令、指针和数据。对于功能较强的机器,若一条指令及其两个操作 数各自跨越两个页面,则在最坏情况下,该指令执行过程中可能涉及6个不同的页面。因此,应 至少为每个进程分配6个页框,以确保这些页面能同时驻留内存,顺利完成指令执行。 考点追踪 最小物理块数的确定原则(2025) (1)最小页框数
[tag_link]
正确答案:【解答】
内存分配策略 2)驻留集过大,当分配给进程的页框数超过某一阈值后,继续增加页框对缺页率的改善趋 于平缓,不仅浪费内存资源,还会因可用页框总量减少而降低系统的整体并发能力。
- 驻留集过小,内存中可容纳的进程数量增多,有助于提高多道程序的并发度;但每个进 程获得的页框过少,将导致缺页率显著升高,CPU 需耗费大量时间处理缺页中断。 在页式虚拟存储系统中,进程启动时既不需要、也不可能将其所有页面装入内存。因此,操 作系统必须决定为该进程分配多少页框——这一集合即称为该进程的驻留集。驻留集大小的选择 需在系统并发度与缺页开销之间进行权衡,具体体现在以下两个方面: (2)驻留集大小 最小页框数(也称最小物理块数)是指能保证进程正常运行所需的最少页框数量。若系统为 进程分配的页框数少于此值,则进程将无法执行。进程应获得的最小页框数与计算机的硬件结构 有关,具体取决于指令的格式、功能和寻址方式。例如,对于采用单地址指令和直接寻址的简单 机器,最小页框数为2:一个用于存放指令,另一个用于存放数据。若支持间接寻址,则至少需 要3个页框:分别用于存放指令、指针和数据。对于功能较强的机器,若一条指令及其两个操作 数各自跨越两个页面,则在最坏情况下,该指令执行过程中可能涉及6个不同的页面。因此,应 至少为每个进程分配6个页框,以确保这些页面能同时驻留内存,顺利完成指令执行。 考点追踪 最小物理块数的确定原则(2025) (1)最小页框数
[tag_link]
正确答案:B
最小页框数与驻留集 在为进程分配内存时,主要涉及以下问题:① 为保证进程能正常运行,所需最小页框数的 确定;②为每个进程分配页框时,所分配的页框是固定的还是可变的;③在为不同进程分配页 框时,是采用平均分配还是按进程大小比例分配。本节将围绕这些问题展开讨论。
[tag_link]
正确答案:【解答】
最小页框数与驻留集 在为进程分配内存时,主要涉及以下问题:① 为保证进程能正常运行,所需最小页框数的 确定;②为每个进程分配页框时,所分配的页框是固定的还是可变的;③在为不同进程分配页 框时,是采用平均分配还是按进程大小比例分配。本节将围绕这些问题展开讨论。
[tag_link]
正确答案:D
2.3 页框分配 ④将获得的物理块号与页内地址拼接,形成物理地址,用于访存。 ③若页面不在内存,则触发缺页中断。操作系统接管后,将所需页面从外存调入内存(必要 时先换出一页),并更新页表和快表。随后,重新执行地址变换以获取物理块号。 ②若快表未命中,则需访问页表。若该页已在内存中(状态位=1),则从相应表项中取出 物理块号,并将该页表项装入快表;若快表已满,则按置换算法淘汰一项。 ①首先检索快表,若命中,则从相应表项中取出该页的物理块号,并置访问位为1,以供置 换算法换出页面时参考。对于写操作,还需置修改位为1。 分页系统的地址变换过程及分析(2009、2010、2014、2024) 请求分页系统的地址变换过程如下。 第 3 章 内 存 管 理215 第 3 章 内 存 管 理 图3.20 请求分页中的地址变换过程 开始二页号>页表长度?否↓CPU检索快表否页表项在快表中?访问页表页在内存?是上修改快表0S 命令CPU 从外存读缺页修改访问位和修改位启动I/O硬件形成物理地址将一页从外存换入内存地址变换结束保留CPU现场从外存中找到缺页内存满否?是 选择一页换出该页被修改否? 是将该页写回外存程序请求访问一页越界中断修改页表否是否是 开始二 页号>页表长度? 否↓ CPU检索快表 否 页表项在快表中? 访问页表 页在内存? 是上 修改快表 0S 命令CPU 从外存读缺页 修改访问位和修改位 启动I/O硬件 形成物理地址 将一页从外存换入内存 地址变换结束 保留CPU现场 从外存中找到缺页 内存满否? 是 选择一页换出 该页被修改否? 是 将该页写回外存 程序请求访问一页 越界中断 修改页表 否 是 否 是 在基本分页系统地址变换机构的基础上,请求分页系统为支持虚拟存储器,增加了缺页中断 触发机制。请求分页系统的地址变换过程如图3.20所示。
[tag_link]
正确答案:【解答】
2.3 页框分配 ④将获得的物理块号与页内地址拼接,形成物理地址,用于访存。 ③若页面不在内存,则触发缺页中断。操作系统接管后,将所需页面从外存调入内存(必要 时先换出一页),并更新页表和快表。随后,重新执行地址变换以获取物理块号。 ②若快表未命中,则需访问页表。若该页已在内存中(状态位=1),则从相应表项中取出 物理块号,并将该页表项装入快表;若快表已满,则按置换算法淘汰一项。 ①首先检索快表,若命中,则从相应表项中取出该页的物理块号,并置访问位为1,以供置 换算法换出页面时参考。对于写操作,还需置修改位为1。 分页系统的地址变换过程及分析(2009、2010、2014、2024) 请求分页系统的地址变换过程如下。 第 3 章 内 存 管 理215 第 3 章 内 存 管 理 图3.20 请求分页中的地址变换过程 开始二页号>页表长度?否↓CPU检索快表否页表项在快表中?访问页表页在内存?是上修改快表0S 命令CPU 从外存读缺页修改访问位和修改位启动I/O硬件形成物理地址将一页从外存换入内存地址变换结束保留CPU现场从外存中找到缺页内存满否?是 选择一页换出该页被修改否? 是将该页写回外存程序请求访问一页越界中断修改页表否是否是 开始二 页号>页表长度? 否↓ CPU检索快表 否 页表项在快表中? 访问页表 页在内存? 是上 修改快表 0S 命令CPU 从外存读缺页 修改访问位和修改位 启动I/O硬件 形成物理地址 将一页从外存换入内存 地址变换结束 保留CPU现场 从外存中找到缺页 内存满否? 是 选择一页换出 该页被修改否? 是 将该页写回外存 程序请求访问一页 越界中断 修改页表 否 是 否 是 在基本分页系统地址变换机构的基础上,请求分页系统为支持虚拟存储器,增加了缺页中断 触发机制。请求分页系统的地址变换过程如图3.20所示。
[tag_link]
正确答案:B
地址变换机构 ·一条指令在执行过程中可能引发多次缺页中断。例如,在执行指令copy A to B时,若该 指令本身及其两个操作数各自跨越两个页面,则最多可能引发6次缺页中断。 ●在指令执行期间触发,由当前指令的地址访问直接引发,而非在指令执行完毕之后。 缺页中断作为一种内中断,其处理过程与其他中断类似,也需经历保护 CPU 现场、分析中 断原因、转入中断处理程序、恢复CPU 现场等步骤。然而,它具有以下两个显著特点: 在请求分页系统中,当进程访问的页面尚未调入内存时,硬件会自动触发缺页中断,由操作 系统的缺页中断处理程序处理:将所需页面从外存调入内存(必要时先换出一页)。具体而言, 若内存中有空闲页框,则分配一个页框,将所缺页面从外存装入,并更新页表中相应的表项;若 无空闲页框,则需先由页面置换算法选择一个页面淘汰,若该页在内存中被修改过,则必须将其 写回外存,否则可直接丢弃。由于页面调入通常涉及较长时间的磁盘I/O 操作,系统在此期间可 能会调度其他进程运行;待所需页面调入完成后,重新执行引发缺页的那条指令。 考点追踪 缺页异常导致进程状态的变化(2023) 考点追踪 缺页处理的过程及效率分析(2011、2013、2014、2020、2022)
[tag_link]
正确答案:【解答】
地址变换机构 ·一条指令在执行过程中可能引发多次缺页中断。例如,在执行指令copy A to B时,若该 指令本身及其两个操作数各自跨越两个页面,则最多可能引发6次缺页中断。 ●在指令执行期间触发,由当前指令的地址访问直接引发,而非在指令执行完毕之后。 缺页中断作为一种内中断,其处理过程与其他中断类似,也需经历保护 CPU 现场、分析中 断原因、转入中断处理程序、恢复CPU 现场等步骤。然而,它具有以下两个显著特点: 在请求分页系统中,当进程访问的页面尚未调入内存时,硬件会自动触发缺页中断,由操作 系统的缺页中断处理程序处理:将所需页面从外存调入内存(必要时先换出一页)。具体而言, 若内存中有空闲页框,则分配一个页框,将所缺页面从外存装入,并更新页表中相应的表项;若 无空闲页框,则需先由页面置换算法选择一个页面淘汰,若该页在内存中被修改过,则必须将其 写回外存,否则可直接丢弃。由于页面调入通常涉及较长时间的磁盘I/O 操作,系统在此期间可 能会调度其他进程运行;待所需页面调入完成后,重新执行引发缺页的那条指令。 考点追踪 缺页异常导致进程状态的变化(2023) 考点追踪 缺页处理的过程及效率分析(2011、2013、2014、2020、2022)
[tag_link]
正确答案:B
缺页中断机构 ●外存地址。指示该页在外存中的存放位置 (通常为物理块号),供调页时将其读入内存。 ●修改位M ( 脏 位 ) 。标记该页调入内存后是否被修改过,以决定换出时是否需写回外存。 ●访问字段A。记录本页在一段时间内的访问次数,或记录自上次访问以来的时间间隔,供 页面置换算法选择换出页面时参考。 ●状态位P ( 存在位)。标记该页是否已调入内存,供地址变换时判断是否触发缺页中断。 各新增字段的说明如下: 图3.19 请求分页系统中的页表项 页 号 物理块号 状态位P 访问字段A 修改位M 外存地址 相比于基本分页系统,请求分页系统中的页表需提供更多信息,以支持请求调页和页面置 换。具体而言,操作系统必须能够:①判断某页是否已调入内存;②若尚未调入,则还需获 知该页在外存中的存放位置;③在页面置换时,依据访问特征选择合适的换出页面;④对于 要换出的页面,还需知道其是否被修改过,以决定是否需写回外存。为此,请求分页的页表项 在基本结构基础上增加了四个字段,如图3.19所示。
[tag_link]
正确答案:【解答】
缺页中断机构 ●外存地址。指示该页在外存中的存放位置 (通常为物理块号),供调页时将其读入内存。 ●修改位M ( 脏 位 ) 。标记该页调入内存后是否被修改过,以决定换出时是否需写回外存。 ●访问字段A。记录本页在一段时间内的访问次数,或记录自上次访问以来的时间间隔,供 页面置换算法选择换出页面时参考。 ●状态位P ( 存在位)。标记该页是否已调入内存,供地址变换时判断是否触发缺页中断。 各新增字段的说明如下: 图3.19 请求分页系统中的页表项 页 号 物理块号 状态位P 访问字段A 修改位M 外存地址 相比于基本分页系统,请求分页系统中的页表需提供更多信息,以支持请求调页和页面置 换。具体而言,操作系统必须能够:①判断某页是否已调入内存;②若尚未调入,则还需获 知该页在外存中的存放位置;③在页面置换时,依据访问特征选择合适的换出页面;④对于 要换出的页面,还需知道其是否被修改过,以决定是否需写回外存。为此,请求分页的页表项 在基本结构基础上增加了四个字段,如图3.19所示。
[tag_link]
正确答案:B
页表机制 为了实现请求分页,系统必须提供一定的硬件支持。除需要足够容量的内存和外存外,还需 具备页表机制、缺页中断机构以及地址变换机构。 请求分页系统建立在基本分页系统的基础之上,为支持虚拟存储器功能,增加了请求调页和 页面置换功能:在该系统中,只需将当前需要的一部分页面装入内存,便可启动作业运行。在作 业运行过程中,若所访问的页面不在内存中,则系统将通过请求调页功能将其从外存调入;而当 内存空间不足时,则通过页面置换功能将暂时不用的页面换出到外存。由于每次换入和换出的基 本单位均为长度固定的页面,其实现比以长度可变的段为单位的请求分段系统更简单;正因其实 现简洁且效率较高,请求分页成为目前最常用的一种虚拟存储器实现方式。
[tag_link]
正确答案:【解答】
页表机制 为了实现请求分页,系统必须提供一定的硬件支持。除需要足够容量的内存和外存外,还需 具备页表机制、缺页中断机构以及地址变换机构。 请求分页系统建立在基本分页系统的基础之上,为支持虚拟存储器功能,增加了请求调页和 页面置换功能:在该系统中,只需将当前需要的一部分页面装入内存,便可启动作业运行。在作 业运行过程中,若所访问的页面不在内存中,则系统将通过请求调页功能将其从外存调入;而当 内存空间不足时,则通过页面置换功能将暂时不用的页面换出到外存。由于每次换入和换出的基 本单位均为长度固定的页面,其实现比以长度可变的段为单位的请求分段系统更简单;正因其实 现简洁且效率较高,请求分页成为目前最常用的一种虚拟存储器实现方式。
[tag_link]
正确答案:D
2.2 请求分页管理方式 ●地址变换机构,负责在程序运行过程中动态地将逻辑地址转换为物理地址。 · 中断机构,用于在用户程序访问尚未调入内存的部分时,触发缺页(或缺段)中断。 ●页表机制(或段表机制),作为地址映射的关键数据结构。 ●足够容量的内存和外存,用于存放程序的当前部分与后备部分。 无论采用哪种方式,均需一定的硬件支持,主要包括以下几个方面: ●请求段页式存储管理。 ●请求分段存储管理。 ●请求分页存储管理。 目前,虚拟内存主要有以下三种实现方式: 虚拟内存技术允许将一个作业分多次调入内存。若采用连续分配方式,则会导致相当一部分 内存空间处于暂时甚至“永久”的空闲状态,不仅造成内存资源的严重浪费,也无法从逻辑上扩 充内存容量。因此,虚拟内存的实现必须建立在离散分配的内存管理方式基础之上。
[tag_link]
正确答案:【解答】
2.2 请求分页管理方式 ●地址变换机构,负责在程序运行过程中动态地将逻辑地址转换为物理地址。 · 中断机构,用于在用户程序访问尚未调入内存的部分时,触发缺页(或缺段)中断。 ●页表机制(或段表机制),作为地址映射的关键数据结构。 ●足够容量的内存和外存,用于存放程序的当前部分与后备部分。 无论采用哪种方式,均需一定的硬件支持,主要包括以下几个方面: ●请求段页式存储管理。 ●请求分段存储管理。 ●请求分页存储管理。 目前,虚拟内存主要有以下三种实现方式: 虚拟内存技术允许将一个作业分多次调入内存。若采用连续分配方式,则会导致相当一部分 内存空间处于暂时甚至“永久”的空闲状态,不仅造成内存资源的严重浪费,也无法从逻辑上扩 充内存容量。因此,虚拟内存的实现必须建立在离散分配的内存管理方式基础之上。
[tag_link]
正确答案:B
虚拟内存技术的实现 3)虚拟性。从用户视角看,内存容量被逻辑扩充,呈现出远大于实际物理内存的可用空间。 虚拟性正是虚拟存储器的本质特征和根本目标,其实现依赖于多次性与对换性。 2)对换性。 作业在运行过程中无须常驻内存,操作系统可根据需要,将暂不使用的程序或 数据换出至外存对换区,并在后续需要时再换入内存,从而实现内存的高效利用。 1)多次性。作业无须在运行前一次性全部装入内存,而是可以分多次动态调入。只需将当 前需要执行的程序和数据装入内存即可开始运行,后续所需部分在访问时按需调入。 之所以称为“虚拟”存储器,是因为该存储器并非真实存在的物理实体,而是操作系统通过 部分装入、请求调入和置换功能(均对用户透明)所构造的一种逻辑抽象。用户程序可像使用大 容量内存一样运行,而无须关心物理内存的实际大小。虚拟存储器有以下三个主要特征。 逻辑上远大于物理内存的地址空间,称为虚拟存储器。 基于局部性原理,在程序装入时,仅需将当前运行所需的少数页面(或段)装入内存,其余 部分暂留外存,即可启动程序执行。在程序执行过程中,若所访问的信息不在内存中,则操作系 统会自动将其从外存调入内存,然后继续执行程序,这一机制称为请求调页(或请求调段)。当 内存空间不足时,操作系统又会将暂时不用的信息换出到外存,以腾出空间存放即将调入的内容, 这一机制称为页面置换(或段置换)。正是通过这两种机制的协同工作, 系统为用户提供了一个 考点追踪 虚拟存储器的特点(2012)
[tag_link]
正确答案:【解答】
虚拟内存技术的实现 3)虚拟性。从用户视角看,内存容量被逻辑扩充,呈现出远大于实际物理内存的可用空间。 虚拟性正是虚拟存储器的本质特征和根本目标,其实现依赖于多次性与对换性。 2)对换性。 作业在运行过程中无须常驻内存,操作系统可根据需要,将暂不使用的程序或 数据换出至外存对换区,并在后续需要时再换入内存,从而实现内存的高效利用。 1)多次性。作业无须在运行前一次性全部装入内存,而是可以分多次动态调入。只需将当 前需要执行的程序和数据装入内存即可开始运行,后续所需部分在访问时按需调入。 之所以称为“虚拟”存储器,是因为该存储器并非真实存在的物理实体,而是操作系统通过 部分装入、请求调入和置换功能(均对用户透明)所构造的一种逻辑抽象。用户程序可像使用大 容量内存一样运行,而无须关心物理内存的实际大小。虚拟存储器有以下三个主要特征。 逻辑上远大于物理内存的地址空间,称为虚拟存储器。 基于局部性原理,在程序装入时,仅需将当前运行所需的少数页面(或段)装入内存,其余 部分暂留外存,即可启动程序执行。在程序执行过程中,若所访问的信息不在内存中,则操作系 统会自动将其从外存调入内存,然后继续执行程序,这一机制称为请求调页(或请求调段)。当 内存空间不足时,操作系统又会将暂时不用的信息换出到外存,以腾出空间存放即将调入的内容, 这一机制称为页面置换(或段置换)。正是通过这两种机制的协同工作, 系统为用户提供了一个 考点追踪 虚拟存储器的特点(2012)
[tag_link]
正确答案:B
虚拟存储器的定义和特征 时间局部性通过将近期使用的指令和数据保存在高速缓存中,并借助多级缓存层次结构加以 利用;空间局部性则通过采用较大容量的缓存,并集成预取机制到缓存控制逻辑中实现。虚拟内 存技术正是基于局部性原理,将外存作为内存的透明扩展,有效缓解物理内存不足的问题。 2)空间局部性。 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很可能 被访问。这是因为指令通常按顺序存放并顺序执行,而数据(如向量、数组、表等)也 一般以连续或簇聚的方式存储。 1)时间局部性。程序中的某条指令或某个数据项一旦被访问,不久之后很可能再次被访问。 这主要是由于程序中存在大量的循环和重复操作。 考点追踪 页面置换算法的时间局部性分析(2012) 要真正理解虚拟内存技术的思想,首先必须了解著名的局部性原理。从广义上讲, 快表、页 高速缓存及虚拟内存技术都属于缓存技术,这个技术所依赖的原理就是局部性原理。局部性原理 既适用于程序结构,又适用于数据结构。局部性原理表现在以下两个方面。
[tag_link]
正确答案:【解答】
虚拟存储器的定义和特征 时间局部性通过将近期使用的指令和数据保存在高速缓存中,并借助多级缓存层次结构加以 利用;空间局部性则通过采用较大容量的缓存,并集成预取机制到缓存控制逻辑中实现。虚拟内 存技术正是基于局部性原理,将外存作为内存的透明扩展,有效缓解物理内存不足的问题。 2)空间局部性。 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很可能 被访问。这是因为指令通常按顺序存放并顺序执行,而数据(如向量、数组、表等)也 一般以连续或簇聚的方式存储。 1)时间局部性。程序中的某条指令或某个数据项一旦被访问,不久之后很可能再次被访问。 这主要是由于程序中存在大量的循环和重复操作。 考点追踪 页面置换算法的时间局部性分析(2012) 要真正理解虚拟内存技术的思想,首先必须了解著名的局部性原理。从广义上讲, 快表、页 高速缓存及虚拟内存技术都属于缓存技术,这个技术所依赖的原理就是局部性原理。局部性原理 既适用于程序结构,又适用于数据结构。局部性原理表现在以下两个方面。
[tag_link]
正确答案:B
局部性原理 由上述分析可知,许多在程序运行中暂未使用或暂时不用的代码和数据仍占据大量内存空 间,而一些急需运行的作业却因内存不足无法装入,显然造成了宝贵内存资源的浪费。 2)驻留性。作业一旦装入内存,便一直驻留其中,其任何部分都不会被换出,直至作业运 行结束。然而,运行中的进程常因等待I/ O 而被阻塞,可能长时间处于等待状态。 1)一 次性。作业必须一次性全部装入内存后才能开始运行。这会带来两个问题:①当作业 过大而无法全部装入内存时,该作业将无法运行;②当大量作业请求运行时,由于内存 不足以容纳所有作业,只能让少数作业先运行,导致系统并发度下降。
[tag_link]
正确答案:【解答】
局部性原理 由上述分析可知,许多在程序运行中暂未使用或暂时不用的代码和数据仍占据大量内存空 间,而一些急需运行的作业却因内存不足无法装入,显然造成了宝贵内存资源的浪费。 2)驻留性。作业一旦装入内存,便一直驻留其中,其任何部分都不会被换出,直至作业运 行结束。然而,运行中的进程常因等待I/ O 而被阻塞,可能长时间处于等待状态。 1)一 次性。作业必须一次性全部装入内存后才能开始运行。这会带来两个问题:①当作业 过大而无法全部装入内存时,该作业将无法运行;②当大量作业请求运行时,由于内存 不足以容纳所有作业,只能让少数作业先运行,导致系统并发度下降。
[tag_link]
正确答案:B
1 节讨论的各种内存管理策略,都是为了将多个进程同时保留在内存中,以支持多道程序 设计。它们具有以下两个共同特征。
[tag_link]
正确答案:【解答】
1 节讨论的各种内存管理策略,都是为了将多个进程同时保留在内存中,以支持多道程序 设计。它们具有以下两个共同特征。
[tag_link]
正确答案:B
传统存储管理方式的特征
[tag_link]
正确答案:【解答】
传统存储管理方式的特征
[tag_link]
正确答案:D
2.1 虚拟内存的基本概念 读者要掌握虚拟内存解决问题的思想,了解各种置换算法的优劣,掌握虚实地址的变换方法。 3)虚拟内存是怎么解决问题的?会带来什么问题? 2)虚拟内存空间的大小由什么因素决定? 1)为什么要引入虚拟内存? 在学习本节时,请读者思考以下问题:
[tag_link]
正确答案:【解答】
2.1 虚拟内存的基本概念 读者要掌握虚拟内存解决问题的思想,了解各种置换算法的优劣,掌握虚实地址的变换方法。 3)虚拟内存是怎么解决问题的?会带来什么问题? 2)虚拟内存空间的大小由什么因素决定? 1)为什么要引入虚拟内存? 在学习本节时,请读者思考以下问题:
[tag_link]
正确答案:B
2 虚拟内存管理 212 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导 00901H 00900H代码页面100200024H 00200020H 00901H 00900H 代码页面1 00901000H00900000H代码页面2 00901000H 00900000H 页表 3)代码页面1的逻辑地址为00008000H, 表明其位于第8个页处,对应页表中的第8个页 表项,所以第8个页表项的物理地址=页表始址+8×页表项的字节数=00200000H+ 8×4=00200020H。由此可得如下图所示的答案。 页表索引可表示为( unsigned int)(LA))»12)&0x3FF。这里也可采用(LA/2¹²)%20的方法 来获取中间10位的页表索引号。 2)页目录号可表示为(unsigned int)(LA))»22)&0x3FF。这里采用的方法是逻辑右移22位, 再和3FF(10 个1)进行逻辑与运算,得到10位的页目录号。这种方法虽然效率较高, 但比较难想到,采用LA/2² 的写法来取高10位的页目录号也是可以的。
- 因为主存按字节编址,页内偏移量是12位,所以页大小为2¹²B=4KB。 页表项数为2³²/4K=2²⁰, 因此该一级页表最大为2²⁰×4B=4MB。
[tag_link]
正确答案:【解答】
2 虚拟内存管理 212 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导 00901H 00900H代码页面100200024H 00200020H 00901H 00900H 代码页面1 00901000H00900000H代码页面2 00901000H 00900000H 页表 3)代码页面1的逻辑地址为00008000H, 表明其位于第8个页处,对应页表中的第8个页 表项,所以第8个页表项的物理地址=页表始址+8×页表项的字节数=00200000H+ 8×4=00200020H。由此可得如下图所示的答案。 页表索引可表示为( unsigned int)(LA))»12)&0x3FF。这里也可采用(LA/2¹²)%20的方法 来获取中间10位的页表索引号。 2)页目录号可表示为(unsigned int)(LA))»22)&0x3FF。这里采用的方法是逻辑右移22位, 再和3FF(10 个1)进行逻辑与运算,得到10位的页目录号。这种方法虽然效率较高, 但比较难想到,采用LA/2² 的写法来取高10位的页目录号也是可以的。
- 因为主存按字节编址,页内偏移量是12位,所以页大小为2¹²B=4KB。 页表项数为2³²/4K=2²⁰, 因此该一级页表最大为2²⁰×4B=4MB。
[tag_link]
正确答案:B
【解答】 3)64 MB内存,一页大小为4KB, 共可分成64K×1K/4K=2¹⁴个物理盘块,在位示图中每个 盘块占1位,共占2¹⁴位空间,因为1B=8 位,所以此位示图共占2KB空间的内存。 2)页式存储管理中有内存碎片的存在,会存在内部碎片。为该作业分配内存后,会产生内 存碎片,因为此作业大小为5.2KB, 占6页,前5页满,最后一页只占0.2KB 的空间, 因此内存碎片的大小为1KB-0.2KB=0.8KB。 页 号 块 号 0 21 1 27 2 28 3 29 4 34 5 35 1)位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,其值为“0”时表示对应 盘块空闲,为“1”时表示已分配,地址空间分页,每页为1KB, 则对应的盘块大小也为 1KB, 主存总容量为256KB, 可分成256个盘块,长5.2KB的作业需要占用6页空间, 假设页号与物理块号都从0开始,则根据位示图可得到如下页表内容:
[tag_link]
正确答案:【解答】
【解答】 3)64 MB内存,一页大小为4KB, 共可分成64K×1K/4K=2¹⁴个物理盘块,在位示图中每个 盘块占1位,共占2¹⁴位空间,因为1B=8 位,所以此位示图共占2KB空间的内存。 2)页式存储管理中有内存碎片的存在,会存在内部碎片。为该作业分配内存后,会产生内 存碎片,因为此作业大小为5.2KB, 占6页,前5页满,最后一页只占0.2KB 的空间, 因此内存碎片的大小为1KB-0.2KB=0.8KB。 页 号 块 号 0 21 1 27 2 28 3 29 4 34 5 35 1)位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,其值为“0”时表示对应 盘块空闲,为“1”时表示已分配,地址空间分页,每页为1KB, 则对应的盘块大小也为 1KB, 主存总容量为256KB, 可分成256个盘块,长5.2KB的作业需要占用6页空间, 假设页号与物理块号都从0开始,则根据位示图可得到如下页表内容:
[tag_link]
正确答案:A
【解答】 从结果可以看出,快表的命中率对访存时间影响非常大。当命中率从85%降低到50%时, 有效存取时间增加0.35μs 。因此在页式存储系统中,应尽可能地提高快表的命中率,从 而提高系统效率。 (0.2+1)×50%+(0.2+1+1)×(1-50%)=1.7μs 3)同理可计算得 (0.2+1)×85%+(0.2+1+1)×(1-85%)=1.35μs 2)按1)中的访问过程分析,有效存取时间为 对于比较复杂的情况,如多级页表,若页表划分为N 级,则需要访问内存N+1 次。若 系统中有快表,则在快表命中时,只需要访问内存1次。
- 在页式存储管理中,访问指令或数据时,首先要访问内存中的页表,查找到指令或数据所在页 面对应的页表项,然后根据页表项查找访问指令或数据所在的内存页面。需要访问内存2次。 段式存储管理同理,需要访问内存2次。段页式存储管理,首先要访问内存中的段表, 然后访问内存中的页表,最后访问指令或数据所在的内存页面,需要访问内存3次。
[tag_link]
正确答案:【解答】
【解答】 从结果可以看出,快表的命中率对访存时间影响非常大。当命中率从85%降低到50%时, 有效存取时间增加0.35μs 。因此在页式存储系统中,应尽可能地提高快表的命中率,从 而提高系统效率。 (0.2+1)×50%+(0.2+1+1)×(1-50%)=1.7μs 3)同理可计算得 (0.2+1)×85%+(0.2+1+1)×(1-85%)=1.35μs 2)按1)中的访问过程分析,有效存取时间为 对于比较复杂的情况,如多级页表,若页表划分为N 级,则需要访问内存N+1 次。若 系统中有快表,则在快表命中时,只需要访问内存1次。
- 在页式存储管理中,访问指令或数据时,首先要访问内存中的页表,查找到指令或数据所在页 面对应的页表项,然后根据页表项查找访问指令或数据所在的内存页面。需要访问内存2次。 段式存储管理同理,需要访问内存2次。段页式存储管理,首先要访问内存中的段表, 然后访问内存中的页表,最后访问指令或数据所在的内存页面,需要访问内存3次。
[tag_link]
正确答案:C
【解答】
[tag_link]
正确答案:【解答】
【解答】
[tag_link]
正确答案:C
85×(0+1.5)+(1-0.85)×2×1.5=1.725μs 2)系统增加快表后,在快表中找到页表项的概率为85%,所以实现一次页面访问的存取时间为
[tag_link]
正确答案:
85×(0+1.5)+(1-0.85)×2×1.5=1.725μs 2)系统增加快表后,在快表中找到页表项的概率为85%,所以实现一次页面访问的存取时间为
[tag_link]
正确答案:
5×2=3μs
- 因为页表在主存,所以CPU 必须访问主存两次,即实现一次页面访问的存取时间是 页表在主存时,实现一次存取需要访问主存两次:第一次是访问页表,获得所需访问数据所 在页面的物理地址;第二次才是根据这个物理地址存取数据。
[tag_link]
正确答案:【解答】
5×2=3μs
- 因为页表在主存,所以CPU 必须访问主存两次,即实现一次页面访问的存取时间是 页表在主存时,实现一次存取需要访问主存两次:第一次是访问页表,获得所需访问数据所 在页面的物理地址;第二次才是根据这个物理地址存取数据。
[tag_link]
正确答案:D
【解答】 根据题中条件无法得知逻辑地址位数,所以在其二进制表示中,其位数并不一致,只是根据八进制 表示进行转换。若已知逻辑地址空间大小或位数,则二进制表示必须保持一致。 注 意 注 意 5)八进制逻辑地址02500的二进制表示为010101000000B。逻辑页号为21,此页号已超过 页表的最大页号10,因此产生越界中断。 4)八进制逻辑地址01120的二进制表示为001001010000 B 。逻辑页号为9,此页号不在快 表中,在内存页表中可以查找到,得页帧号为F9; 页内位移为16,因此物理地址为(F9,16)。 3)八进制逻辑地址0567的二进制表示为101110111B。逻辑页号为5,此页号不在快表中, 在内存页表中可以查找到,得页帧号为F5; 页内位移为55,因此物理地址为(F5,55)。 2)八进制逻辑地址0217的二进制表示为010001111B。逻辑页号为2,此页号可在快表中 查找到,得页帧号为F2; 页内位移为15,因此物理地址为(F2,15)。 1)八进制逻辑地址0105的二进制表示为001000101B 。逻辑页号为1,此页号可在快表中 查找到,得页帧号为F1; 页内位移为5,因此物理地址为(F1,5)。 页面大小为64B, 因此页内位移为6位,进程代码段长度为702B, 因此需要11个页面,编 号为0~10。 要注意题目中的逻辑地址使用哪种进制的数给出,若是十进制,则一般通过整数除法和求余 得到页号和页内偏移,若用其他进制给出,则一般转换成二进制,然后按照地址结构划分为页号 部分和页内偏移部分,再把页号和页内偏移计算出来。
[tag_link]
正确答案:【解答】
【解答】 根据题中条件无法得知逻辑地址位数,所以在其二进制表示中,其位数并不一致,只是根据八进制 表示进行转换。若已知逻辑地址空间大小或位数,则二进制表示必须保持一致。 注 意 注 意 5)八进制逻辑地址02500的二进制表示为010101000000B。逻辑页号为21,此页号已超过 页表的最大页号10,因此产生越界中断。 4)八进制逻辑地址01120的二进制表示为001001010000 B 。逻辑页号为9,此页号不在快 表中,在内存页表中可以查找到,得页帧号为F9; 页内位移为16,因此物理地址为(F9,16)。 3)八进制逻辑地址0567的二进制表示为101110111B。逻辑页号为5,此页号不在快表中, 在内存页表中可以查找到,得页帧号为F5; 页内位移为55,因此物理地址为(F5,55)。 2)八进制逻辑地址0217的二进制表示为010001111B。逻辑页号为2,此页号可在快表中 查找到,得页帧号为F2; 页内位移为15,因此物理地址为(F2,15)。 1)八进制逻辑地址0105的二进制表示为001000101B 。逻辑页号为1,此页号可在快表中 查找到,得页帧号为F1; 页内位移为5,因此物理地址为(F1,5)。 页面大小为64B, 因此页内位移为6位,进程代码段长度为702B, 因此需要11个页面,编 号为0~10。 要注意题目中的逻辑地址使用哪种进制的数给出,若是十进制,则一般通过整数除法和求余 得到页号和页内偏移,若用其他进制给出,则一般转换成二进制,然后按照地址结构划分为页号 部分和页内偏移部分,再把页号和页内偏移计算出来。
[tag_link]
正确答案:B
【解答】 逻辑地址为(3,99),因此内存地址为(14,99)=111000001100011, 即E063H。 逻辑地址为(2,1023),因此内存地址为(1,1023)=000100111111111,即13FFH。 逻辑地址为(1,72),因此内存地址为(0,72)=00 00000001001000 B, 即 0048H。 3)逻辑地址为(0,0),因此内存地址为(9,0)= 1001000000000000 B, 即9000H。 页号为3的页面被装入主存的第14块,因此该地址在内存中的始址为11100000000 0000,即E000H。 页号为2的页面被装入主存的第1块,因此该地址在内存中的始址为 0001 0000 0000 0000,即1000H。 0000B, 即0000H。 页号为1的页面被装入主存的第0块,因此该地址在内存中的始址为000000000000 0000B, 即9000H。 页号为0的页面被装入主存的第9块,因此该地址在内存中的始址为100100000000 2)页面大小为4KB, 因此低12位为页内偏移地址;主存分为16块,因此内存物理地址高 4位为主存块号。 1)页面的大小为(64/16)KB=4KB, 该进程共有4页,所以该进程的总长度为4×4KB=16KB。
[tag_link]
正确答案:【解答】
【解答】 逻辑地址为(3,99),因此内存地址为(14,99)=111000001100011, 即E063H。 逻辑地址为(2,1023),因此内存地址为(1,1023)=000100111111111,即13FFH。 逻辑地址为(1,72),因此内存地址为(0,72)=00 00000001001000 B, 即 0048H。 3)逻辑地址为(0,0),因此内存地址为(9,0)= 1001000000000000 B, 即9000H。 页号为3的页面被装入主存的第14块,因此该地址在内存中的始址为11100000000 0000,即E000H。 页号为2的页面被装入主存的第1块,因此该地址在内存中的始址为 0001 0000 0000 0000,即1000H。 0000B, 即0000H。 页号为1的页面被装入主存的第0块,因此该地址在内存中的始址为000000000000 0000B, 即9000H。 页号为0的页面被装入主存的第9块,因此该地址在内存中的始址为100100000000 2)页面大小为4KB, 因此低12位为页内偏移地址;主存分为16块,因此内存物理地址高 4位为主存块号。 1)页面的大小为(64/16)KB=4KB, 该进程共有4页,所以该进程的总长度为4×4KB=16KB。
[tag_link]
正确答案:C
【解答】 当将十六进制地址转换为二进制地址时,我们可能习惯性地写为16位,这是容易犯错的细节。例 如,题中的逻辑地址为15位,物理地址为14位。逻辑地址0AC5H的二进制表示为000101011000101B, 对应物理地址12C5H的二进制表示为01001011000101B。这一点应该引起注意。 注 意 注 意 10页,因此系统产生越界中断。 逻辑地址3AC5H转换为二进制表示是011101011000101B, 页号为14,而该用户程序只有 映射表中,会产生缺页中断,系统进行缺页中断处理。 逻辑地址1AC5H 转换为二进制表示是001101011000101B, 虚页号为6(00110B), 不在页面 理块号4,因此系统访问物理地址12C5H(01001011000101B)。 逻辑地址0AC5H 转换为二进制表示是000101011000101B, 虚页号为2(00010B), 映射至物 页面大小为1KB, 所以低10位为页内偏移地址;用户编程空间为32个页面,即逻辑地址高 5位为虚页号;主存为16个页面,即物理地址高4位为物理块号。
[tag_link]
正确答案:【解答】
【解答】 当将十六进制地址转换为二进制地址时,我们可能习惯性地写为16位,这是容易犯错的细节。例 如,题中的逻辑地址为15位,物理地址为14位。逻辑地址0AC5H的二进制表示为000101011000101B, 对应物理地址12C5H的二进制表示为01001011000101B。这一点应该引起注意。 注 意 注 意 10页,因此系统产生越界中断。 逻辑地址3AC5H转换为二进制表示是011101011000101B, 页号为14,而该用户程序只有 映射表中,会产生缺页中断,系统进行缺页中断处理。 逻辑地址1AC5H 转换为二进制表示是001101011000101B, 虚页号为6(00110B), 不在页面 理块号4,因此系统访问物理地址12C5H(01001011000101B)。 逻辑地址0AC5H 转换为二进制表示是000101011000101B, 虚页号为2(00010B), 映射至物 页面大小为1KB, 所以低10位为页内偏移地址;用户编程空间为32个页面,即逻辑地址高 5位为虚页号;主存为16个页面,即物理地址高4位为物理块号。
[tag_link]
正确答案:A
【解答】 6)由段表知,不存在第5段,因此逻辑地址(5,32)为非法地址。 5)由段表知,第4段内存始址为1938,段长为95,逻辑地址(4,112)的段内位移112超过了 段长,因此为非法地址。 4)由段表知,第3段内存始址为1350,段长为590,因此逻辑地址(3,400)是合法地址,对 应的物理地址为1350+400=1750。 3)由段表知,第2段内存始址为100,段长为90,逻辑地址(2,500)的段内位移500超过了 段长,因此为非法地址。 2)由段表知,第1段内存始址为2350,段长为20,因此逻辑地址(1,10)是合法地址,对应 的物理地址为2350+10=2360。 1)由段表知,第0段内存始址为210,段长为500,因此逻辑地址(0,430)是合法地址,对应 的物理地址为210+430=640。
[tag_link]
正确答案:【解答】
【解答】 6)由段表知,不存在第5段,因此逻辑地址(5,32)为非法地址。 5)由段表知,第4段内存始址为1938,段长为95,逻辑地址(4,112)的段内位移112超过了 段长,因此为非法地址。 4)由段表知,第3段内存始址为1350,段长为590,因此逻辑地址(3,400)是合法地址,对 应的物理地址为1350+400=1750。 3)由段表知,第2段内存始址为100,段长为90,逻辑地址(2,500)的段内位移500超过了 段长,因此为非法地址。 2)由段表知,第1段内存始址为2350,段长为20,因此逻辑地址(1,10)是合法地址,对应 的物理地址为2350+10=2360。 1)由段表知,第0段内存始址为210,段长为500,因此逻辑地址(0,430)是合法地址,对应 的物理地址为210+430=640。
[tag_link]
正确答案:B
【解答】 2)对图中的页式地址变换,其物理地址为12×2048+586=25162;对图中的段式地址变换, 其物理地址为4000+586=4586。 1)由题图所示的逻辑地址结构可知:页或段的最大个数为2⁵=32。若左图是段式管理,则 段始址12加上偏移量586,远超第1段的段始址15,超过第4段的段始址20,所以左图 是页式变换,而右图满足段式变换。对于页式管理,由逻辑地址的位移量位数可知, 一 页的大小为2 KB。
[tag_link]
正确答案:【解答】
【解答】 2)对图中的页式地址变换,其物理地址为12×2048+586=25162;对图中的段式地址变换, 其物理地址为4000+586=4586。 1)由题图所示的逻辑地址结构可知:页或段的最大个数为2⁵=32。若左图是段式管理,则 段始址12加上偏移量586,远超第1段的段始址15,超过第4段的段始址20,所以左图 是页式变换,而右图满足段式变换。对于页式管理,由逻辑地址的位移量位数可知, 一 页的大小为2 KB。
[tag_link]
正确答案:B
【解答】 空闲区分配。这说明最先适配算法尽可能地使用了低地址部分的空闲区域,留下了高地 址部分的大的空闲区,更有可能满足进程的申请。 3)若随后又要申请80KB, 则最先适配算法可以分配成功,而最佳适配算法则没有足够大的 第一块:始址240K, 大小60KB; 第二块:超始地址450K, 大小62KB。 2)最佳适配的内存分配情况如上图中的(b)所示。内存中的空块为: 第一块:始址290K, 大小10KB; 第二块:始址400K, 大小112KB。 内存中的空块为: (b) reg150KB reg90KB reg100KB reg50KB 512KB 450KB 400KB 300KB 240KB 150KB 0KB (a) reg150KBreg50KBreg90KBreg100KB reg150KB reg50KB reg90KB reg100KB 512KB 400KB 290KB 300KB 200KB 150KB 0KB 1)最先适配的内存分配情况如下图中的(a)所示。
[tag_link]
正确答案:【解答】
【解答】 空闲区分配。这说明最先适配算法尽可能地使用了低地址部分的空闲区域,留下了高地 址部分的大的空闲区,更有可能满足进程的申请。 3)若随后又要申请80KB, 则最先适配算法可以分配成功,而最佳适配算法则没有足够大的 第一块:始址240K, 大小60KB; 第二块:超始地址450K, 大小62KB。 2)最佳适配的内存分配情况如上图中的(b)所示。内存中的空块为: 第一块:始址290K, 大小10KB; 第二块:始址400K, 大小112KB。 内存中的空块为: (b) reg150KB reg90KB reg100KB reg50KB 512KB 450KB 400KB 300KB 240KB 150KB 0KB (a) reg150KBreg50KBreg90KBreg100KB reg150KB reg50KB reg90KB reg100KB 512KB 400KB 290KB 300KB 200KB 150KB 0KB 1)最先适配的内存分配情况如下图中的(a)所示。
[tag_link]
正确答案:B
【解答】 分区号 大 小 始 址 1 12KB 120K 2 10KB 150K 3 5KB 200K 4 18KB 420K 采用最佳适应算法时,作业序列分别进入5,1,4号空闲分区,可以满足其请求。分配处理之 后的空闲分区表见下表: 此时再无空闲分区可以满足200KB大小的作业,所以该作业序列请求无法满足。 分区号 大 小 始 址 1 12KB 120K 2 10KB 150K 3 5KB 200K 4 122KB 316K 5 96KB 530K 采用首次适应算法时,96KB 大小的作业进入4号空闲分区,20KB大小的作业进入1号空闲 分区,这时空闲分区如下表所示。
[tag_link]
正确答案:【解答】
【解答】 分区号 大 小 始 址 1 12KB 120K 2 10KB 150K 3 5KB 200K 4 18KB 420K 采用最佳适应算法时,作业序列分别进入5,1,4号空闲分区,可以满足其请求。分配处理之 后的空闲分区表见下表: 此时再无空闲分区可以满足200KB大小的作业,所以该作业序列请求无法满足。 分区号 大 小 始 址 1 12KB 120K 2 10KB 150K 3 5KB 200K 4 122KB 316K 5 96KB 530K 采用首次适应算法时,96KB 大小的作业进入4号空闲分区,20KB大小的作业进入1号空闲 分区,这时空闲分区如下表所示。
[tag_link]
正确答案:B
【解答】 伙伴算法在回收一个大小为2’的空闲分区时,会检查其伙伴分区(地址相邻、大小同为2 的分区)是否也空闲。若是,则将两者合并为一个大小为2+¹的空闲分区;随后,继续检查新生 成的2+¹分区是否存在同大小的伙伴,若有,则再次合并,以此类推。因此,伙伴算法在一次回 收过程中可能触发多次合并,但每次合并仅发生在两个大小相等且互为伙伴的空闲分区之间。
[tag_link]
正确答案:【解答】
【解答】 伙伴算法在回收一个大小为2’的空闲分区时,会检查其伙伴分区(地址相邻、大小同为2 的分区)是否也空闲。若是,则将两者合并为一个大小为2+¹的空闲分区;随后,继续检查新生 成的2+¹分区是否存在同大小的伙伴,若有,则再次合并,以此类推。因此,伙伴算法在一次回 收过程中可能触发多次合并,但每次合并仅发生在两个大小相等且互为伙伴的空闲分区之间。
[tag_link]
正确答案:D
A 此,p1 和 p2 不一定相等,f1 和 f2 一定相等。 进程 R 和 S 共享数据data, 说明它们都映射了同一个共享内存段,于是这个段在物理内存中 的位置(页框号)必然相同,但这两个段在不同进程的地址空间中的位置(页号)可以不同。因
[tag_link]
A 此,p1 和 p2 不一定相等,f1 和 f2 一定相等。 进程 R 和 S 共享数据data, 说明它们都映射了同一个共享内存段,于是这个段在物理内存中 的位置(页框号)必然相同,但这两个段在不同进程的地址空间中的位置(页号)可以不同。因
[tag_link]
C 在多级页表中,页表基址寄存器存放的是顶级页表的起始物理地址,所以存放的是一级页表 的起始物理地址。
[tag_link]
C 在多级页表中,页表基址寄存器存放的是顶级页表的起始物理地址,所以存放的是一级页表 的起始物理地址。
[tag_link]
B 最佳适应算法总是匹配与当前大小要求最接近的空闲分区,但是大多数情况下空闲分区的大 小不可能完全和当前要求的大小相等,几乎每次分配内存都会产生很小的难以利用的内存块,所 以最佳适应算法最容易产生最多的内存碎片。
[tag_link]
B 最佳适应算法总是匹配与当前大小要求最接近的空闲分区,但是大多数情况下空闲分区的大 小不可能完全和当前要求的大小相等,几乎每次分配内存都会产生很小的难以利用的内存块,所 以最佳适应算法最容易产生最多的内存碎片。
[tag_link]
C 081H, 101H, 选项A 正确。 独拿出,转换为十六进制时缺少的位数在高位补零, ̲0 ̲0 ̲0 ̲0 10000001, ̲0 0̲̲ 0 ̲1 00000001分别对应 前10位、11~20位、21~32位分别对应页目录号、页号和页内偏移。把页目录号、页号单 题中给出的是十六进制地址,首先将它转化为二进制地址,然后用二进制地址去匹配题中对 应的地址结构。转换为二进制地址和地址结构的对应关系如下图所示。
[tag_link]
C 081H, 101H, 选项A 正确。 独拿出,转换为十六进制时缺少的位数在高位补零, ̲0 ̲0 ̲0 ̲0 10000001, ̲0 0̲̲ 0 ̲1 00000001分别对应 前10位、11~20位、21~32位分别对应页目录号、页号和页内偏移。把页目录号、页号单 题中给出的是十六进制地址,首先将它转化为二进制地址,然后用二进制地址去匹配题中对 应的地址结构。转换为二进制地址和地址结构的对应关系如下图所示。
[tag_link]
A 段的共享是通过两个作业的段表中相应表项指向被共享的段的同一个物理副本来实现的,因此 在内存中仅保存一份段S 的内容,选项A 正确。段 S 对进程 P₁ 、P₂ 来说,使用位置可能不同,所 以在不同进程中的逻辑段号可能不同,选项B 错误。段表项存放的是段的物理地址(包括段始址和 段长度),对共享段S 来说物理地址唯一,选项C 正确。为了保证进程可以顺利使用段S, 段S 必 须确保在没有任何进程使用它(可在段表项中设置共享进程计数)后才能被删除,选项D 正确。
[tag_link]
A 段的共享是通过两个作业的段表中相应表项指向被共享的段的同一个物理副本来实现的,因此 在内存中仅保存一份段S 的内容,选项A 正确。段 S 对进程 P₁ 、P₂ 来说,使用位置可能不同,所 以在不同进程中的逻辑段号可能不同,选项B 错误。段表项存放的是段的物理地址(包括段始址和 段长度),对共享段S 来说物理地址唯一,选项C 正确。为了保证进程可以顺利使用段S, 段S 必 须确保在没有任何进程使用它(可在段表项中设置共享进程计数)后才能被删除,选项D 正确。
[tag_link]
B 回收始址为60K、大小为140KB 的分区时,它与表中第一个分区和第四个分区合并,成为 始址为20K、大小为380KB的分区,剩余3个空闲分区。在回收内存后,算法会对空闲分区链按 分区大小由小到大进行排序,表中的第二个分区排第一。
[tag_link]
B 回收始址为60K、大小为140KB 的分区时,它与表中第一个分区和第四个分区合并,成为 始址为20K、大小为380KB的分区,剩余3个空闲分区。在回收内存后,算法会对空闲分区链按 分区大小由小到大进行排序,表中的第二个分区排第一。
[tag_link]
B 题目中段号为2的段长为300,小于段内地址400,因此发生越界异常,选项D正确。 ④取出段表项中该段的基址b, 计 算E=b+W, 用得到的物理地址E 去访问内存。 ③在段表中查询段号对应的段表项,段号S 对应的段表项地址=段表始址F+ 段号 S×段 表项长度。取出段表项中该段的段长C, 若 W≥C, 则产生越界中断,否则继续执行。 ②比较段号S 和段表长度M, 若 S≥M, 则产生越界异常,否则继续执行。 ①从逻辑地址A 中取出前几位为段号S, 后几位为段内偏移量 W, 注意段式存储管理的题 目中,逻辑地址一般以二进制数给出,而页式存储管理的题目中,逻辑地址一般以十进 制数给出,读者要注意具体问题具体分析。 分段系统的逻辑地址A 到物理地址E 之间的地址变换过程如图3.15所示。
[tag_link]
B 题目中段号为2的段长为300,小于段内地址400,因此发生越界异常,选项D正确。 ④取出段表项中该段的基址b, 计 算E=b+W, 用得到的物理地址E 去访问内存。 ③在段表中查询段号对应的段表项,段号S 对应的段表项地址=段表始址F+ 段号 S×段 表项长度。取出段表项中该段的段长C, 若 W≥C, 则产生越界中断,否则继续执行。 ②比较段号S 和段表长度M, 若 S≥M, 则产生越界异常,否则继续执行。 ①从逻辑地址A 中取出前几位为段号S, 后几位为段内偏移量 W, 注意段式存储管理的题 目中,逻辑地址一般以二进制数给出,而页式存储管理的题目中,逻辑地址一般以十进 制数给出,读者要注意具体问题具体分析。 分段系统的逻辑地址A 到物理地址E 之间的地址变换过程如图3.15所示。
[tag_link]
D 次数,并不会减少页表项所占的字节数,而多级页表能够减少页表所占的连续内存空间,即当页表 太大时,将页表再分级,把每张页表控制在一页之内,减少页表所占的连续内存空间。 207第 3 章 内 存 管 理 207 多级页表不仅不会加快地址的变换速度,还会因为增加更多的查表过程,使地址变换速度减慢; 也不会减少缺页中断的次数,相反,若访问过程中多级的页表都不在内存中,则会大大增加缺页的
[tag_link]
D 次数,并不会减少页表项所占的字节数,而多级页表能够减少页表所占的连续内存空间,即当页表 太大时,将页表再分级,把每张页表控制在一页之内,减少页表所占的连续内存空间。 207第 3 章 内 存 管 理 207 多级页表不仅不会加快地址的变换速度,还会因为增加更多的查表过程,使地址变换速度减慢; 也不会减少缺页中断的次数,相反,若访问过程中多级的页表都不在内存中,则会大大增加缺页的
[tag_link]
D 例 如 ,file1.o 的逻辑地址为0~1023,main.o 的逻辑地址为0~1023,假设链接时将 file1.o 链接在main.o 之后,则链接之后file1.o 对应的逻辑地址应为1024~2047。 编译后的程序需要经过链接才能装载,而链接后形成的目标程序中的地址也就是逻辑地址。 以 C 语言为例:C 程序经过预处理→编译→汇编→链接产生了可执行文件,其中链接的前一步是 产生可重定位的二进制目标文件。C 语言采用源文件独立编译的方法,如程序main.c,filel.c,file2.c, file1.h,file2.h 在链接的前一步生成了main.o,filel.o,file2.0, 这些目标模块的逻辑地址都从0开始, 但只是相对于该模块的逻辑地址。链接器将这三个文件、libc 和其库文件链接成一个可执行文件, 从而形成整个程序的完整逻辑地址空间。
[tag_link]
D 例 如 ,file1.o 的逻辑地址为0~1023,main.o 的逻辑地址为0~1023,假设链接时将 file1.o 链接在main.o 之后,则链接之后file1.o 对应的逻辑地址应为1024~2047。 编译后的程序需要经过链接才能装载,而链接后形成的目标程序中的地址也就是逻辑地址。 以 C 语言为例:C 程序经过预处理→编译→汇编→链接产生了可执行文件,其中链接的前一步是 产生可重定位的二进制目标文件。C 语言采用源文件独立编译的方法,如程序main.c,filel.c,file2.c, file1.h,file2.h 在链接的前一步生成了main.o,filel.o,file2.0, 这些目标模块的逻辑地址都从0开始, 但只是相对于该模块的逻辑地址。链接器将这三个文件、libc 和其库文件链接成一个可执行文件, 从而形成整个程序的完整逻辑地址空间。
[tag_link]
C 页大小为2¹⁰B, 所以页内偏移量占10位,又因为页表项大小为2B,一页可以存放2⁹个页表 项,所以页号占9位,根据逻辑地址空间共有2⁶页可知,页目录号加页号共占16位,页目录号 占7位,所以页目录表中包含表项的个数至少是2⁷=128。
[tag_link]
C 页大小为2¹⁰B, 所以页内偏移量占10位,又因为页表项大小为2B,一页可以存放2⁹个页表 项,所以页号占9位,根据逻辑地址空间共有2⁶页可知,页目录号加页号共占16位,页目录号 占7位,所以页目录表中包含表项的个数至少是2⁷=128。
[tag_link]
B 图中,灰色部分为分配出去的空间,白色部分为空闲区。这样,容易发现,此时主存中最大 空闲分区的大小为9MB。 初始分配15MB分配 6MB 初始 分配 15MB 2MB 8MB2MB分配 8MB10MB分配 30MB10MB释放 15MB8MB 8MB 2MB 分配 8MB 10MB 分配 30MB 10MB 释放 15MB 40MB 55MB30MB30MB30MB30MB 55MB 30MB 30MB 30MB 9MB 15MB15MB15MB15MB 15MB 15MB 15MB 6MB 最佳适配算法是指每次为作业分配内存空间时,总是找到能满足空间大小需要的最小空闲分 区给作业,可以产生最小的内存空闲分区。下图显示了这个过程的主存空间变化。
[tag_link]
B 图中,灰色部分为分配出去的空间,白色部分为空闲区。这样,容易发现,此时主存中最大 空闲分区的大小为9MB。 初始分配15MB分配 6MB 初始 分配 15MB 2MB 8MB2MB分配 8MB10MB分配 30MB10MB释放 15MB8MB 8MB 2MB 分配 8MB 10MB 分配 30MB 10MB 释放 15MB 40MB 55MB30MB30MB30MB30MB 55MB 30MB 30MB 30MB 9MB 15MB15MB15MB15MB 15MB 15MB 15MB 6MB 最佳适配算法是指每次为作业分配内存空间时,总是找到能满足空间大小需要的最小空闲分 区给作业,可以产生最小的内存空闲分区。下图显示了这个过程的主存空间变化。
[tag_link]
B 分段存储管理的逻辑地址分为段号和位移量两部分,段内位移的最大值就是最大段长。地址 长度为32位,段号占8位,因此位移量占32-8=24位,因此最大段长为2²B。
[tag_link]
A
B 分段存储管理的逻辑地址分为段号和位移量两部分,段内位移的最大值就是最大段长。地址 长度为32位,段号占8位,因此位移量占32-8=24位,因此最大段长为2²B。
[tag_link]
A
C 每个进程都拥有自己独立的进程空间,若一个进程在运行时所产生的地址在其地址空间之 外,则发生地址越界,因此需要进行界地址保护,即当程序要访问某个内存单元时,由硬件检查 是否允许,若允许,则执行,否则产生地址越界中断。
[tag_link]
C 每个进程都拥有自己独立的进程空间,若一个进程在运行时所产生的地址在其地址空间之 外,则发生地址越界,因此需要进行界地址保护,即当程序要访问某个内存单元时,由硬件检查 是否允许,若允许,则执行,否则产生地址越界中断。
[tag_link]
A 软件、编译软件等),则这种方法可以节省大量的内存空间。实现内存“复制”操作时,不需要 将页面的内容逐字节复制,而只需将页表中指向该页面的指针复制到目的地址的页表项中。越界 保护是通过界地址寄存器实现的,说法Ⅲ是干扰项。当多个进程需要通信时,可以采用共享内 存的方式,它们是通过让各个进程页表的页表项指向相同的页帧实现的。 让不同页表的页表项指向同一个页帧,可以共享该页帧的代码,若代码是可重入的(如编辑
[tag_link]
B
A 软件、编译软件等),则这种方法可以节省大量的内存空间。实现内存“复制”操作时,不需要 将页面的内容逐字节复制,而只需将页表中指向该页面的指针复制到目的地址的页表项中。越界 保护是通过界地址寄存器实现的,说法Ⅲ是干扰项。当多个进程需要通信时,可以采用共享内 存的方式,它们是通过让各个进程页表的页表项指向相同的页帧实现的。 让不同页表的页表项指向同一个页帧,可以共享该页帧的代码,若代码是可重入的(如编辑
[tag_link]
B
A 逻辑地址空间大小为256TB=2⁴B, 逻辑地址有48位,页面大小为4KB=2¹²B, 页内偏移 量2占12位,剩余36位表示页表索引,页表项大小为8B, 一个页面能存放4KB÷8=2⁹ 个页表 项,因此可用9位来表示某一级的页表索引,36÷9=4,所以共需要采用4级页表。
[tag_link]
D
A 逻辑地址空间大小为256TB=2⁴B, 逻辑地址有48位,页面大小为4KB=2¹²B, 页内偏移 量2占12位,剩余36位表示页表索引,页表项大小为8B, 一个页面能存放4KB÷8=2⁹ 个页表 项,因此可用9位来表示某一级的页表索引,36÷9=4,所以共需要采用4级页表。
[tag_link]
D
C 分段是指将逻辑地址空间划分为若干不等长的单元,称为段。段长由用户根据信息的性质和 逻辑结构决定,而不由系统决定,引入分段的主要目的是更好地满足用户的需求,实现程序的模 块化和保护。实现离散分配并提高内存利用率是引入分页的主要目的。
[tag_link]
D
C 分段是指将逻辑地址空间划分为若干不等长的单元,称为段。段长由用户根据信息的性质和 逻辑结构决定,而不由系统决定,引入分段的主要目的是更好地满足用户的需求,实现程序的模 块化和保护。实现离散分配并提高内存利用率是引入分页的主要目的。
[tag_link]
D
D 主存容量为1MB, 分为256个页框,页框大小为1MB/256=4KB, 作业中的2号页被分配 到主存的1号页框中,因此其在主存中的始址为1×4096=4096。
[tag_link]
A
D 主存容量为1MB, 分为256个页框,页框大小为1MB/256=4KB, 作业中的2号页被分配 到主存的1号页框中,因此其在主存中的始址为1×4096=4096。
[tag_link]
A
D 地址结构长18位,所以主存的最大容量为2⁸=256KB; 页内偏移量占11位,所以页面大小 为2¹=2048B; 页号占7位,所以主存页数为2⁷=128个。该指令的相对地址为1500,小于一个 页面的大小,所以该指令存放在2号物理块中,物理地址为2×2048+1500=5596,指令数据的存 放地址为2500,大于一个页面的大小,所以指令数据存放在3号物理块中。
[tag_link]
C
D 地址结构长18位,所以主存的最大容量为2⁸=256KB; 页内偏移量占11位,所以页面大小 为2¹=2048B; 页号占7位,所以主存页数为2⁷=128个。该指令的相对地址为1500,小于一个 页面的大小,所以该指令存放在2号物理块中,物理地址为2×2048+1500=5596,指令数据的存 放地址为2500,大于一个页面的大小,所以指令数据存放在3号物理块中。
[tag_link]
C
B 说法I 正确:关闭TLB 后,每当访问一条指令或存取一个操作数时都要先访问页表(内存中), 得到物理地址后,再访问一次内存进行相应操作。说法Ⅱ错误:记住,凡是分区固定的都会产生 内部碎片,而无外部碎片。说法Ⅲ错误:页式存储管理对于用户是透明的。说法IV 错误:静态 重定位是在程序运行之前由装配程序完成的,必须分配其要求的全部连续内存空间。而页式存储 管理方案是将程序离散地分成若干页(块),从而可以将程序装入不连续的内存空间,显然静态 重定位不能满足其要求。
[tag_link]
D
B 说法I 正确:关闭TLB 后,每当访问一条指令或存取一个操作数时都要先访问页表(内存中), 得到物理地址后,再访问一次内存进行相应操作。说法Ⅱ错误:记住,凡是分区固定的都会产生 内部碎片,而无外部碎片。说法Ⅲ错误:页式存储管理对于用户是透明的。说法IV 错误:静态 重定位是在程序运行之前由装配程序完成的,必须分配其要求的全部连续内存空间。而页式存储 管理方案是将程序离散地分成若干页(块),从而可以将程序装入不连续的内存空间,显然静态 重定位不能满足其要求。
[tag_link]
D
C 只要是固定的分配就会产生内部碎片,其余的都会产生外部碎片。若固定和不固定同时存在 (例如段页式),则仍视为固定。分段虚拟存储管理:每段的长度都不一样(对应不固定),所以 会产生外部碎片。分页虚拟存储管理:每页的长度都一样(对应固定),所以会产生内部碎片。 段页式分区管理:既有固定,又有不固定,以固定为主,所以会有内部碎片。固定式分区管理: 很明显固定,会产生内部碎片。综上分析,说法Ⅱ、Ⅲ、IV 会产生内部碎片。
[tag_link]
C
C 只要是固定的分配就会产生内部碎片,其余的都会产生外部碎片。若固定和不固定同时存在 (例如段页式),则仍视为固定。分段虚拟存储管理:每段的长度都不一样(对应不固定),所以 会产生外部碎片。分页虚拟存储管理:每页的长度都一样(对应固定),所以会产生内部碎片。 段页式分区管理:既有固定,又有不固定,以固定为主,所以会有内部碎片。固定式分区管理: 很明显固定,会产生内部碎片。综上分析,说法Ⅱ、Ⅲ、IV 会产生内部碎片。
[tag_link]
C
D 段页式存储管理兼有页式管理和段式管理的优点,采用分段方法来分配和管理用户地址空 间,采用分页方法来管理物理存储空间。但它的开销要比段式和页式管理的开销大。
[tag_link]
A
D 段页式存储管理兼有页式管理和段式管理的优点,采用分段方法来分配和管理用户地址空 间,采用分页方法来管理物理存储空间。但它的开销要比段式和页式管理的开销大。
[tag_link]
A
B 分段方式对低级语言程序员和编译器是可见的,因为低级语言程序员可以按照程序的逻辑结 构划分段,并给每个段命名;编译器也需要对各个段生成逻辑地址。
[tag_link]
A
B 分段方式对低级语言程序员和编译器是可见的,因为低级语言程序员可以按照程序的逻辑结 构划分段,并给每个段命名;编译器也需要对各个段生成逻辑地址。
[tag_link]
A
D 在分段存储管理方式中,以段为单位进行分配,每段是一个连续存储区,每段不一定等长, 段与段之间可连续,也可不连续。
[tag_link]
A
D 在分段存储管理方式中,以段为单位进行分配,每段是一个连续存储区,每段不一定等长, 段与段之间可连续,也可不连续。
[tag_link]
A
A 存放在本进程的PCB 中,当调度到某进程时,才将这两个数据装入页表寄存器中。每个进程都有 一个单独的逻辑地址,有一张属于自己的页表。 在多个进程并发执行时,所有进程的页表大多数驻留在内存中,在系统中只设置一个页表寄 存器( PTR), 它存放页表在内存中的始址和长度。平时,进程未执行时,页表的始址和页表长度
[tag_link]
C
A 存放在本进程的PCB 中,当调度到某进程时,才将这两个数据装入页表寄存器中。每个进程都有 一个单独的逻辑地址,有一张属于自己的页表。 在多个进程并发执行时,所有进程的页表大多数驻留在内存中,在系统中只设置一个页表寄 存器( PTR), 它存放页表在内存中的始址和长度。平时,进程未执行时,页表的始址和页表长度
[tag_link]
C
A 段页式系统中,进程首先划分为段,每段再进一步划分为页。
[tag_link]
A
A 段页式系统中,进程首先划分为段,每段再进一步划分为页。
[tag_link]
A
C 虽然段页式存储管理的内存地址结构分为段号、段内页号和页内地址三部分,但分页是操作 系统的行为,用户不用指出页内偏移量的位数;而分段之间是独立的,且段长不定长,需指出段 号所占的位数。因此,当采用段页式存储管理时,内存地址结构仍然是二维的。而在分页存储管 理中,作业地址空间是一维的,即单一的线性地址空间,程序员只需要一个整数来表示地址。简 言之,确定一个地址需要几个参数,作业地址空间就是几维的。
[tag_link]
C
C 虽然段页式存储管理的内存地址结构分为段号、段内页号和页内地址三部分,但分页是操作 系统的行为,用户不用指出页内偏移量的位数;而分段之间是独立的,且段长不定长,需指出段 号所占的位数。因此,当采用段页式存储管理时,内存地址结构仍然是二维的。而在分页存储管 理中,作业地址空间是一维的,即单一的线性地址空间,程序员只需要一个整数来表示地址。简 言之,确定一个地址需要几个参数,作业地址空间就是几维的。
[tag_link]
C
B 在段页式分配中,取一次数据时先从内存查找段表,再访问内存查找相应的页表,最后拼成 物理地址后访问内存,共需要3次内存访问。
[tag_link]
B
B 在段页式分配中,取一次数据时先从内存查找段表,再访问内存查找相应的页表,最后拼成 物理地址后访问内存,共需要3次内存访问。
[tag_link]
B
B 在段式分配中,取一次数据时先从内存查找段表,再拼成物理地址后访问内存,共需要2次 内存访问。
[tag_link]
B
B 在段式分配中,取一次数据时先从内存查找段表,再拼成物理地址后访问内存,共需要2次 内存访问。
[tag_link]
B
C 在分页存储管理中,逻辑地址分配是按页为单位进行分配的,而主存的分配即物理地址分配 是以内存块为单位分配的。
[tag_link]
A
C 在分页存储管理中,逻辑地址分配是按页为单位进行分配的,而主存的分配即物理地址分配 是以内存块为单位分配的。
[tag_link]
A
A 单用户连续分配管理方式只适用于单用户、单任务的操作系统,不适用于多道程序设计。
[tag_link]
D
A 单用户连续分配管理方式只适用于单用户、单任务的操作系统,不适用于多道程序设计。
[tag_link]
D
A 这里是指主存的访问,不是主存的分配。对主存的访问是以字节或字为单位的。例如,在页 式管理中,不仅要知道块号,还要知道页内偏移量。
[tag_link]
A
A 这里是指主存的访问,不是主存的分配。对主存的访问是以字节或字为单位的。例如,在页 式管理中,不仅要知道块号,还要知道页内偏移量。
[tag_link]
A
B 段式存储管理按程序逻辑结构划分段,段名与段长由用户定义,便于编程;各段作为独立逻 辑单位,支持共享、按段保护、动态增长(如数据段扩展)和动态链接(运行时按需加载)。而 提高内存利用率并非段式管理的目标:因其段长不固定,易产生外部碎片,内存利用率通常较低。 高效利用内存恰好是分页式管理的优势,通过固定页框离散分配,可有效消除外部碎片。
[tag_link]
B
B 段式存储管理按程序逻辑结构划分段,段名与段长由用户定义,便于编程;各段作为独立逻 辑单位,支持共享、按段保护、动态增长(如数据段扩展)和动态链接(运行时按需加载)。而 提高内存利用率并非段式管理的目标:因其段长不固定,易产生外部碎片,内存利用率通常较低。 高效利用内存恰好是分页式管理的优势,通过固定页框离散分配,可有效消除外部碎片。
[tag_link]
B
A 页式管理中很重要的一个问题是页面大小如何确定。确定页面大小有很多因素,如进程的平 均大小、页表占用的长度等。而一旦确定,所有的页面就是等长的(一般取2的整数幂倍),以 便易于系统管理。
[tag_link]
D
A 页式管理中很重要的一个问题是页面大小如何确定。确定页面大小有很多因素,如进程的平 均大小、页表占用的长度等。而一旦确定,所有的页面就是等长的(一般取2的整数幂倍),以 便易于系统管理。
[tag_link]
D
B 页面较大时,页表项较少,但页内碎片较大;页面较小时,页内碎片较小,但页表项增多。此 外,页面大小直接影响磁盘访问次数:页面过小会导致缺页频繁,大幅增加I/O 次数和总访问时间; 页面过大会加剧内部碎片。因此,页面大小需要在页表开销、内存浪费与I/O 效率之间权衡。
[tag_link]
B
B 页面较大时,页表项较少,但页内碎片较大;页面较小时,页内碎片较小,但页表项增多。此 外,页面大小直接影响磁盘访问次数:页面过小会导致缺页频繁,大幅增加I/O 次数和总访问时间; 页面过大会加剧内部碎片。因此,页面大小需要在页表开销、内存浪费与I/O 效率之间权衡。
[tag_link]
B
C 动态分区时,在系统启动后,除操作系统占据一部分内存外,其余所有内存空间是一个大空 闲区,称为自由空间。若作业申请内存,则从空闲区中划出一个与作业需求量相适应的分区分配 给该作业,将作业创建为进程,在作业运行完毕后,再收回释放的分区。
[tag_link]
C
C 动态分区时,在系统启动后,除操作系统占据一部分内存外,其余所有内存空间是一个大空 闲区,称为自由空间。若作业申请内存,则从空闲区中划出一个与作业需求量相适应的分区分配 给该作业,将作业创建为进程,在作业运行完毕后,再收回释放的分区。
[tag_link]
C
A 实现分页、分段和段页式存储管理需要特定的数据结构支持,如页表、段表等。为了提高性 能,还需要硬件提供快存和地址加法器等,代价高。分区存储管理是满足多道程序设计的最简单 的存储管理方案,特别适合嵌入式等微型设备。
[tag_link]
C
A 实现分页、分段和段页式存储管理需要特定的数据结构支持,如页表、段表等。为了提高性 能,还需要硬件提供快存和地址加法器等,代价高。分区存储管理是满足多道程序设计的最简单 的存储管理方案,特别适合嵌入式等微型设备。
[tag_link]
C
A 可重入程序主要是通过共享来使用同一块存储空间的,或通过动态链接的方式将所需的 程序段映射到相关进程中去,其优点是减少了对程序段的调入/调出,因此减少了对换数量。
[tag_link]
C
A 可重入程序主要是通过共享来使用同一块存储空间的,或通过动态链接的方式将所需的 程序段映射到相关进程中去,其优点是减少了对程序段的调入/调出,因此减少了对换数量。
[tag_link]
C
D 编译后一个目标程序所限定的地址范围称为该作业的逻辑地址空间。换句话说,地址空间仅 指程序用来访问信息所用的一系列地址单元的集合。这些单元的编号称为逻辑地址。通常,编译 地址都是相对始址“0”的,因此逻辑地址也称相对地址。
[tag_link]
C
D 编译后一个目标程序所限定的地址范围称为该作业的逻辑地址空间。换句话说,地址空间仅 指程序用来访问信息所用的一系列地址单元的集合。这些单元的编号称为逻辑地址。通常,编译 地址都是相对始址“0”的,因此逻辑地址也称相对地址。
[tag_link]
C
①B、②C 程序的动态链接与程序的逻辑结构相关,分段存储管理将程序按照逻辑段进行划分,因此有 利于其动态链接。其他的内存管理方式与程序的逻辑结构无关。
[tag_link]
①B、②C 程序的动态链接与程序的逻辑结构相关,分段存储管理将程序按照逻辑段进行划分,因此有 利于其动态链接。其他的内存管理方式与程序的逻辑结构无关。
[tag_link]
A 分段是指在用户编程时,将程序按照逻辑划分为几个逻辑段。
[tag_link]
B
A 分段是指在用户编程时,将程序按照逻辑划分为几个逻辑段。
[tag_link]
B
B 在页式存储管理中,CPU 将虚拟地址分解为页号和页内偏移量,然后通过硬件中的页表寄存 器和内存管理单元( MMU), 将页号转换为物理地址,再拼接上页内偏移量,得到最终的内存物 理地址。这一过程是由硬件自动完成的,不需要操作系统或其他软件的干预。
[tag_link]
B 在页式存储管理中,CPU 将虚拟地址分解为页号和页内偏移量,然后通过硬件中的页表寄存 器和内存管理单元( MMU), 将页号转换为物理地址,再拼接上页内偏移量,得到最终的内存物 理地址。这一过程是由硬件自动完成的,不需要操作系统或其他软件的干预。
[tag_link]
C 页表的功能由一组专门的存储器实现,其始址放在页表基址寄存器( PTBR) 中。这样才能 满足在地址变换时能够较快地完成逻辑地址和物理地址之间的转换。 分页管理是在硬件和操作系统层面实现的,对用户、编译系统、装配程序等上层是不可见的。 30.D
[tag_link]
C 页表的功能由一组专门的存储器实现,其始址放在页表基址寄存器( PTBR) 中。这样才能 满足在地址变换时能够较快地完成逻辑地址和物理地址之间的转换。 分页管理是在硬件和操作系统层面实现的,对用户、编译系统、装配程序等上层是不可见的。 30.D
[tag_link]
B 页表和段表同样存储在内存中,系统提供给用户的物理地址空间为总空间大小减去页表或段 表的长度。因为页表和段表的长度不能确定,所以提供给用户的物理地址空间大小也不能确定。
[tag_link]
B
B 页表和段表同样存储在内存中,系统提供给用户的物理地址空间为总空间大小减去页表或段 表的长度。因为页表和段表的长度不能确定,所以提供给用户的物理地址空间大小也不能确定。
[tag_link]
B
C 不管进程有多少个段,系统都为每个进程建立一张段表,每个段表项对应进程中的一段。
[tag_link]
C
C 不管进程有多少个段,系统都为每个进程建立一张段表,每个段表项对应进程中的一段。
[tag_link]
C
C 在段式存储管理中,若有些段可被多个进程共享,则可用一个单独的共享段表来描述这些段, 而不需要在每个进程的段表中都保存一份。共享段表的作用是实现多个进程共享同一段代码或数 据,这样既能节省内存空间,又能便于实现对共享段的更新和维护。多个进程共享同一段物理内 存空间并不需要用到共享段表,只需在各自的段表中指向相同的物理地址即可。多个进程共享同 一段逻辑地址空间是不可能的,因为每个进程的逻辑地址空间都是相互独立的。在段式存储管理 中,并不要求各个进程中相同功能的段必须有相同的段号。
[tag_link]
B
C 在段式存储管理中,若有些段可被多个进程共享,则可用一个单独的共享段表来描述这些段, 而不需要在每个进程的段表中都保存一份。共享段表的作用是实现多个进程共享同一段代码或数 据,这样既能节省内存空间,又能便于实现对共享段的更新和维护。多个进程共享同一段物理内 存空间并不需要用到共享段表,只需在各自的段表中指向相同的物理地址即可。多个进程共享同 一段逻辑地址空间是不可能的,因为每个进程的逻辑地址空间都是相互独立的。在段式存储管理 中,并不要求各个进程中相同功能的段必须有相同的段号。
[tag_link]
B
A 页表是由操作系统在程序装入内存时建立的,根据进程的逻辑地址空间和物理地址空间的对 应关系,为每个页设置一个页表项,记录其对应的物理页框号、有效位等信息。
[tag_link]
C
A 页表是由操作系统在程序装入内存时建立的,根据进程的逻辑地址空间和物理地址空间的对 应关系,为每个页设置一个页表项,记录其对应的物理页框号、有效位等信息。
[tag_link]
C
D 框与页面,分配时无须物理连续,可充分利用零散空闲块,显著提升内存利用率。 连续分配要求为进程分配连续内存,易产生内部碎片和外部碎片,导致空闲内存无法有效利 用,内存利用率较低。页式管理采用离散分配方式,将内存和进程地址空间划分为相等大小的页
[tag_link]
D
D 框与页面,分配时无须物理连续,可充分利用零散空闲块,显著提升内存利用率。 连续分配要求为进程分配连续内存,易产生内部碎片和外部碎片,导致空闲内存无法有效利 用,内存利用率较低。页式管理采用离散分配方式,将内存和进程地址空间划分为相等大小的页
[tag_link]
D
A 基于顺序搜索的分配算法有首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算 法;基于索引搜索的分配算法有快速适应算法、伙伴系统和哈希算法。 23 . D 首次适应算法的空闲分区按地址递增的次序排列。 22 . C 最佳适应算法要求从剩余的空闲分区中选出最小且满足存储要求的分区,空闲区应按长度递 增登记在空闲区表中。
[tag_link]
A
A 基于顺序搜索的分配算法有首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算 法;基于索引搜索的分配算法有快速适应算法、伙伴系统和哈希算法。 23 . D 首次适应算法的空闲分区按地址递增的次序排列。 22 . C 最佳适应算法要求从剩余的空闲分区中选出最小且满足存储要求的分区,空闲区应按长度递 增登记在空闲区表中。
[tag_link]
A
A 首次适应法从空闲区链的链首开始顺序查找,找到一个大小满足要求的空闲分区,根据作业 的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲链中。这种 算法不需要对空闲区链进行排序,只需按地址递增的顺序链接即可。
[tag_link]
【解答】
A 首次适应法从空闲区链的链首开始顺序查找,找到一个大小满足要求的空闲分区,根据作业 的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲链中。这种 算法不需要对空闲区链进行排序,只需按地址递增的顺序链接即可。
[tag_link]
D
A 绝对装入在编译时直接将程序的逻辑地址转换成物理地址;静态重定位虽然允许将装入模块 装入内存的任何位置,但不允许进程在内存中移动;动态重定位在程序执行时才产生真正的物理 地址,它允许进程在内存中移动,但需要一个重定位寄存器的支持。
[tag_link]
【解答】
A 绝对装入在编译时直接将程序的逻辑地址转换成物理地址;静态重定位虽然允许将装入模块 装入内存的任何位置,但不允许进程在内存中移动;动态重定位在程序执行时才产生真正的物理 地址,它允许进程在内存中移动,但需要一个重定位寄存器的支持。
[tag_link]
【解答】
C 多进程的执行通过内存保护实现互不干扰,如页式管理中有页地址越界保护,段式管理中有 段地址越界保护。
[tag_link]
【解答】
C 多进程的执行通过内存保护实现互不干扰,如页式管理中有页地址越界保护,段式管理中有 段地址越界保护。
[tag_link]
C
B 分页式和段页式存储管理均以固定大小的页框为单位分配内存,进程末页通常无法填满页 框,从而产生内部碎片;固定分区式因分区大小固定,当进程小于分区时,剩余空间同样形成内 部碎片。而分段式按逻辑段动态分配内存,为每个段分配恰好满足其长度的连续空间,不会因分 配粒度固定而导致空间浪费,因此不产生内部碎片(但可能因段间空隙产生外部碎片)。
[tag_link]
【解答】
B 分页式和段页式存储管理均以固定大小的页框为单位分配内存,进程末页通常无法填满页 框,从而产生内部碎片;固定分区式因分区大小固定,当进程小于分区时,剩余空间同样形成内 部碎片。而分段式按逻辑段动态分配内存,为每个段分配恰好满足其长度的连续空间,不会因分 配粒度固定而导致空间浪费,因此不产生内部碎片(但可能因段间空隙产生外部碎片)。
[tag_link]
【解答】
B 逻辑地址4097对应的页号为4097/4096=1,页内偏移量为4097%4096=1。由页表可知,页 号1对应的页框号也是1,页大小为4KB, 因此转换成的物理地址为1×4K+1=4097。
[tag_link]
【解答】
B 逻辑地址4097对应的页号为4097/4096=1,页内偏移量为4097%4096=1。由页表可知,页 号1对应的页框号也是1,页大小为4KB, 因此转换成的物理地址为1×4K+1=4097。
[tag_link]
D
B 在可变分区管理中,回收空闲区时采用拼接技术对空闲区进行合并。
[tag_link]
【解答】
B 在可变分区管理中,回收空闲区时采用拼接技术对空闲区进行合并。
[tag_link]
C
A 为使地址转换不影响到指令的执行速度,必须有硬件地址变换结构的支持,即需在系统中增 设一个重定位寄存器,用它来存放程序(数据)在内存中的始址。在执行程序或访问数据时,真 正访问的内存地址由相对地址与重定位寄存器中的地址相加而成,这时将始址存入重定位寄存 器,之后的地址访问即可通过硬件变换实现。因为系统处理器在同一时刻只能执行一条指令或访 问数据,所以为每道程序(数据)设置一个寄存器没有必要(同时也不现实,因为寄存器是很昂 贵的硬件,而且程序的道数是无法预估的),而只需在切换程序执行时重置寄存器内容。
[tag_link]
【解答】
A 为使地址转换不影响到指令的执行速度,必须有硬件地址变换结构的支持,即需在系统中增 设一个重定位寄存器,用它来存放程序(数据)在内存中的始址。在执行程序或访问数据时,真 正访问的内存地址由相对地址与重定位寄存器中的地址相加而成,这时将始址存入重定位寄存 器,之后的地址访问即可通过硬件变换实现。因为系统处理器在同一时刻只能执行一条指令或访 问数据,所以为每道程序(数据)设置一个寄存器没有必要(同时也不现实,因为寄存器是很昂 贵的硬件,而且程序的道数是无法预估的),而只需在切换程序执行时重置寄存器内容。
[tag_link]
D
A 装入内存后位置不会改变,且作业在内存中占用连续的存储空间,因此可以采用静态重定位。其 余三种方案均可能在运行过程中改变程序在内存中的位置,不能采用静态重定位。 202 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导 静态重定位只能对程序中的地址进行一次修改,而不能动态调整。在固定分区方式中,作业
[tag_link]
【解答】
A 装入内存后位置不会改变,且作业在内存中占用连续的存储空间,因此可以采用静态重定位。其 余三种方案均可能在运行过程中改变程序在内存中的位置,不能采用静态重定位。 202 2 0 2 7 年 操 作 系 统 考 研 复 习 指 导 静态重定位只能对程序中的地址进行一次修改,而不能动态调整。在固定分区方式中,作业
[tag_link]
B
A 动态重定位可以在程序加载或运行时,根据程序的实际存放位置,对程序中的地址进行修改, 使其与物理地址相符。静态重定位只能在程序加载时进行一次地址修改,若程序在运行过程中改 变了存放位置,则会出错。动态分配和静态分配是指内存的分配方式,与重定位无关。
[tag_link]
【解答】
A 动态重定位可以在程序加载或运行时,根据程序的实际存放位置,对程序中的地址进行修改, 使其与物理地址相符。静态重定位只能在程序加载时进行一次地址修改,若程序在运行过程中改 变了存放位置,则会出错。动态分配和静态分配是指内存的分配方式,与重定位无关。
[tag_link]
【解答】
B 可重定位装入程序在重定位的过程中执行,重定位寄存器(也称基址寄存器)用于存放进程 的基地址,地址变换机构用于将指令中的逻辑地址与重定位寄存器中的基地址相加得到物理地 址。目标程序是装入内存后执行的,动态重定位不依赖于目标程序。
[tag_link]
【解答】
B 可重定位装入程序在重定位的过程中执行,重定位寄存器(也称基址寄存器)用于存放进程 的基地址,地址变换机构用于将指令中的逻辑地址与重定位寄存器中的基地址相加得到物理地 址。目标程序是装入内存后执行的,动态重定位不依赖于目标程序。
[tag_link]
D
C 动态重定位允许程序在内存中移动,系统中只有一个重定位寄存器,每次切换进程时,都要 保存和恢复该寄存器的值,不会为每个进程分配一个重定位寄存器,选项B 错误。
[tag_link]
【解答】
C 动态重定位允许程序在内存中移动,系统中只有一个重定位寄存器,每次切换进程时,都要 保存和恢复该寄存器的值,不会为每个进程分配一个重定位寄存器,选项B 错误。
[tag_link]
A
B 静态装入是指在编程阶段就把物理地址计算好。可重定位是指在装入时把逻辑地址转换成物 理地址,但装入后不能改变。动态重定位是指在执行时再决定装入的地址并装入,装入后有可能 换出,所以同一个模块在内存中的物理地址是可能改变的,在作业运行过程中,当执行到一条访 存指令时,再把逻辑地址转换为主存的物理地址,实际上是通过地址变换机构实现的。
[tag_link]
【解答】
B 静态装入是指在编程阶段就把物理地址计算好。可重定位是指在装入时把逻辑地址转换成物 理地址,但装入后不能改变。动态重定位是指在执行时再决定装入的地址并装入,装入后有可能 换出,所以同一个模块在内存中的物理地址是可能改变的,在作业运行过程中,当执行到一条访 存指令时,再把逻辑地址转换为主存的物理地址,实际上是通过地址变换机构实现的。
[tag_link]
C
D 段号为2,其对应的首地址为480K, 段长度为20K, 大于154,所以逻辑地址(2,154)对应的 物理地址为480K+154。
[tag_link]
【解答】
D 段号为2,其对应的首地址为480K, 段长度为20K, 大于154,所以逻辑地址(2,154)对应的 物理地址为480K+154。
[tag_link]
C
B 最佳适配算法是指,每次为作业分配内存空间时,总是找到能满足空间大小需要的最小空闲 分区给作业,可以产生最小的内存空闲分区。从图中可以看出应选择大小为60KB 的空闲分区, 其首地址为330K。
[tag_link]
【解答】
B 最佳适配算法是指,每次为作业分配内存空间时,总是找到能满足空间大小需要的最小空闲 分区给作业,可以产生最小的内存空闲分区。从图中可以看出应选择大小为60KB 的空闲分区, 其首地址为330K。
[tag_link]
B
C 将上邻空闲区、下邻空闲区和回收区合并为一个空闲区,因此空闲区数反而减少了一个。而 仅有上邻空闲区或下邻空闲区时,空闲区数并不减少。
[tag_link]
【解答】
C 将上邻空闲区、下邻空闲区和回收区合并为一个空闲区,因此空闲区数反而减少了一个。而 仅有上邻空闲区或下邻空闲区时,空闲区数并不减少。
[tag_link]
C
D 在固定分区分配中,每个分区的大小是在系统启动时就确定了的,不会随着作业的长度而变 化。分区的大小可以不同,也可以相同,但是一旦确定,就不会改变。
[tag_link]
【解答】
D 在固定分区分配中,每个分区的大小是在系统启动时就确定了的,不会随着作业的长度而变 化。分区的大小可以不同,也可以相同,但是一旦确定,就不会改变。
[tag_link]
A
B 硬件地址变换机构一般用于动态重定位的情况。而单一连续分配和固定分区分配采用的是静 态重定位,不需要硬件地址变换机构,而由装入程序或操作系统来完成地址转换。因此,只有页 式存储管理、动态分区分配和页式虚拟存储管理需要硬件地址变换机构。
[tag_link]
【解答】
B 硬件地址变换机构一般用于动态重定位的情况。而单一连续分配和固定分区分配采用的是静 态重定位,不需要硬件地址变换机构,而由装入程序或操作系统来完成地址转换。因此,只有页 式存储管理、动态分区分配和页式虚拟存储管理需要硬件地址变换机构。
[tag_link]
B
C 内存保护是内存管理的一部分,是操作系统的任务,但是出于安全性和效率考虑,必须由硬 件实现,所以需要操作系统和硬件机构的合作来完成。
[tag_link]
【解答】
C 内存保护是内存管理的一部分,是操作系统的任务,但是出于安全性和效率考虑,必须由硬 件实现,所以需要操作系统和硬件机构的合作来完成。
[tag_link]
B
C 内存保护需要硬件和软件的配合,不能仅靠操作系统来实现。通常需要在 CPU 中设置上下 限寄存器、重定位寄存器、界地址寄存器等寄存器,以记录进程在内存中的合法范围。
[tag_link]
【解答】
C 内存保护需要硬件和软件的配合,不能仅靠操作系统来实现。通常需要在 CPU 中设置上下 限寄存器、重定位寄存器、界地址寄存器等寄存器,以记录进程在内存中的合法范围。
[tag_link]
B
B 存、缓存等技术提高数据的逻辑存取速度,但不能改变内存的物理特性。 内存的物理存取速度是由硬件决定的,而不是由操作系统管理的。操作系统可以通过虚拟内
[tag_link]
【解答】
B 存、缓存等技术提高数据的逻辑存取速度,但不能改变内存的物理特性。 内存的物理存取速度是由硬件决定的,而不是由操作系统管理的。操作系统可以通过虚拟内
[tag_link]
B