段页式虚拟存储器 (paged segmentation VM)

第 3 版 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

30. 所有程序都使用同样的虚拟地址空间,会不会发生信息被互相读写的情况呢?

答:不会。虚拟存储机制的引入,使得每个程序员可以在一个很大的虚拟地址空间中编写程序,不必考虑主存有多大,也不必考虑其他程序用的地址是否和自己用的地址有冲突。也就是说,每个程序员都在一个同样大小的虚拟地址空间中写程序。用户程序被加载时,操作系统内核会将该程序先生成一个新进程,每个用户进程在加载时都被映射到一个统一的虚拟地址空间中。因而,所有用户进程所用的虚拟地址空间大小是一样的。在进程执行过程中,操作系统会按照某种存储管理机制把当前需要的用户程序的一部分从外存调到主存中,并把存放的物理地址信息记录到段表或页表中。在每一条指令的执行过程中,CPU进行虚拟地址到物理地址的转换。因此,CPU访问信息的真正地址是主存物理地址。所以,虽然两个用户程序中用到的逻辑地址可能是一样的,但由于两个用户程序被存放到了不同的主存区,因而不会发生信息被互相读写的问题,即使由于程序错误而导致这种问题也很容易被发现。

31. 装入一个新的页面时,主存没有空闲块,怎么办?

答:装入一个新页时,需要到主存找一个空闲页框。如果内存没有空闲页框,则必须选择一个页面从主存的某个页框中替换出来。

32. 怎么知道要找的指令或数据不在主存?

答:对指令的访问实际上就是指每条指令执行过程中的取指令操作,而对数据的访问实际上就是执行指令过程中的读取操作数或写结果的操作。所谓要找的指令或数据不在主存,实际上就是在取某条指令或存取某个数据时,发生了缺页情况。是否缺页主要是通过查看对应页表项中的有效位是否为0来判断。大致过程是:根据要找的指令或操作数的地址高位,确定所访问的虚页号,以虚页号作为索引值,找到对应的页表项,每个页表项中都有一个有效位,若为0表示该页(即指令或数据所在的页)不在内存,发生了缺页异常。


<!-- page: 208 -->

33. 每次进行主存访问时,总是先要进行逻辑地址到物理地址的转换吗?
答:如果指令中给定的是逻辑地址,那么执行指令过程中如果进行主存访问,则总是先要进行逻辑地址到物理地址的转换;如果指令中给出的是物理地址,则主存访问时不需要进行逻辑地址到物理地址的转换。

34. 逻辑地址到物理地址的转换是由硬件实现的还是软件实现的?
答:由专门的硬件——存储器管理部件(MMU)实现逻辑地址到物理地址的转换,但需要在操作系统协同下完成,因为MMU在地址转换时所访问的页表主要是由操作系统生成和维护的。

35. 快表(TLB)在主存还是在高速缓存中?
答:主存是由慢速的DRAM芯片实现的,为了尽量避免到主存访问页表,通常把最近经常访问的页表项放到一个特殊的高速缓存(由快速的SRAM实现)中,这个存放若干页表项的特殊cache称为快表(TLB)。所以,快表在高速缓存中。

36. CPU执行指令进行一次存储访问操作要访问几次主存?
答:在具有cache的系统中,一次存储访问的过程如下。

(1) 根据虚页号查快表,若快表中有对应页的页表项,则取出页框号形成物理地址,转步骤(2);若快表中不存在对应页的页表项,则发生TLB缺失,转步骤(3)。
(2)判断物理地址中的标记是否和cache中标记相等并且有效位是否为1,若是,则cache命中,从cache取数或写数据到cache(直写方式同时也写主存);若不是,则发生cache缺失,转步骤(4)。
(3) 当 TLB 缺失时, 根据页表基址寄存器的值和虚页号找到主存中的页表项, 判断有效位是否为 1, 若是, 则说明该页在主存中, 把该页的页表项装入 TLB 中, 并取出页框号形成物理地址, 转步骤 (2); 若不是, 则说明该页不在主存中, 发生了缺页异常。此时, 需要调出操作系统中的缺页异常处理程序, 实现从外存读入一个页面的功能。缺页处理结束后, 重新执行当前指令。此时, 一定能在主存中找到需访问的信息。
(4)当cache缺失时,则CPU根据物理地址到主存读一块信息到cache,然后再取到CPU或CPU写信息到cache。

从上述过程来看,CPU进行一次存储访问操作,最好的情况下(TLB命中、cache命中),无须访问主存;最坏的情况下(缺页),不仅要多次访问主存,还要读写外存。

37. 具有 TLB、cache 和虚拟存储器的计算机系统中,有没有可能出现“cache 命中但缺页”的情况?“TLB 命中但缺页”的情况有没有可能发生呢?
答:不可能出现“cache命中但缺页”的情况。如果缺页,说明当前页不在主存中,那么也一定不在cache中。同样,“TLB命中但缺页”的情况也不可能发生。因为若当前页不在主存中,那么TLB中不可能有该页对应的有效页表项。

38. TLB缺失、cache缺失和页面缺失(缺页)的处理有什么异同点?
答:cache缺失的处理是由硬件来实现的。当发生cache缺失时,CPU使当前指令阻塞,并根据主存地址继续到主存中去访问主存块,从主存中取到信息后指令继续执行,因而CPU不会切换到其他程序执行。

TLB缺失可以用软件处理,也可以用硬件来处理。处理过程相当简单,只要根据虚页号和页表基址寄存器的内容到主存中找到相应的页表项,若有效位为1,则把该项取到TLB


<!-- page: 209 -->

中即可。若有效位为 0,则发出缺页异常。如果用软件来处理 TLB 缺失,则通过产生 TLB 缺失异常,引出操作系统中相应的异常处理程序进行处理,异常处理结束后,重新执行当前指令。

页面缺失(缺页)处理是由软件来实现的。缺页时,需要调出操作系统中的缺页异常处理程序进行处理,实现从外存读入一个页面的功能。缺页处理结束后,重新执行当前指令。

## 39. 存储器分层结构中,各层次上的存储器的速度如何?

答:在计算机系统中,存储器采用的是一种分层结构,包括寄存器-cache-主存-外存(如磁盘)。它们之间的相对速度若用CPU时钟周期来表示,则1个时钟周期不到就能从寄存器访问到信息;1~10个时钟周期能够在cache中访问到信息;50~100个时钟周期能在主存中访问到信息;如果要从磁盘读信息,则需要几十万到几百万个时钟周期。因此,程序员必须能够充分理解存储器的分层结构,它对程序的性能有巨大的影响。随着技术的进步,各类存储器的速度可能会发生变化,但它们之间的差异总是存在的。

## 7.5 单项选择题

1. 下面有关半导体存储器组织的叙述中,错误的是( )。

A. 存储器的核心部分是存储阵列,由若干存储单元构成
B. 存储单元由若干存放 0 或 1 的存储元件构成
C. 一个存储单元有一个编号,就是存储单元的地址
D. 同一个存储器中,每个存储单元的宽度可以不同

2. 下面哪种存储器是目前已被淘汰的存储器?( )

A. 半导体存储器
B. 磁表面存储器
C. 磁芯存储器
D. 固态硬盘

3. 若计算机的主存储器容量为 1GB,那么也就等于( )。

A. $2^{50}$ 字节
B. $10^{50}$ 字节
C. $2^{9}$ 字节
D. $10^{9}$ 字节

4. 某 SRAM 芯片,其容量为 $1024 \times 4$ 位,则地址和数据引脚的数目分别是( )。

A. 10,4
B. 5,4
C. 10,8
D. 5,8

5. 某计算机字长 16 位,主存地址空间大小是 64KB,按字节编址,则寻址范围是( )。

A. $0 \sim (64K - 1)$
B. $0 \sim (32K - 1)$
C. $0 \sim (64KB - 1)$
D. $0 \sim (32KB - 1)$

6. EPROM 是指( )。

A. 读写存储器
B. 掩膜只读存储器
C. 可编程的只读存储器
D. 可擦除可编程的只读存储器

7. 下列几种存储器中,( )是易失性存储器。

A. cache
B. EPROM
C. Flash Memory
D. CD-ROM

8. 假定主存地址空间大小为1024MB,按字节编址,每次读写操作最多可以一次存取32位。不考虑其他因素,则存储器地址寄存器MAR和存储器数据寄存器MDR的位数至少应分别为( )。

A. 30,8
B. 30,32
C. 28,8
D. 28,32

9. 需要定时刷新的半导体存储器芯片是( )。


<!-- page: 210 -->

A. SRAM
B. DRAM
C. EPROM
D. Flash Memory

10. 通常采用行、列地址引脚复用的半导体存储器芯片是( )。
A. SRAM
B. DRAM
C. EPROM
D. Flash Memory

11. 具有RAS(行地址选通)和CAS(列地址选通)信号引脚的半导体存储器芯片是( )。
A. SRAM
B. DRAM
C. EPROM
D. Flash Memory

12. 下面有关ROM和RAM的叙述中,错误的是( )。
A. RAM是可读可写存储器,ROM是只读存储器
B. ROM和RAM都采用随机访问方式进行读写
C. 系统的主存由 RAM 和 ROM 组成
D. 系统的主存都用 DRAM 芯片实现

13. 下面有关半导体存储器的叙述中,错误的是( )。
A. 半导体存储器都采用随机存取方式进行读写
B. ROM芯片属于半导体随机存储器芯片
C. SRAM 是半导体静态随机访问存储器,可用作 cache
D. DRAM 是半导体动态随机访问存储器,可用作主存

14. 假定 DDR3 SDRAM 芯片内部核心频率为 $133.25\mathrm{MHz}$,与之相连的存储器总线每次传输 8B,则下面有关叙述中,错误的是( )。
A. 芯片内部 I/O 缓冲采用 8 位预取技术
B. 存储器总线每秒传 1066M 次数据
C. 存储器总线的时钟频率为 $1066\mathrm{MHz}$
D. 存储器总线的带宽大约为 $8.5\mathrm{GB / s}$

15. 假定用若干 $16\mathrm{K} \times 1$ 位的存储器芯片组成一个 $64\mathrm{K} \times 8$ 位的存储器,芯片内各单元连续编址,则地址 BFF0H 所在的芯片的最小地址为( )。
A. 4000H
B. 6000H
C. 8000H
D. A000H

16. 假定用若干 $16\mathrm{K} \times 8$ 位的存储器芯片组成一个 $64\mathrm{K} \times 8$ 位的存储器,芯片各单元交叉编址,则地址 BFFFH所在的芯片的最小地址为( )。
A. 0000H
B. 0001H
C. 0002H
D. 0003H

17. 用存储容量为 $16\mathrm{K} \times 1$ 位的存储器芯片组成一个 $64\mathrm{K} \times 8$ 位的存储器,则在字方向和位方向上分别扩展了( )倍。
A. 4 和 2
B. 4 和 8
C. 2 和 4
D. 8 和 4

18. 存储容量为 $16\mathrm{K} \times 4$ 位的 DRAM 芯片,其地址引脚和数据引脚数各是( )。
A. 7 和 1
B. 7 和 4
C. 14 和 1
D. 14 和 4

19. 多模块存储器所以能高速进行读/写,是因为( )。
A. 采用了高速元器件
B. 各模块有独立的读写电路
C. 采用了信息预读技术
D. 模块内各单元地址连续

20. 相联存储器是按( )进行寻址访问的存储器。
A. 地址指定方式
B. 内容指定方式
C. 堆栈访问方式
D. 队列访问方式


<!-- page: 211 -->

21. 在存储器分层体系结构中,存储器速度从最快到最慢的排列顺序是( )。

A. 寄存器-主存-cache-辅存

B. 寄存器-主存-辅存-cache

C. 寄存器-cache-辅存-主存

D. 寄存器-cache-主存-辅存

22. 在存储器分层体系结构中,存储器从容量最大到最小的排列顺序是( )。

A. 主存-辅存-cache-寄存器

B. 辅存-cache-主存-寄存器

C. 辅存-主存-cache-寄存器

D. 辅存-主存-寄存器-cache

23. 以下有关磁盘驱动器的叙述中,错误的是( )。

A. 送到磁盘驱动器的盘地址由磁头号、盘面号和扇区号组成
B. 能控制磁头移动到指定磁道,并发回“寻道结束”信号
C. 能控制磁盘片转过指定的扇区,并发回“扇区符合”信号
D. 能对指定盘面的指定扇区进行数据的读或写操作

24. 假定一个磁盘存储器有 4 个盘片,用于记录信息的柱面数为 2000,每个磁道上有 3000 个扇区,每个扇区 512B,则该磁盘存储器的容量约为( )。

A. 12MB

B. 24MB

C. 12GB

D. 24GB

25. 假定一个磁盘的转速为 7200RPM(转/分),磁盘的平均寻道时间为 20ms,平均数据传输率为 1MB/s,不考虑排队等待时间,那么读一个 512B 的扇区的平均存取时间大约为( )。

A. 14.7ms

B. 18.8ms

C. 24.7ms

D. 28.8ms

26. 以下有关 RAID 技术的叙述中,错误的是( )。

A. RAID 技术可实现海量后备存储系统
B. RAID 技术可提高存储系统的可靠性
C. RAID 中的校验信息都存放在一个磁盘上
D. RAID 通过多个盘并行访问来提高速度

27. 假定下列字符编码中含有奇偶检验位,但没有发生数据错误,那么采用奇校验的字符编码是( )。

A. 0101 0011

B. 0110 0110

C. 1011 0000

D. 0011 0101

28. 假设需要传送的一个数据块的长度为 10 位,对每个数据块采用 CRC 校验,若约定的生成多项式为 $x^3 + 1$,则对应的 CRC 码的位数是( )。

A. 3

B. 4

C. 13

D. 14

29. 假设某个需要校验的数据为 0110 0101B,采用 CRC 校验,生成多项式为 $x^4 + x + 1$,则对应的校验码是( )。

A. 0010

B. 0110

C. 1110

D. 1111

30. 在主存和 CPU 之间增加 cache 的目的是( )。

A. 增加内存容量

B. 提高内存可靠性

C. 加快信息访问速度

D. 增加内存容量,同时加快访问速度

31. 以下( )情况能很好地发挥 cache 的作用。

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

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

C. 程序具有较好的访问局部性

D. 程序的指令间相关度不高

32. 假定主存地址位数为 32 位,按字节编址,主存和 cache 之间采用直接映射方式,主


<!-- page: 212 -->

存块大小为1个字,每字32位,写操作时采用直写(write through)方式,则能存放32K字数据的cache的总容量至少应有( )位。

A. 1504K

B. 1536K

C. 1568K

D. 1600K

33. 假定主存地址位数为 32 位,按字节编址,主存和 cache 之间采用直接映射方式,主存块大小为 1 个字,每字 32 位,写操作时采用回写(write back)方式,则能存放 32K 字数据的 cache 的总容量至少应有( )位。

A. 1504K

B. 1536K

C. 1568K

D. 1600K

34. 假定主存地址位数为 32 位,按字节编址,主存和 cache 之间采用全相联映射方式,主存块大小为 1 个字,每字 32 位,采用回写(write Back)方式和随机替换策略,则能存放 32K 字数据的 cache 的总容量至少应有( )位。

A. 1536K

B. 1568K

C. 2016K

D. 2048K

35. 假定主存按字节编址,cache 共有 64 行,采用直接映射方式,主存块大小为 32B,所有编号都从 0 开始。问主存第 2593 号单元所在主存块对应的 cache 行号是( )。

A. 1

B. 17

C. 34

D. 81

36. 假定主存按字节编址,cache 共有 64 行,采用 4 路组相联映射方式,主存块大小为 32B,所有编号都从 0 开始。问主存第 2593 号单元所在主存块对应的 cache 组号是( )。

A. 1

B. 17

C. 34

D. 81

37. 假定 CPU 通过存储器总线读取数据的过程为:发送地址和读命令需 1 个时钟周期,存储器准备一个数据需 8 个时钟周期,总线上每传送 1 个数据需 1 个时钟周期。若主存和 cache 之间交换的主存块大小为 64B,存取宽度和总线宽度都为 4B,则 cache 的一次缺失损失至少是( )个时钟周期。

A. 64

B. 72

C. 80

D. 160

38. 假定 CPU 通过存储器总线读取数据的过程为:发送地址和读命令需 1 个时钟周期,存储器准备一个数据需 8 个时钟周期,总线上每传送 1 个数据需 1 个时钟周期。若主存和 cache 之间交换的主存块大小为 64B,存取宽度和总线宽度都为 8B,则 cache 的一次缺失损失至少是多少个时钟周期?( )

A. 64

B. 72

C. 80

D. 160

39. 假定采用多模块交叉存储器组织方式,存储器芯片和总线支持突发传送,CPU 通过存储器总线读取数据的过程为:发送首地址和读命令需 1 个时钟周期,存储器准备第一个数据需 8 个时钟周期(即 CAS 潜伏期 = 8),随后每个时钟周期总线上传送 1 个数据,可连续传送 8 个数据(即突发长度 = 8)。若主存和 cache 之间交换的主存块大小为 64B,存取宽度和总线宽度都为 8B,则 cache 的一次缺失损失至少为( )个时钟周期。

A. 17

B. 20

C. 33

D. 65

40. 以下是有关虚拟存储管理机制中地址转换的叙述,其中错误的是( )。

A. 地址转换是指把逻辑地址转换为物理地址
B. 通常逻辑地址的位数比物理地址的位数少
C. 地址转换过程中会发现是否“缺页”
D. MMU 在地址转换过程中要访问页表项

41. 下列命中组合情况中,一次访存过程中不可能发生的是( )。


<!-- page: 213 -->

A. TLB 命中、cache 命中、Page 命中
B. TLB 未命中、cache 命中、Page 命中
C. TLB 未命中、cache 未命中、Page 命中
D. TLB 未命中、cache 命中、Page 未命中

42. 以下是有关虚拟存储管理机制中页表的叙述,其中错误的是( )。

A. 系统中每个进程有一个页表
B. 页表中每个表项与一个虚页对应
C. 每个页表项中都包含装入位(有效位)
D. 所有进程都可以访问页表

43. 以下是有关缺页处理的叙述,其中错误的是( )。

A. 若对应页表项中的有效位为 0,则发生缺页
B. 缺页是一种外部中断,需要调用操作系统提供的中断服务程序来处理
C. 缺页处理过程中需根据页表中给出的外存地址去读外存数据
D. 缺页处理完后要重新执行发生缺页的指令

44. 以下是有关页式存储管理的叙述,其中错误的是( )。

A. 进程被划分成等长的页,内存被划分成同样大小的页框
B. 采用全相联映射,每个页可以映射到任何一个空闲的页框中
C. 当从磁盘装入的信息不足一页时会产生页内碎片
D. 相对于段式存储管理,分页式更利于存储保护

45. 以下是有关段式存储管理的叙述,其中错误的是( )。

A. 段是逻辑结构上相对独立的程序块,因此段是可变长的
B. 按程序中实际的段来分配主存,所以分配后的存储块是可变长的
C. 每个段表项必须记录对应段在主存的起始位置和段的长度
D. 分段方式对低级语言程序员和编译器来说是透明的

46. 以下是有关快表的叙述,其中错误的是( )。

A. 快表的英文缩写是 TLB,称为转换后援缓冲器
B. 快表中存放的是当前进程的常用页表项
C. 在快表中命中时,在 L1 cache 中一定命中
D. 快表是一种高速缓存,通常在 CPU 中

47. 以下给出的事件中,无须异常处理程序进行处理的是( )。

A. 缺页故障
B. cache 缺失
C. 地址越界
D. 访问越权

【参考答案】

1. D
2. C
3. A
4. A
5. A
6. D
7. A
8. B
9. B
10. B

11. B
12. D
13. A
14. C
15. C
16. D
17. B
18. B
19. B
20. B

21. D
22. C
23. A
24. D
25. C
26. C
27. C
28. C
29. A
30. C

31. C
32. B
33. C
34. D
35. B
36. A
37. D
38. C
39. A
40. B

41. D
42. D
43. B
44. D
45. D
46. C
47. B


<!-- page: 214 -->

## 【部分题目的答案解析】

### 第1题

半导体存储器中用于存储0或1的是记忆单元(也称存储元),每个记忆单元由一个存储元件实现,所有存储元件构成一个存储阵列。若干存储元件构成一个存储单元,每个存储单元有一个地址,因而构成同一个存储单元的存储元件的地址是相同的,具有相同地址的存储元件的个数就是编址单位。例如,若编址单位是字节,则每个存储单元都是一个字节的宽度。综上所述,选项D的说法是错误的。答案为选项D。