1. 页面缓冲算法

2026 旧版 · 非 2027 主源 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

### 1. 页面缓冲算法

在页式虚拟存储系统中,页面换入/换出的开销会对系统性能产生重大影响。

影响页面换入/换出效率的因素主要包括:

1)对页面进行置换的算法。好的页面置换算法可使进程在运行过程中具有较低的缺页率,从而减少页面换入/换出的开销。

2)将已修改页面写回磁盘的频率。对于已被修改的页面,将其换出时,应写回磁盘。若每当有一个页面要被换出时就将它写回磁盘,则会导致很大的磁盘I/O开销。

3)将磁盘内容读入内存的频率。若进程的每次访问都要将磁盘内容读入内存,则会导致非


<!-- page: 234 -->

常高的磁盘 I/O 频率,进而增加页面换入的开销。

页面缓冲算法在原页面置换算法的基础上增设已修改页面链表,保存已修改且需要被换出的页面,等被换出的页面数量达到一定值时,再一起换出到磁盘,以减少页面换出的开销。页面缓冲算法的主要特点有:显著降低页面换入/换出的频率,使磁盘的 I/O 开销大为减少,进而减小页面换入/换出的开销;由于换入/换出的开销大幅减小,当其采用一种较简单的置换策略(如 FIFO 页面置换算法)时,不需要特殊硬件的支持,实现起来非常简单。

为了显著降低页面换入/换出的频率,在内存中设置了如下两个链表:

1)空闲页面链表。也称空闲页框链表。当进程需要读入一个页面时,便从空闲页面链表中取链首的页框并装入该页。当有一个未被修改的页面要换出时,实际上并不将它换出到磁盘,而将它所在的页框挂在空闲链表的链尾。注意,这些挂在空闲链表内且未被修改的页框中是有数据的,若以后某个进程需要这些数据,则可从空闲链表上将它们取下,进而避免从磁盘读入的操作,减少页面换入的开销。

2)修改页面链表。当进程需要将一个已修改的页面换出时,系统并不立即将它换出到磁盘,而将它所在的页框挂在修改页面链表的末尾。这样做的目的是降低将已修改页面写回磁盘的频率,进而降低将磁盘内容读入内存的频率。

上述将物理页面换出的过程即为页框的回收。

## 2. 页框回收

当系统可分配的内存不足时,就必须回收一些页框,但并非所有页框都是可以回收的。属于内核的大部分页框(如内核栈、内核代码段、内核数据段和大部分内核使用的页框)都是不能回收的,而由进程使用的页框(如进程代码段、进程数据段、进程堆栈、进程访问文件时映射的文件页、进程间共享内存使用的页框)大部分是可以回收的。

在 Linux 内核中,设置了一个负责页面换出的守护进程 kswapd,它定期检查内存的使用情况,当空闲页框数量少于特定的阈值时,便发起页框回收操作。下面解释为什么空闲页框数量少于特定的阈值时就要发起回收操作。例如,要释放一个页框,内核可能需要将页框的数据写回磁盘,为此内核可能要请求一个页框来作为 I/O 传送的缓冲区,而系统中不存在空闲页框,因此不可能释放页框,此时可能导致内核陷入一种内存请求的僵局,并导致系统奔溃。

Linux 系统采用 3.1.2 节介绍的“伙伴算法”对内存中具有不同长度的连续空闲页框进行统计和记录。将内存中连续的空闲页框视为空闲页框块,并根据它们的大小(连续页框的数量)分组。分配页框是一个化整为零的过程,会产生很多碎片,而系统也必须有把零碎的页框合并成大的连续页框块的机制,Linux 使用伙伴算法的逆操作进行页框的回收。回收页框时,算法先检查是否有大小相等的伙伴页框块存在,若有,则将它们合并成一个大小为原来两倍的新空闲页框块,每次合并完后,还要检查是否可以继续合并成更大的页框块。

## 3.2.7 内存映射文件

内存映射文件(Memory-Mapped Files)是操作系统向应用程序提供的一个系统调用,它与虚拟内存有些相似,在磁盘文件与进程的虚拟地址空间之间建立映射关系。

进程通过该系统调用,将一个文件映射到其虚拟地址空间的某个区域,之后就能用访问内存的方式来读/写文件。这种功能将一个文件当作内存中的一个大字符数组来访问,而不通过文件 I/O 操作来访问,显然更为便利。磁盘文件的读/写由操作系统负责完成,对进程而言是透明的。在映射进程的页面时,不会实际读入文件的内容,而只在访问页面时才被每次一页地读入。当进程退出或关闭文件映射时,所有被改动的页面才被写回磁盘文件。


<!-- page: 235 -->

进程可通过共享内存来通信,实际上,很多时候,共享内存是通过映射相同文件到通信进程的虚拟地址空间来实现的。当多个进程映射到同一个文件时,各进程的虚拟地址空间都是相互独立的,但操作系统将对应的这些虚拟地址空间映射到相同的物理内存(用页表实现),如图3.28所示。一个进程在共享内存上完成了写操作,此刻当另一个进程在映射到这个文件的虚拟地址空间上执行读操作时,就能立刻看到上一个进程写操作的结果。

图3.28 采用内存映射I/O的共享内存

由此可见,内存映射文件带来的好处主要是:①使程序员的编程更简单,已建立映射的文件,只需按访问内存的方式进行读/写;②方便多个进程共享同一个磁盘文件。

## 3.2.8 虚拟存储器性能影响因素

**前期测绘** ➔ 请求分页系统性能的影响因素分析(2020、2022)

缺页率是影响虚拟存储器性能的主要因素,而缺页率又受到页面大小、分配给进程的物理块数、页面置换算法以及程序的编制方法的影响。

根据局部性原理,页面较大则缺页率较低,页面较小则缺页率较高。页面较小时,一方面减少了内存碎片,有利于提高内存利用率;另一方面,也会使每个进程要求较多的页面,导致页表过长,占用大量内存。页面较大时,虽然可以减少页表长度,但会使页内碎片增大。

分配给进程的物理块数越多,缺页率就越低,但是当物理块超过某个数量时,再为进程增加一个物理块对缺页率的改善是不明显的。可见,此时已没有必要再为它分配更多的物理块,否则也只能是浪费内存空间。只要保证活跃页面在内存中,保持缺页率在一个很低的范围即可。

好的页面置换算法可使进程在运行过程中具有较低的缺页率。选择LRU、CLOCK等置换算法,将未来有可能访问的页面尽量保留在内存中,从而提高页面的访问速度。

写回磁盘的频率。换出已修改过的页面时,应当写回磁盘,若每当一个页面被换出就将它写回磁盘,则每换出一个页面就需要启动一次磁盘,效率极低。为此在系统中建立一个已修改换出页面的链表,对每个要被换出的页面(已修改),可以暂不将它们写回磁盘,而将它们挂在该链表上,仅当被换出页面数达到给定值时,才将它们一起写回磁盘,这样就可显著减少磁盘I/O的次数,即减少已修改页面换出的开销。此外,若有进程在这批数据还未写回磁盘时需要再次访问这些页面,则不需从外存调入,而直接从已修改换出页面链表上获取,这样也可以减少页面从磁盘读入内存的频率,减少页面换进的开销。

编写程序的局部化程度越高,执行时的缺页率就越低。若存储采用的是按行存储,则访问时就要尽量采用相同的访问方式,避免按列访问造成缺页率过高的现象。

## 3.2.9 地址翻译

考虑到统考真题越来越喜欢考查学科综合的趋势,本节结合“计算机组成原理”的Cache部分,来说明虚实地址的变换过程。对于不参加统考的读者,可视情况跳过本节;对于参加统考却


<!-- page: 236 -->

尚未复习计算机组成原理的读者,可在复习之后,再回过头来学习本节内容。

设某系统满足以下条件:

- 有一个TLB与一个data Cache
- 存储器以字节为编址单位
- 虚拟地址14位
- 物理地址12位
- 页面大小为64B
- TLB为四路组相联,共有16个条目
- data Cache 是物理寻址、直接映射的,行大小为 4B,共有 16 组

写出访问地址为 0x03d4, 0x00f1 和 0x0229 的过程。

因为本系统以字节编址,页面大小为64B,则页内偏移地址为  $\log_2(64\mathrm{B} / 1\mathrm{B}) = 6$  位,所以虚拟页号为  $14 - 6 = 8$  位,物理页号为  $12 - 6 = 6$  位。因为TLB为四路组相联,共有16个条目,则TLB共有  $16 / 4 = 4$  组,因此虚拟页号中低  $\log_24 = 2$  位就为组索引,高6位就为TLB标记。又因为Cache行大小为4B,因此物理地址中低  $\log_24 = 2$  位为块偏移,Cache共有16组,可知接下来  $\log_216 = 4$  位为组索引,剩下高6位作为标记。地址结构如图3.29所示。

(a) 虚拟地址

(b) 物理地址
图3.29 地址结构

TLB、页表、data Cache 内容如表3.1、表3.2及表3.3所示。

表 3.1 TLB

[tbl-99.md](tbl-99.md)

表 3.2 部分页表

[tbl-100.md](tbl-100.md)

表 3.3 data Cache 内容

[tbl-101.md](tbl-101.md)
[tbl-102.md](tbl-102.md)


<!-- page: 237 -->

先将十六进制的虚拟地址 0x03d4, 0x00f1 和 0x0229 转化为二进制形式,如表 3.4 所示。

表 3.4 虚拟地址结构

[tbl-103.md](tbl-103.md)

得到每个地址的组索引和 TLB 标记,接下来就要找出每个地址的页面在不在主存中,若在主存中,则还要找出物理地址。

对于 0x03d4,组索引为 3,TLB 标记为 0x03,查 TLB,第 3 组中正好有标记为 03 的项,有效位为 1,可知页面在主存中,对应的物理页号为 0d(001101),再拼接页内地址 010100,可得物理地址为 0x354(001101010100)。

对于 0x00f1,组索引为 3,TLB 标记为 0x00,查 TLB,第 3 组中没有标记为 00 的项,再去找页表,虚拟页号为 0x03,页表第 3 行的有效位为 1,可知页面在主存中,物理页号为 02(000010),再拼接页内地址 110001,可得物理地址为 0x0b1(000010110001)。

对于 0x0229,组索引为 0,TLB 标记为 0x02,查 TLB,第 0 组中没有标记为 02 的项,再去找页表,虚拟页号为 0x08,页表第 8 行的有效位为 0,页面不在主存中,产生缺页中断。

找出在主存中的页面的物理地址后,就要通过物理地址访问数据,接下来要找该物理地址的内容在不在 Cache 中,物理地址结构如表 3.5 所示。

表 3.5 物理地址结构

[tbl-104.md](tbl-104.md)

对于 0x354,Cache 索引为 5,Cache 标记为 0x0d,对照 Cache 中索引为 5 的行,标记正好为 0d,有效位为 1,可知该块在 Cache 中,偏移 0,即块 0,可得虚拟地址 0x03d4 的内容为 36H。

对于 0x0b1,Cache 索引为 c,Cache 标记为 0x02,对照 Cache 中索引为 c 的行,有效位为 0,可知该块不在 Cache 中,要去主存中查找物理页号为 2、偏移为 0x31 的内容。

以上例子基本覆盖了从虚拟地址到 Cache 查找内容的所有可能出现的情况,读者务必要掌握此节的内容,查找顺序是从 TLB 到页表(TLB 不命中),再到 Cache 和主存,最后到外存。

## 3.2.10 本节小结

本节开头提出的问题的参考答案如下。

1)为什么要引入虚拟内容?

上一节提到过,多道程序并发执行不仅使进程之间共享了处理器,同时还共享了主存。然而,随着对处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。但是,若同时运行的进程太多,则需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。所以,


<!-- page: 238 -->

在物理上扩展内存相对有限的条件下,应尝试以一些其他可行的方式在逻辑上扩充内存。

2)虚拟内存(虚存)空间的大小由什么因素决定?

虚拟内存空间的大小只与虚拟地址的位数有关。假设虚拟地址为32位,存储器按字节编址,则虚存空间的大小为 4GB($2^{32}\mathrm{B}$)。若虚存空间的大小超过4GB,则32位的地址将无法访问全部虚存空间,也就是说4GB以后的空间会被浪费,相当于没有一样,没有任何意义。

3)虚拟内存是怎么解决问题的?会带来什么问题?

虚拟内存使用外存上的空间来扩充内存空间,通过一定的换入/换出,使得整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间增加,若使用了不合适的替换算法,则会大大降低系统性能。

本节学习了4种页面置换算法,要将它们与处理机调度算法区分开。当然,这些调度算法之间也是有联系的,它们都有一个共同点,即通过一定的准则决定资源的分配对象。在处理机调度算法中这些准则比较多,有优先级、响应比、时间片等,而在页面调度算法中就比较简单,即是否被用到过或近段时间内是否经常使用。在操作系统中,几乎每类资源都会有相关的调度算法,读者通过将这些调度算法作为线索,可将整个操作系统的课程连成一个整体。

## 3.2.11 本节习题精选

### 一. 单项选择题

01. 请求分页存储管理中,若把页面尺寸增大一倍而且可容纳的最大页数不变,则在程序顺序执行时缺页中断次数会()。

A. 增加

B. 减少

C. 不变

D. 可能增加也可能减少

02. 进程在执行中发生了缺页中断,经操作系统处理后,应让其执行()指令。

A. 被中断的前一条

B. 被中断的那一条

C. 被中断的后一条

D. 启动时的第一条

03. 虚拟存储技术是()。

A. 补充内存物理空间的技术

B. 补充内存逻辑空间的技术

C. 补充外存空间的技术

D. 扩充输入/输出缓冲区的技术

04. 下列关于虚拟存储器的论述中,正确的是()。

A. 作业在运行前,必须全部装入内存,且在运行过程中也一直驻留内存

B. 作业在运行前,不必全部装入内存,且在运行过程中也不必一直驻留内存

C. 作业在运行前,不必全部装入内存,但在运行过程中必须一直驻留内存

D. 作业在运行前,必须全部装入内存,但在运行过程中不必一直驻留内存

05. 以下不属于虚拟内存特征的是()。

A. 一次性

B. 多次性

C. 对换性

D. 虚拟性

06. 为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性是()。

A. 该程序不应含有过多的I/O操作

B. 该程序的大小不应超过实际的内存容量

C. 该程序应具有较好的局部性

D. 该程序的指令相关性不应过多

07. ()是请求分页存储管理方式和基本分页存储管理方式的区别。

A. 地址重定向

B. 不必将作业全部装入内存


<!-- page: 239 -->

C. 采用快表技术
D. 不必将作业装入连续区域

08. 通常所说的“存储保护”的基本含义是( )。

A. 防止存储器硬件受损
B. 防止程序在内存丢失
C. 防止程序间相互越界访问
D. 防止程序源码被人偷窃

09. 在页式虚拟存储管理中,程序的链接方式必然是( )。

A. 静态链接
B. 装入时动态链接
C. 运行时动态链接
D. 不确定哪种链接方式

10. 虚拟地址指的是( )。

A. 程序访问内存时使用的地址
B. 访问内存总线上的地址
C. 内存与磁盘交换数据时使用的地址
D. 寄存器的地址

11. 在采用页式虚拟存储管理和固定分配局部置换策略的系统中,数组采用行优先存储,页框大小为512B。某个进程中有如下代码段(该代码段已提前读入内存):

int a[128][128];
for(int i=0; i&amp;lt;128; i++)
for(int j=0; j&amp;lt;128; j++)
a[j][i]=0;
系统为该进程分配的数据区只有1个页框,则执行该代码会发生( )次缺页中断。 A. 1 B. 2 C. 128 D. 16384 12. 假设某个进程分配有4个页框,每个页框大小为128个字(一个整数占一个字)。进程的代码段正好可以存放在一页中,而且总是占用0号页框。数据会在其他3个页框中换进或换出。数组X为按行优先存储,则执行该进程会发生( )次缺页中断。
int X[64][64];
for(int j=0; j&amp;lt;64; j++)
for(int i=0; i&amp;lt;64; i++)
X[i][j]=0;
A. 32 B. 1024 C. 2048 D. 其他都不对 13. 在配置了TLB的页式虚拟存储管理的系统中,假设TLB的命中率约为 $75\%$ ,忽略访问TLB的时间,并且使用二级页表,则每次存取的平均访存次数是( )。 A. 1.25 B. 1.5 C. 1.75 D. 2 14. 下面关于请求页式系统的页面调度算法中,说法错误的是( )。 A. 一个好的页面调度算法应减少和避免抖动现象 B. FIFO算法实现简单,选择最先进入主存储器的页面调出 C. LRU算法基于局部性原理,首先调出最近一段时间内最长时间未被访问过的页面 D. CLOCK算法首先调出一段时间内被访问次数多的页面 15. 考虑页面置换算法,系统有 $m$ 个物理块供调度,初始时全空,页面引用串长度为 $p$ ,包含了 $n$ 个不同的页号,无论用什么算法,缺页次数不会少于( )。 A. $m$ B. $p$ C. $n$ D. $\min(m, n)$ 16. 在请求分页存储管理中,若采用FIFO页面淘汰算法,则当可供分配的页帧数增加时,缺页中断的次数( )。 A. 减少 B. 增加 C. 无影响 D. 可能增加也可能减少 <!-- page: 240 --> 17. 设主存容量为 1MB,外存容量为 400MB,计算机系统的地址寄存器有 32 位,那么虚拟存储器的最大容量是( )。 A. 1MB B. 401MB C. $1\mathrm{MB} + 2^{32}\mathrm{MB}$ D. $2^{32}\mathrm{B}$ 18. 一台机器有 32 位虚拟地址和 16 位物理地址,若页面大小为 512B,采用单级页表,则页表共有( )个页表项。 A. $2^{7}$ B. $2^{16}$ C. $2^{23}$ D. $2^{32}$ 19. 在某分页存储管理的系统中,逻辑地址为 16 位,页面大小为 1KB,第 0, 1, 2, 3 号页依次存放在 3, 7, 11, 10 号页框中,则逻辑地址 0A6FH 对应的物理地址为( )。 A. 1E6FH B. 2E6FH C. DE6FH D. EE6FH 20. 在决定页面大小时,选择较小的页面是为了减少( )。 A. 页表大小 B. 缺页次数 C. I/O 开销 D. 页内碎片 21. 某虚拟存储器系统采用页式内存管理,使用 LRU 页面替换算法,考虑页面访问地址序列 18178272183821317137。假定内存容量为 4 个页面,开始时是空的,则页面失效次数是( )。 A. 4 B. 5 C. 6 D. 7 22. 导致 LRU 算法实现起来耗费高的原因是( )。 A. 需要硬件的特殊支持 B. 需要特殊的中断处理程序 C. 需要在页表中标明特殊的页类型 D. 需要对所有的页进行排序 23. 在虚拟存储器系统的页表项中,决定是否会发生页故障的是( )。 A. 有效位 B. 修改位 C. 页类型 D. 保护码 24. 在页面置换策略中,( )策略可能引起抖动。 A. FIFO B. LRU C. 没有一种 D. 所有 25. 虚拟存储管理系统的基础是程序的( )理论。 A. 动态性 B. 虚拟性 C. 局部性 D. 全局性 26. 请求分页存储管理的主要特点是( )。 A. 消除了页内零头 B. 扩充了内存 C. 便于动态链接 D. 便于信息共享 27. 在请求分页存储管理的页表中增加了若干项信息,其中修改位和访问位供( )参考。 A. 分配页面 B. 调入页面 C. 置换算法 D. 程序访问 28. 下列关于驻留集和工作集的表述中,正确的是( )。 I. 驻留集是进程已装入内存的页面的集合 II. 工作集是某段时间间隔内,进程运行所需要访问页面的集合 III. 工作集是驻留集的子集 A. I B. I、II C. II、III D. I、II、III 29. 在配置了 TLB 的页式虚拟存储管理的系统中,假设访问内存需要 $1\mu \mathrm{s}$,查询 TLB 需要 $0.2\mu \mathrm{s}$。已知 TLB 和内存的访问是串行的,请问在 TLB 命中率为 $85\%$ 和 $50\%$ 时,系统的平均访问时间分别是多少?( ) A. $1.5\mu \mathrm{s}, 1.8\mu \mathrm{s}$ B. $1.35\mu \mathrm{s}, 1.7\mu \mathrm{s}$ C. $1.6\mu \mathrm{s}, 1.7\mu \mathrm{s}$ D. $1.35\mu \mathrm{s}, 1.8\mu \mathrm{s}$ 30. 下列选项中,( )不是页面换进换出效率的影响因素。 A. 页面置换算法 B. 已修改页面写回磁盘的频率 C. 磁盘数据读入内存的频率 D. CPU 与内存交换的速度 <!-- page: 241 --> 31. 允许进程在所有页框中选择一个页面替换,而不管该页框是否已分配给其他进程的置换方法是( )。 A. 局部置换 B. 全局置换 C. 进程外置换 D. 进程内置换 32. 在页面置换算法中,存在 Belady 现象的算法是( )。 A. 最佳页面置换算法(OPT) B. 先进先出置换算法(FIFO) C. 最近最久未使用算法(LRU) D. 最近未使用算法(NRU) 33. 页式虚拟存储管理的主要特点是( )。 A. 不要求将作业装入主存的连续区域 B. 不要求将作业同时全部装入主存的连续区域 C. 不要求进行缺页中断处理 D. 不要求进行页面置换 34. 提供虚拟存储技术的存储管理方法有( )。 A. 动态分区存储管理 B. 页式存储管理 C. 请求段式存储管理 D. 存储覆盖技术 35. 内存映射可以将一个文件映射到进程的虚拟地址空间的某个区域,实现文件磁盘地址和进程虚拟地址空间的映射关系,下列说法中正确的是( )。 A. 内存映射文件是将整个文件内容一次性加载到内存中的一种方式 B. 内存映射文件只适用于读取文件,不支持对文件进行写操作 C. 内存映射文件可以通过修改内存中的数据来实现对文件的写操作 D. 由于进程的虚拟地址空间是独立的,内存映射文件不支持多进程映射到同一文件 36. 在虚拟分页存储管理系统中,若进程访问的页面不在主存中,且主存中没有可用的空闲帧时,系统正确的处理顺序为( )。 A. 决定淘汰页→页面调出→缺页中断→页面调入 B. 决定淘汰页→页面调入→缺页中断→页面调出 C. 缺页中断→决定淘汰页→页面调出→页面调入 D. 缺页中断→决定淘汰页→页面调入→页面调出 37. 已知系统为 32 位实地址,采用 48 位虚拟地址,页面大小为 4KB,页表项大小为 8B。假设系统使用纯页式存储,则要采用( )级页表,页内偏移( )位。 A. 3, 12 B. 3, 14 C. 4, 12 D. 4, 14 38. 下列说法中,正确的是( )。 I. 先进先出(FIFO)页面置换算法会产生 Belady 现象 II. 最近最少使用(LRU)页面置换算法会产生 Belady 现象 III. 在进程运行时,若其工作集页面都在虚拟存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象 IV. 在进程运行时,若其工作集页面都在主存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象 A. I, III B. I, IV C. II, III D. II, IV 39. 测得某个采用按需调页策略的计算机系统的部分状态数据为:CPU 利用率为 $20\%$,用于交换空间的磁盘利用率为 $97.7\%$,其他设备的利用率为 $5\%$。由此判断系统出现异常,这种情况下( )能提高系统性能。 A. 安装一个更快的硬盘 B. 通过扩大硬盘容量增加交换空间 <!-- page: 242 --> C. 增加运行进程数 D. 加内存条来增加物理空间容量 40. 假定有一个请求分页存储管理系统,测得系统各相关设备的利用率为:CPU的利用率为 $10\%$,磁盘交换区的利用率为 $99.7\%$,其他I/O设备的利用率为 $5\%$。下面( )措施将可能改进CPU的利用率。 I. 增大内存的容量 II. 增大磁盘交换区的容量 III. 减少多道程序的度数 IV. 增加多道程序的度数 V. 使用更快速的磁盘交换区 VI. 使用更快速的CPU A. I、II、III、IV B. I、III C. II、III、V D. II、VI 41. 在请求分页存储管理系统中,为了提高TLB命中率,可行的方法是( )。 I. 增大TLB容量 II. 采用多级页表 III. 提高页面大小 IV. 降低页面大小 A. I和III B. I和IV C. I、II和III D. II和III 42.【2011统考真题】在缺页处理过程中,操作系统执行的操作可能是( )。 I. 修改页表 II. 磁盘I/O III. 分配页框 A. 仅I、II B. 仅II C. 仅III D. I、II和III 43.【2011统考真题】当系统发生抖动时,可以采取的有效措施是( )。 I. 撤销部分进程 II. 增加磁盘交换区的容量 III. 提高用户进程的优先级 A. 仅I B. 仅II C. 仅III D. 仅I、II 44.【2012统考真题】下列关于虚拟存储器的叙述中,正确的是( )。 A. 虚拟存储只能基于连续分配技术 B. 虚拟存储只能基于非连续分配技术 C. 虚拟存储容量只受外存容量的限制 D. 虚拟存储容量只受内存容量的限制 45.【2013统考真题】若用户进程访问内存时产生缺页,则下列选项中,操作系统可能执行的操作是( )。 I. 处理越界错 II. 置换页 III. 分配内存 A. 仅I、II B. 仅II、III C. 仅I、III D. I、II和III 46.【2014统考真题】下列措施中,能加快虚实地址转换的是( )。 I. 增大快表(TLB)容量 II. 让页表常驻内存 III. 增大交换区(swap) A. 仅I B. 仅II C. 仅I、II D. 仅II、III 47.【2014 统考真题】在页式虚拟存储管理系统中,采用某些页面置换算法会出现 Belady 异常现象,即进程的缺页次数会随着分配给该进程的页框个数的增加而增加。下列算法中,可能出现 Belady 异常现象的是( )。 I. LRU 算法 II. FIFO 算法 III. OPT 算法 A. 仅II B. 仅I、II C. 仅I、III D. 仅II、III 48.【2015统考真题】在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是( )。 A. 可变分配,全局置换 B. 可变分配,局部置换 C. 固定分配,全局置换 D. 固定分配,局部置换 49.【2015统考真题】系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为7,依据LRU算法,应淘汰页的页号是( )。 A. 2 B. 3 C. 4 D. 8 <!-- page: 243 --> 50. 【2016 统考真题】某系统采用改进型 CLOCK 置换算法,页表项中字段 $A$ 为访问位,$M$ 为修改位。$A = 0$ 表示页最近没有被访问,$A = 1$ 表示页最近被访问过。$M = 0$ 表示页未被修改过,$M = 1$ 表示页被修改过。按 $(A, M)$ 所有可能的取值,将页分为 $(0, 0), (1, 0), (0, 1)$ 和 $(1, 1)$ 四类,则该算法淘汰页的次序为()。 A. $(0, 0), (0, 1), (1, 0), (1, 1)$ B. $(0, 0), (1, 0), (0, 1), (1, 1)$ C. $(0, 0), (0, 1), (1, 1), (1, 0)$ D. $(0, 0), (1, 1), (0, 1), (1, 0)$ 51. 【2016 统考真题】某进程访问页面的序列如下所示(注意,抖动和工作集已从最新大纲中删除)。 $$ \cdots, 1, 3, 4, 5, 6, 0, 3, 2, 3, 2, 0, 4, 0, 3, 2, 9, 2, 1, \cdots $$ 时间 若工作集的窗口大小为 6,则在 $t$ 时刻的工作集为()。 A. $\{6, 0, 3, 2\}$ B. $\{2, 3, 0, 4\}$ C. $\{0, 4, 3, 2, 9\}$ D. $\{4, 5, 6, 0, 3, 2\}$ 52. 【2019 统考真题】某系统采用 LRU 页置换算法和局部置换策略,若系统为进程 P 预分配了 4 个页框,进程 P 访问页号的序列为 $0, 1, 2, 7, 0, 5, 3, 5, 0, 2, 7, 6$,则进程访问上述页的过程中,产生页置换的总次数是()。 A. 3 B. 4 C. 5 D. 6 53. 【2020 统考真题】下列因素中,影响请求分页系统有效(平均)访存时间的是()。 I. 缺页率 II. 磁盘读/写时间 III. 内存访问时间 IV. 执行缺页处理程序的 CPU 时间 A. 仅 II、III B. 仅 I、IV C. 仅 I、III、IV D. I、II、III 和 IV 54. 【2021 统考真题】某请求分页存储系统的页大小为 4KB,按字节编址。系统给进程 P 分配 2 个固定的页框,并采用改进型 Clock 置换算法,进程 P 页表的部分内容见下表。 [tbl-105.md](tbl-105.md) 若 P 访问虚拟地址为 02A01H 的存储单元,则经地址变换后得到的物理地址是()。 A. 00A01H B. 20A01H C. 60A01H D. 80A01H 55. 【2022 统考真题】某进程访问的页 b 不在内存中,导致产生缺页异常,该缺页异常处理过程中不一定包含的操作是()。 A. 淘汰内存中的页 B. 建立页号与页框号的对应关系 C. 将页 b 从外存读入内存 D. 修改页表中页 b 对应的存在位 56. 【2022 统考真题】下列选项中,不会影响系统缺页率的是()。 A. 页置换算法 B. 工作集的大小 C. 进程的数量 D. 页缓冲队列的长度 <!-- page: 244 --> 57. 【2023 统考真题】对于采用虚拟内存管理方式的系统,下列关于进程虚拟地址空间的叙述中,错误的是()。 A. 每个进程都有自己独立的虚拟地址空间 B. C 语言中 malloc() 函数返回的是虚拟地址 C. 进程对数据段和代码段可以有不同的访问权限 D. 虚拟地址空间的大小由内存和硬盘的大小决定