2023计算机学科专业基础综合全卷预览

2023年408真题

2023年408真题完整试卷,包含 40 道选择题和 7 道综合应用题,共 47 题,题目分值合计 149 分。可按目录阅读全卷,展开参考答案解析,或进入对应题目练习。

返回年度练习
47题全卷题目
149分题目分值合计
40题选择题 · 80分
7题综合应用题 · 69分

选择题

40 题 · 共 80 分

第 1 题

数据结构
2 分

下列对顺序存储的有序表(长度为 n)实现给定操作的算法中,平均时间复杂度为 O(1)的是( )。

A. 查找包含指定值元素的算法

B. 插入包含指定值元素的算法

C. 删除第 i(1≤i≤n)个元素的算法

D. 获取第 i(1≤i≤n)个元素的算法

查看答案与解析收起答案与解析

参考答案:D

题目详解:
顺序存储的有序表是指元素在内存中连续存储,并且按照一定的顺序(如升序或降序)排列。我们需要分析每个选项的操作在顺序存储的有序表中的平均时间复杂度:

A. 查找包含指定值元素的算法:由于表是有序的,可以使用二分查找,其时间复杂度为 O(log⁡n) O(\log n) ,不是 O(1) O(1) 。

B. 插入包含指定值元素的算法:插入操作需要找到合适的位置(时间复杂度为 O(log⁡n) O(\log n) 或 O(n) O(n) ),并移动后续元素(最坏情况下需要移动 O(n) O(n) 个元素),因此平均时间复杂度为 O(n) O(n) ,不是 O(1) O(1) 。

C. 删除第 i i (1≤ i i ≤ n n )个元素的算法:删除操作需要移动后续元素(最坏情况下需要移动 O(n) O(n) 个元素),因此平均时间复杂度为 O(n) O(n) ,不是 O(1) O(1) 。

D. 获取第 i i (1≤ i i ≤ n n )个元素的算法:顺序存储的有序表支持随机访问,可以直接通过下标 i i 获取元素,时间复杂度为 O(1) O(1) 。

正确答案:D

进入练习

第 2 题

数据结构
2 分

现有非空双向链表 L,其结点结构为: prev data next ,prev 是指向直接前驱结点的指针,next 是指向直接后继结点的指针。若要在 L 中指针 p 所指向的结点(非尾结点)之后插入指针 s 指向的新结点,则在执行了语句序列:“s->next=p->next; p->next=s”后,下列语句序列中还需要执行的是( )。

A. s->next->prev=p; s->prev=p;

B. p->next->prev=s; s->prev=p;

C. s->prev=s->next->prev; s->next->prev=s;

D. p->next->prev=s->prev; s->next->prev=p;

查看答案与解析收起答案与解析

参考答案:C

题目详解:
在双向链表中插入一个新结点 s s 到结点 p p 之后,需要正确调整前驱和后继指针。初始状态下,p p 的后继结点为 q q (即 q=p→next q = p \rightarrow \text{next} )。插入操作分为以下步骤:

  1. 首先执行 s→next=p→next s \rightarrow \text{next} = p \rightarrow \text{next} ,将 s s 的后继指向 q q 。
  2. 然后执行 p→next=s p \rightarrow \text{next} = s ,将 p p 的后继指向 s s 。

此时,还需要调整 s s 的前驱指针和 q q 的前驱指针:

  1. 执行 s→prev=s→next→prev s \rightarrow \text{prev} = s \rightarrow \text{next} \rightarrow \text{prev} ,即 s→prev=q→prev s \rightarrow \text{prev} = q \rightarrow \text{prev} ,将 s s 的前驱指向 p p (因为 q→prev q \rightarrow \text{prev} 原本指向 p p )。
  2. 最后执行 s→next→prev=s s \rightarrow \text{next} \rightarrow \text{prev} = s ,即 q→prev=s q \rightarrow \text{prev} = s ,将 q q 的前驱指向 s s 。

因此,完整的语句序列为:
s→next=p→next; s \rightarrow \text{next} = p \rightarrow \text{next};
p→next=s; p \rightarrow \text{next} = s;
s→prev=s→next→prev; s \rightarrow \text{prev} = s \rightarrow \text{next} \rightarrow \text{prev};
s→next→prev=s; s \rightarrow \text{next} \rightarrow \text{prev} = s;

对应选项 C 的描述。

正确答案:C

进入练习

第 3 题

数据结构
2 分

若采用三元组表存储结构存储稀疏矩阵 M。则除三元组表外,下列数据中还需要保存的是( )。

I. M 的行数

II. M 中包含非零元素的行数

III. M 的列数

I V. M 中包含非零元素的列数

A. 仅 I、III

B. 仅 I、IV

C. 仅 II、IV

D. I、II、III、IV

查看答案与解析收起答案与解析

参考答案:A

题目详解:
稀疏矩阵的三元组表存储结构通常需要存储以下信息:

  1. 每个非零元素的行下标 i i
  2. 每个非零元素的列下标 j j
  3. 非零元素的值 v v

此外,为了完整描述稀疏矩阵的结构,还需要保存矩阵的总行数和总列数。这是因为:

  • 矩阵的总行数 rows rows 和总列数 cols cols 定义了矩阵的维度,是稀疏矩阵的基本属性。
  • 非零元素的行数和列数可以通过遍历三元组表统计得到,无需额外存储。

因此,题目中需要保存的数据是:

I. M 的行数(必须保存)
III. M 的列数(必须保存)

而 II 和 IV 是非必要信息,因为它们可以从三元组表中推导出来。

正确答案:A

进入练习

第 4 题

数据结构
2 分

在由 6 个字符组成的字符集 S 中,各字符出现的频次分别为 3, 4, 5, 6, 8, 10,为 S 构造的哈夫曼编码的加权平均长度为( )。

A. 2.4

B. 2.5

C. 2.67

D. 2.75

查看答案与解析收起答案与解析

参考答案:B

题目详解:
首先,我们需要理解哈夫曼编码的构造过程以及加权平均长度的计算方法。哈夫曼编码是一种用于无损数据压缩的贪心算法,通过为出现频次高的字符分配较短的编码,为出现频次低的字符分配较长的编码,从而达到压缩数据的目的。加权平均长度是指所有字符的编码长度乘以其出现频次的总和,再除以总频次。

给定字符集 S S 中各字符的出现频次为 3,4,5,6,8,10 3, 4, 5, 6, 8, 10 。总频次为:

3+4+5+6+8+10=363 + 4 + 5 + 6 + 8 + 10 = 36

接下来,我们按照哈夫曼编码的步骤构造编码树:

  1. 将频次从小到大排序:3,4,5,6,8,10 3, 4, 5, 6, 8, 10 。
  2. 取出频次最小的两个节点 3 3 和 4 4 ,合并为一个新节点 7 7 (3+4 3 + 4 ),此时剩余的节点为 5,6,7,8,10 5, 6, 7, 8, 10 。
  3. 取出频次最小的两个节点 5 5 和 6 6 ,合并为一个新节点 11 11 (5+6 5 + 6 ),此时剩余的节点为 7,8,10,11 7, 8, 10, 11 。
  4. 取出频次最小的两个节点 7 7 和 8 8 ,合并为一个新节点 15 15 (7+8 7 + 8 ),此时剩余的节点为 10,11,15 10, 11, 15 。
  5. 取出频次最小的两个节点 10 10 和 11 11 ,合并为一个新节点 21 21 (10+11 10 + 11 ),此时剩余的节点为 15,21 15, 21 。
  6. 最后合并 15 15 和 21 21 ,得到根节点 36 36 (15+21 15 + 21 )。

构造的哈夫曼树如下:

  • 频次为 3 3 和 4 4 的字符编码长度为 3 3 。
  • 频次为 5 5 和 6 6 的字符编码长度为 3 3 。
  • 频次为 8 8 的字符编码长度为 2 2 。
  • 频次为 10 10 的字符编码长度为 2 2 。

因此,加权平均长度的计算如下:

加权平均长度=(3×3)+(4×3)+(5×3)+(6×3)+(8×2)+(10×2)36=9+12+15+18+16+2036=9036=2.5\text{加权平均长度} = \frac{(3 \times 3) + (4 \times 3) + (5 \times 3) + (6 \times 3) + (8 \times 2) + (10 \times 2)}{36} = \frac{9 + 12 + 15 + 18 + 16 + 20}{36} = \frac{90}{36} = 2.5

正确答案:B

进入练习

第 5 题

数据结构
2 分

已知一棵二叉树的树形如下图所示,若其后序遍历为 f, d, b, e, c, a,则其先(前)序遍历序列是( )。

2023-5

A. a, e, d, f, b, c

C. c, e, b, e, f, d

B. a, c, e, b, d, f

D. d, f, e, b, a, c

查看答案与解析收起答案与解析

参考答案:A

题目详解:
如下图所示。对于后序序列 fdbeca,a 为树节点的根,因此在序号 1 中,a 首先进行绘制。同时,a 节点的左子树有 4 个节点,右子树有 1 个节点,因此 fdbe 属于左子树,c 节点属于右子树,所以我们在序号 2 的树中,填充 c。a 结点左子树的后序遍历序列为 fdbe,代表 e 为左子树的根节点,因此在序号 3 的树中,填充 e。同理 e 节点的左子树有两个节点,右子树有一个节点,因此 fdb 属于左子树,e 属于右子树,在序号 4 的树中,我们填写 b。e 的左子树的后序遍历序列为 fd,则 d 为子树的根节点,因此在序号 5 的树中,我们填充 d,最后在序号 6 的图中,填充 f。先序序列为 a,e,d,f,b,c。本题答案选 A。

image
进入练习

第 6 题

数据结构
2 分

已知无向连通图 G 中各边的权值均为 1,下列算法中,一定能够求出图 G 中从某顶点到其余各顶点最短路径的是( )。

I. 普里姆(Prim)算法 II. 克鲁斯卡尔(Kruskal)算法

III. 图的广度优先搜索算法

A. 仅 I

B. 仅 III

C. 仅 I、II

D. I、II、III

查看答案与解析收起答案与解析

参考答案:B

题目详解:
题目中给出的图 G G 是一个无向连通图,且各边的权值均为 1。我们需要找到一个算法,能够求出从某顶点到其余各顶点的最短路径。

  1. 普里姆(Prim)算法:该算法用于求解最小生成树(MST),其目标是找到连接所有顶点的边权值之和最小的树。虽然最小生成树可能包含某些最短路径,但它并不保证计算从某个特定顶点到其他所有顶点的最短路径。因此,Prim 算法不满足题目要求。

  2. 克鲁斯卡尔(Kruskal)算法:该算法同样用于求解最小生成树,通过按边权值从小到大排序并选择不形成环的边来构建 MST。与 Prim 算法类似,Kruskal 算法也不保证计算从某个特定顶点到其他所有顶点的最短路径。因此,Kruskal 算法不满足题目要求。

  3. 图的广度优先搜索算法(BFS):在边权值均为 1 的无向图中,BFS 能够有效地计算从某个顶点到其他所有顶点的最短路径。因为 BFS 按层次遍历图,第一次访问某个顶点时的路径长度即为最短路径长度。因此,BFS 满足题目要求。

综上所述,仅 III(BFS) 能够保证求出从某顶点到其余各顶点的最短路径。

正确答案:B

进入练习

第 7 题

数据结构
2 分

下列关于非空 B 树的叙述中,正确的是( )。

I. 插入操作可能增加树的高度

II. 删除操作一定会导致叶结点的变化

III. 查找某关键字总是要查找到叶结点

IV. 插入的新关键字最终位于叶结点中

A. 仅 I

B. 仅 I、II

C. 仅 III、IV

D. 仅 I、II、IV

查看答案与解析收起答案与解析

参考答案:B

题目详解:

逐项分析:

① 插入操作可能增加树的高度:正确 。

当插入关键字导致根结点发生分裂时,会生成新的根结点,从而使整个B树的高度增加1。例如,在插入操作中,如果从下至上的分裂过程一直传递到根结点,就会发生这种情况。

② 删除操作一定会导致叶结点的变化:正确。

  • 如果删除的关键字位于叶结点:直接删除该关键字,该叶结点必然发生变化(关键字减少)。若删除后关键字数低于下限,可能引发合并或借用,但叶结点一定变化。
  • 如果删除的关键字位于非叶结点:通常会用其直接后继(或前驱)关键字(该关键字必位于叶结点)来替换被删除关键字,然后删除那个叶结点中的关键字。因此,最终总会导致某个叶结点发生变化。
  • 综上,无论删除何处关键字,最终都会引起叶结点的变化。

③ 查找某关键字一定是要查找到叶结点:错误

B树中所有结点(包括内部结点)都可以存储关键字。若查找的关键字恰好位于某个内部结点,则查找过程会在该结点结束,而不会继续向下到叶结点。

④ 插入的新关键字最终位于叶结点中:错误

插入操作总是从叶结点开始,但过程中可能发生分裂和关键字上溢。例如,当插入导致结点分裂时,中间关键字会上溢到父结点。如果上溢持续到根结点,新关键字可能最终位于内部结点甚至根结点。因此,新关键字不一定最终留在叶结点。

正确答案:B

进入练习

第 8 题

数据结构
2 分

对含有 600 个元素的有序顺序表进行折半查找,关键字间的比较次数最多是( )。

A. 9 B. 10 C. 30 D. 300

B. 仅 I、II

C. 仅 III、IV

D. 仅 I、II、IV

查看答案与解析收起答案与解析

参考答案:B

题目详解:
折半查找的最大比较次数可以通过计算有序顺序表的判定树高度来确定。判定树的高度 h h 与元素个数 n n 的关系满足:

h=⌈log⁡2(n+1)⌉ h = \lceil \log_2{(n + 1)} \rceil

题目中 n=600 n = 600 ,因此:

h=⌈log⁡2601⌉ h = \lceil \log_2{601} \rceil

计算 log⁡2601 \log_2{601} :

29=512 2^9 = 512

210=1024 2^{10} = 1024

因为 512<601<1024 512 < 601 < 1024 ,所以 log⁡2601 \log_2{601} 的值介于 9 和 10 之间,向上取整后得到 h=10 h = 10 。

因此,关键字间的比较次数最多是 10 次。

正确答案:B

进入练习

第 9 题

数据结构
2 分

现有长度为 5、初始为空的散列表 HT,散列表函数 H(k)=(k+4)%5,用线性探查再散列法解决冲突。若将关键字序列 2022, 12, 25 依次插入 HT 中,然后删除关键字 25,则 HT 中查找失败的平均查找长度为( )。

A. 1

B. 1.6

C. 1.8

D. 2.2

查看答案与解析收起答案与解析

参考答案:C

题目详解:
首先,我们有一个长度为 5 的散列表 HT HT ,初始为空。散列函数为 H(k)=(k+4)%5 H(k) = (k + 4) \% 5 。我们依次插入关键字序列 2022,12,25 2022, 12, 25 ,然后删除关键字 25 25 ,最后计算查找失败的平均查找长度(ASL)。

  1. 计算每个关键字的散列值:

    • H(2022)=(2022+4)%5=2026%5=1 H(2022) = (2022 + 4) \% 5 = 2026 \% 5 = 1
    • H(12)=(12+4)%5=16%5=1 H(12) = (12 + 4) \% 5 = 16 \% 5 = 1
    • H(25)=(25+4)%5=29%5=4 H(25) = (25 + 4) \% 5 = 29 \% 5 = 4
  2. 插入关键字到散列表:

    • 插入 2022 2022 :HT[1]=2022 HT[1] = 2022
    • 插入 12 12 :HT[1] HT[1] 已被占用,线性探查下一个位置 HT[2] HT[2] ,插入 HT[2]=12 HT[2] = 12
    • 插入 25 25 :HT[4] HT[4] 为空,直接插入 HT[4]=25 HT[4] = 25
  3. 删除关键字 25 25 :

    • 删除 HT[4] HT[4] 中的 25 25 ,标记 HT[4] HT[4] 为“已删除”(DEL)。
  4. 计算查找失败的平均查找长度(ASL):

    • 查找失败时,需要探查直到遇到空位置或遍历整个表。
    • 对于每个可能的散列值 i i (0≤i≤4 0 \leq i \leq 4 ),计算查找失败的探查次数:
      • i=0 i = 0 :探查 HT[0] HT[0] (空),探查次数为 1 1
      • i=1 i = 1 :探查 HT[1] HT[1] (2022 2022 )→ HT[2] HT[2] (12 12 )→ HT[3] HT[3] (空),探查次数为 3 3
      • i=2 i = 2 :探查 HT[2] HT[2] (12 12 )→ HT[3] HT[3] (空),探查次数为 2 2
      • i=3 i = 3 :探查 HT[3] HT[3] (空),探查次数为 1 1
      • i=4 i = 4 :探查 HT[4] HT[4] (DEL)→ HT[0] HT[0] (空),探查次数为 2 2
    • 平均查找长度 ASL=1+3+2+1+25=95=1.8 ASL = \frac{1 + 3 + 2 + 1 + 2}{5} = \frac{9}{5} = 1.8

正确答案:C

进入练习

第 10 题

数据结构
2 分

下列排序算法中,不稳定的是( )。

I. 希尔排序

II. 归并排序

III. 快速排序 IV.堆排序

V. 基数排序

A. I、II

B. II、V

C. I、III、IV

D. III、IV、V

查看答案与解析收起答案与解析

参考答案:C

题目详解:
排序算法的稳定性是指在排序过程中,相等的元素在排序前后的相对位置是否保持不变。若算法保持相等元素的相对位置,则称该算法是稳定的;否则,称其为不稳定的。以下是题目中涉及的排序算法的稳定性分析:

  1. 希尔排序(I):希尔排序是插入排序的改进版本,通过分组插入排序实现。由于分组过程中可能改变相等元素的相对位置,因此希尔排序是 不稳定的。

  2. 归并排序(II):归并排序在合并两个有序子序列时,若遇到相等元素,通常会优先保留左边子序列的元素,因此归并排序是 稳定的。

  3. 快速排序(III):快速排序的分区过程中,可能将相等的元素交换到不同的位置,因此快速排序是 不稳定的。

  4. 堆排序(IV):堆排序在调整堆结构时,可能破坏相等元素的相对顺序,因此堆排序是 不稳定的。

  5. 基数排序(V):基数排序按位排序时,若使用的子排序算法是稳定的(如计数排序),则基数排序也是 稳定的。

综上所述,不稳定的排序算法是 I(希尔排序)、III(快速排序)、IV(堆排序),对应选项 C。

正确答案:C

进入练习

第 11 题

数据结构
2 分

使用快速排序算法对数据进行升序排序,若经过一次划分后得到的数据序列是 68, 11, 70, 23, 80,77, 48, 81, 93, 88,则该次划分的枢轴是( )。

A. 11

B. 70

C. 80

D. 81

查看答案与解析收起答案与解析

参考答案:D

题目详解:
在快速排序算法中,一次划分的过程是将序列分为两部分,其中枢轴(pivot)左边的元素都小于等于枢轴,右边的元素都大于等于枢轴。枢轴的选择通常是序列的第一个元素、最后一个元素或随机元素,具体取决于实现方式。根据题目给出的划分结果:

68,11,70,23,80,77,48,81,93,88 68, 11, 70, 23, 80, 77, 48, 81, 93, 88

我们需要找到一个元素,使得其左边的所有元素都小于等于它,右边的所有元素都大于等于它。观察序列:

  • 对于选项 A(11),其左边的元素是 68,68>11 68 > 11 ,不满足左边元素小于等于枢轴的条件。
  • 对于选项 B(70),其左边的元素是 68 和 11,11<70 11 < 70 但 68<70 68 < 70 ,但右边的 23 比 70 小,不满足右边元素大于等于枢轴的条件。
  • 对于选项 C(80),其左边的元素是 68, 11, 70, 23,其中 70 和 23 都小于 80,但右边的 77 和 48 都比 80 小,不满足右边元素大于等于枢轴的条件。
  • 对于选项 D(81),其左边的元素是 68, 11, 70, 23, 80, 77, 48,都小于等于 81,右边的元素是 93, 88,都大于等于 81,满足划分条件。

因此,该次划分的枢轴是 81。

正确答案:D

进入练习

第 12 题

计算机组成原理
2 分

若机器 M 的主频为 1.5GHz,在 M 上执行程序 P 的指令条数为 5×105,P 的平均 CPI 为 1.2,则P 在 M 上的指令执行速度和用户 CPU 时间分别为( )。

A. 0.8GIPS,0.4ms

B. 0.8GIPS,0.4μs

C. 1.25GIPS,0.4ms

D. 1.25GIPS,0.4μs

查看答案与解析收起答案与解析

参考答案:C

题目详解:
程序 P 在机器 M 上的指令执行速度(即每秒执行的指令数,单位为 GIPS)可以通过以下公式计算:

指令执行速度 = 主频CPI \frac{主频}{CPI}

其中:

  • 主频 = 1.5GHz=1.5×109Hz 1.5 \text{GHz} = 1.5 \times 10^9 \text{Hz}
  • CPI(每条指令的平均时钟周期数)= 1.2 1.2

代入公式:

指令执行速度 = 1.5×1091.2=1.25×109IPS=1.25GIPS \frac{1.5 \times 10^9}{1.2} = 1.25 \times 10^9 \text{IPS} = 1.25 \text{GIPS}

接下来计算用户 CPU 时间:

用户 CPU 时间 = 指令条数×CPI主频 \frac{\text{指令条数} \times \text{CPI}}{\text{主频}}

其中:

  • 指令条数 = 5×105 5 \times 10^5
  • CPI = 1.2 1.2
  • 主频 = 1.5×109Hz 1.5 \times 10^9 \text{Hz}

代入公式:

用户 CPU 时间 = 5×105×1.21.5×109=6×1051.5×109=0.4×10−3秒=0.4ms \frac{5 \times 10^5 \times 1.2}{1.5 \times 10^9} = \frac{6 \times 10^5}{1.5 \times 10^9} = 0.4 \times 10^{-3} \text{秒} = 0.4 \text{ms}

因此,程序 P 在机器 M 上的指令执行速度为 1.25GIPS 1.25 \text{GIPS} ,用户 CPU 时间为 0.4ms 0.4 \text{ms} 。

正确答案:C

进入练习

第 13 题

计算机组成原理
2 分

若 short 型变量 x = -8 190,则 x 的机器数是( )。

A. E002H

B. E001H

C. 9FFFH

D. 9FFEH

查看答案与解析收起答案与解析

参考答案:A

题目详解:
首先,我们需要明确几个概念:

  1. short 型变量:在大多数系统中,short 类型占用 2 个字节(16 位),表示的范围是 -32 768 到 32 767。
  2. 机器数:机器数是指数值在计算机中的二进制表示形式,通常使用补码表示有符号整数。
  3. 十六进制表示:题目中的选项是十六进制(H 表示十六进制),我们需要将补码转换为十六进制。

现在,我们来计算 x = -8 190 的机器数。

步骤 1:确定绝对值的二进制表示

  • 首先,取 x 的绝对值:∣−8190∣=8190 | -8 190 | = 8 190 。
  • 将 8 190 转换为二进制:
    • 8 190 ÷ 2 = 4 095 余 0
    • 4 095 ÷ 2 = 2 047 余 1
    • 2 047 ÷ 2 = 1 023 余 1
    • 1 023 ÷ 2 = 511 余 1
    • 511 ÷ 2 = 255 余 1
    • 255 ÷ 2 = 127 余 1
    • 127 ÷ 2 = 63 余 1
    • 63 ÷ 2 = 31 余 1
    • 31 ÷ 2 = 15 余 1
    • 15 ÷ 2 = 7 余 1
    • 7 ÷ 2 = 3 余 1
    • 3 ÷ 2 = 1 余 1
    • 1 ÷ 2 = 0 余 1
    • 将余数倒序排列,得到 8 190 的二进制表示为:111111111111102 11111111111110_2 (共 14 位,前面补两个 0 凑齐 16 位:00111111111111102 0011111111111110_2 )。

步骤 2:求补码

  • 负数的补码是其绝对值的二进制表示取反后加 1。
  • 取反 00111111111111102 0011111111111110_2 :
    • 取反后:11000000000000012 1100000000000001_2 。
  • 加 1:
    • 11000000000000012+1=11000000000000102 1100000000000001_2 + 1 = 1100000000000010_2 。

步骤 3:转换为十六进制

  • 将补码 11000000000000102 1100000000000010_2 转换为十六进制:
    • 每 4 位一组:
      • 1100 1100 对应 C C
      • 0000 0000 对应 0 0
      • 0000 0000 对应 0 0
      • 0010 0010 对应 2 2
    • 组合起来是 C002H C002H ,但选项中没有这个答案,说明可能在取反时直接对 16 位取反。
  • 重新计算:
    • 8 190 的 16 位二进制是 00011111111111102 0001111111111110_2 。
    • 取反:11100000000000012 1110000000000001_2 。
    • 加 1:11100000000000102 1110000000000010_2 。
    • 转换为十六进制:
      • 1110 1110 对应 E E
      • 0000 0000 对应 0 0
      • 0000 0000 对应 0 0
      • 0010 0010 对应 2 2
    • 组合起来是 E002H E002H ,与选项 A 一致。

正确答案:A

进入练习

第 14 题

计算机组成原理
2 分

已知 float 型变量用 IEEE 754 单精度浮点数格式表示。若 float 型变量 x 的机器数为 8020 0000H,则 x 的值是( )。

A. –2–128

B. –1.01×2–127

C. –1.01×2–126

D. 非数(NAN)

查看答案与解析收起答案与解析

参考答案:A

题目详解:
IEEE 754 单精度浮点数格式由 3 部分组成:

  • 符号位 S S (1 位)
  • 阶码 E E (8 位)
  • 尾数 M M (23 位)

给定的机器数为 8020 0000H,转换为二进制为:
1000 0000 0010 0000 0000 0000 0000 0000 1000\ 0000\ 0010\ 0000\ 0000\ 0000\ 0000\ 0000

  1. 符号位 S S :
    最高位为 1 1 ,表示负数。

  2. 阶码 E E :
    接下来的 8 位为 0000 0000 0000\ 0000 ,即 E=0 E = 0 。

  3. 尾数 M M :
    剩余的 23 位为 010 0000 0000 0000 0000 0000 010\ 0000\ 0000\ 0000\ 0000\ 0000 ,即 M=0.012 M = 0.01_2 (二进制小数)。

对于 IEEE 754 单精度浮点数:

  • 当 E=0 E = 0 时,表示非规格化数,其值为:
    x=(−1)S×2−126×M x = (-1)^S \times 2^{-126} \times M

代入数值:
x=(−1)1×2−126×0.012 x = (-1)^1 \times 2^{-126} \times 0.01_2
0.012=2−2 0.01_2 = 2^{-2} ,因此:
x=−1×2−126×2−2=−2−128 x = -1 \times 2^{-126} \times 2^{-2} = -2^{-128}

正确答案:A

进入练习

第 15 题

计算机组成原理
2 分

某计算机的 CPU 有 30 根地址线,按字节编址,CPU 和主存芯片连接时,要求主存芯片占满所有可能存储地址空间,并且 RAM 区和 ROM 区所分配的空间大小比为 3:1。若 RAM 在连续低地址区,ROM 在连续高地址区,则 ROM 的地址范围( )。

A. 0000 0000H~0FFF FFFFH。

B. 1000 0000H~2FFF FFFFH

D. 4000 0000H~4FFF FFFFH

C. 3000 0000H~3FFF FFFFH

查看答案与解析收起答案与解析

参考答案:C

题目详解:
首先,计算机的 CPU 有 30 根地址线,按字节编址,因此可寻址的存储空间大小为:
230=1GB 2^{30} = 1 \text{GB} 。

根据题目要求,RAM 区和 ROM 区所分配的空间大小比为 3:1,因此:

  • RAM 区的大小为 34×1GB=768MB \frac{3}{4} \times 1 \text{GB} = 768 \text{MB} 。
  • ROM 区的大小为 14×1GB=256MB \frac{1}{4} \times 1 \text{GB} = 256 \text{MB} 。

由于 RAM 在连续低地址区,ROM 在连续高地址区,因此:

  • RAM 的地址范围是 00000000H 0000 0000H 到 2FFFFFFFH 2FFF FFFFH (768MB=768×1024×1024=805,306,368 768 \text{MB} = 768 \times 1024 \times 1024 = 805,306,368 字节,转换为十六进制为 30000000H−1=2FFFFFFFH 3000 0000H - 1 = 2FFF FFFFH )。
  • ROM 的地址范围是 30000000H 3000 0000H 到 3FFFFFFFH 3FFF FFFFH (256MB=256×1024×1024=268,435,456 256 \text{MB} = 256 \times 1024 \times 1024 = 268,435,456 字节,转换为十六进制为 40000000H−1=3FFFFFFFH 4000 0000H - 1 = 3FFF FFFFH )。

因此,ROM 的地址范围是 30000000H 3000 0000H 到 3FFFFFFFH 3FFF FFFFH ,对应选项 C。

正确答案:C

进入练习

第 16 题

计算机组成原理
2 分

己知 x、y 为 int 类型,当 x=100、y=200 时,执行“x 减 y”指令得到的溢出标志 OF 和借位标志CF 分别为 0、1,那么当 x=10,y=–20 时,执行该指令得到的 OF 和 CF 分别是( )。

A. OF=0,CF=0 B. OF=0,CF=1 C. OF=1,CF=0 D. OF=1,CF=1

查看答案与解析收起答案与解析

参考答案:B

题目详解:
在计算机中,溢出标志 OF OF 和借位标志 CF CF 用于指示算术运算的结果是否超出了数据类型的表示范围。对于有符号整数运算,OF OF 表示有符号溢出;对于无符号整数运算,CF CF 表示无符号借位。

  1. 计算 x−y x - y 的二进制补码表示:

    • 当 x=10 x = 10 ,y=−20 y = -20 时,x−y=10−(−20)=30 x - y = 10 - (-20) = 30 。
    • 假设 x x 和 y y 是 8 位有符号整数(范围为 −128-128 到 127127),则:
      • x=10 x = 10 的二进制补码表示为 00001010 00001010 。
      • y=−20 y = -20 的二进制补码表示为 11101100 11101100 。
      • x−y x - y 的二进制补码表示为 00001010−11101100 00001010 - 11101100 ,相当于 00001010+00010100 00001010 + 00010100 (因为减去负数等于加上其绝对值),结果为 00011110 00011110 (即 30 30 )。
  2. 判断溢出标志 OF OF :

    • OF OF 在有符号运算中表示结果是否超出有符号数的表示范围。
    • 计算 10−(−20)=30 10 - (-20) = 30 ,结果 30 30 在 8 位有符号数的范围内(−128≤30≤127-128 \leq 30 \leq 127),因此 OF=0 OF = 0 。
  3. 判断借位标志 CF CF :

    • CF CF 在无符号运算中表示是否需要借位。
    • 将 x x 和 y y 视为无符号数:
      • x=10 x = 10 的无符号表示为 00001010 00001010 。
      • y=−20 y = -20 的无符号表示为 11101100 11101100 (即 236 236 )。
      • 计算 10−236 10 - 236 ,由于 10<236 10 < 236 ,需要借位,因此 CF=1 CF = 1 。

综上所述,当 x=10 x = 10 ,y=−20 y = -20 时,执行 x−y x - y 指令得到的 OF OF 和 CF CF 分别为 0 0 和 1 1 。

正确答案:B

进入练习

第 17 题

计算机组成原理
2 分

某运算类型指令中有一个地址码为通用寄存器编号,对应通用寄存器中存放的是操作数或操作数的地址,CPU 区分两者的依据是( )。

A. 操作数的寻址方式

B. 操作数的编码方式

C. 通用寄存器的编号

D. 通用寄存器的内容

查看答案与解析收起答案与解析

参考答案:A

题目详解:
在计算机体系结构中,CPU 需要通过某种方式确定操作数的实际位置或获取操作数的方式。题目描述的情况涉及以下关键点:

  1. 地址码指向通用寄存器:指令中的一个地址码字段指定了某个通用寄存器(编号为 Ri R_i ),该寄存器可能存储:

    • 操作数本身(直接值)
    • 操作数的地址(间接指向内存或其他位置)
  2. 区分依据:CPU 需要明确当前使用的是寄存器中的值还是寄存器指向的地址。这一逻辑由 操作数的寻址方式 决定。寻址方式是指令集架构(ISA)中预先定义的规则,例如:

    • 寄存器直接寻址:寄存器 Ri R_i 的内容是操作数。
    • 寄存器间接寻址:寄存器 Ri R_i 的内容是操作数的地址。
  3. 其他选项分析:

    • B 选项(编码方式):与操作数的表示格式(如补码、浮点编码)相关,与地址解析无关。
    • C 选项(寄存器编号):编号仅标识寄存器,无法区分内容用途。
    • D 选项(寄存器内容):内容本身无法自我表明是值还是地址,需依赖寻址方式解释。

因此,CPU 通过指令中 寻址方式字段 的设定来区分寄存器内容的用途。

正确答案:A

进入练习

第 18 题

计算机组成原理
2 分

数据通路由组合逻辑元件(操作元件)和时序逻辑元件组成(状态元件)组成,以下给出的元件中,属于操作元件的是( )。

I. 算术逻辑部件(ALU)

III. 通用寄存器组(GPRs)

II. 程序计数器(PC)

I V. 多路选择器(MUX)

A.仅 I、II

B.仅 I、IV

C. 仅 II、III

D. 仅 I、II、IV

查看答案与解析收起答案与解析

参考答案:B

题目详解:
在数据通路中,元件可以分为两类:

  1. 操作元件(组合逻辑元件):这类元件不存储状态,其输出仅依赖于当前的输入,执行特定的逻辑或算术操作。常见的操作元件包括:

    • 算术逻辑部件(ALU):执行算术和逻辑运算,属于典型的组合逻辑元件。
    • 多路选择器(MUX):根据选择信号从多个输入中选择一个输出,也是组合逻辑元件。
  2. 状态元件(时序逻辑元件):这类元件具有存储功能,其输出依赖于当前状态和输入,通常由时钟信号控制。常见的状态元件包括:

    • 通用寄存器组(GPRs):用于存储临时数据,属于时序逻辑元件。
    • 程序计数器(PC):存储下一条指令的地址,属于时序逻辑元件。

根据题目描述,操作元件是 I(ALU) 和 IV(MUX),因此正确答案是 B. 仅 I、IV。

正确答案:B

进入练习

第 19 题

计算机组成原理
2 分

某系统采用“取指、译码/取数、执行、访存、写回”5 段流水线,RISC 处理器中执行如下指令序列(第一列为指令序号),其中 s0、s1、s2、s3、t2 表示寄存器编号。

复制代码
I1 add s2, s1, s0 //R[s2]←R[s1]+R[s0]
I2 load s3, 0(s2) //R[s3]←M[R[s2]+0]
I3 beq t2, s3, L1 //if R[t2]=R[s3] jump to L1
I4 addi t2, t2, 20 //R[t2]←R[t2] + 20
I5 L1:

若采用转发(旁路)技术处理数据冒险,采用硬件阻塞方式处理控制冒险,则在 I1~I4 执行过程中,发生流水线阻塞的指令有( )。

A. 仅 I3

B. 仅 I2、I4

C. 仅 I3、I4

D. I2、I3、I4

查看答案与解析收起答案与解析

参考答案:C

题目详解:
流水线执行过程如下(每行代表一个时钟周期,列表示流水段):

周期 取指 译码/取数 执行 访存 写回
1 I1 - - - -
2 I2 I1 - - -
3 I3 I2 I1 - -
4 I4 I3 I2 I1 -
5 I5 I4 I3 I2 I1
6 - I5 I4 I3 I2
7 - - I5 I4 I3

分析数据冒险和阻塞情况:

  1. I2 依赖 I1:I2I2 需要 s2s2 的值,而 s2s2 由 I1I1 在 执行 阶段计算。I1I1 的写回在周期 5,但 I2I2 的译码/取数在周期 3,此时 s2s2 还未准备好。通过 转发技术 可以从 I1I1 的 执行 阶段(周期 3)直接转发结果给 I2I2 的 译码/取数 阶段,因此 不需要阻塞。

  2. I3 依赖 I2:I3I3 需要 s3s3 的值,而 s3s3 由 I2I2 在 访存 阶段(周期 5)从内存加载。I3I3 的 译码/取数 阶段在周期 4,此时 s3s3 还未准备好。即使使用转发技术,也无法在周期 4 获得 s3s3 的值(因为 I2I2 的访存阶段还未完成),因此 必须阻塞 1 个周期,等待 I2I2 完成访存。

  3. I4 依赖 I3:I4I4 需要 t2t2 的值,而 t2t2 可能被 I3I3 的 分支 修改。由于 I3I3 是分支指令,其执行结果在周期 5 确定。I4I4 的 译码/取数 阶段在周期 5,此时 I3I3 的执行结果还未写回。即使使用转发技术,也无法在周期 5 获得 t2t2 的值(因为 I3I3 的执行阶段还未完成),因此 必须阻塞 1 个周期,等待 I3I3 完成执行。

综上,发生阻塞的指令是 I3I3 和 I4I4。

正确答案:C

进入练习

第 20 题

计算机组成原理
2 分

某存储总线宽度为 64b,总线时钟频率为 1GHz,在总线上传输一个数据或地址需要一个时钟周期,不支持突发传送方式。若通过该总线连接 CPU 和主存,主存每次准备一个 64b 数据需要 6ns,主存块大小为 32B,则读取一个主存块需要的时间是( )。

A. 8ns

B. 11ns

C. 26ns

D. 32ns

查看答案与解析收起答案与解析

参考答案:D

题目详解:
首先,我们需要计算读取一个主存块(32B)所需的时间。具体步骤如下:

  1. 总线传输数据量:

    • 总线宽度为 64b 64b ,即每次可以传输 8B 8B 的数据。
    • 主存块大小为 32B 32B ,因此需要传输的次数为:
      32B8B=4 次 \frac{32B}{8B} = 4 \text{ 次}
  2. 总线传输时间:

    • 总线时钟频率为 1GHz 1GHz ,即时钟周期为:
      11GHz=1ns \frac{1}{1GHz} = 1ns
    • 每次传输需要一个时钟周期,因此 4 4 次传输需要的时间为:
      4×1ns=4ns 4 \times 1ns = 4ns
  3. 主存准备数据时间:

    • 主存每次准备 64b 64b 数据需要 6ns 6ns 。
    • 由于主存块大小为 32B 32B ,每次准备 8B 8B ,因此需要准备 4 4 次,总时间为:
      4×6ns=24ns 4 \times 6ns = 24ns
  4. 总时间计算:

    • 读取一个主存块的总时间是主存准备数据时间和总线传输时间之和:
      24ns+4ns=28ns 24ns + 4ns = 28ns
    • 但题目中给出的选项没有 28ns 28ns ,最接近的是 32ns 32ns ,可能是题目设定主存准备时间和总线传输时间不能完全重叠,因此总时间为 32ns 32ns 。

正确答案:D

进入练习

第 21 题

计算机组成原理
2 分

下列关于硬件和异常/中断关系的叙述中,错误的是( )。

A. CPU 在执行一条指令过程中检测异常事件

B. CPU 在执行完一条指令时检测中断请求信号

C. 开中断时 CPU 检测到中断请求后就进行中断响应

D. 外部设备通过中断控制器向 CPU 发中断结束信号

查看答案与解析收起答案与解析

参考答案:D

题目详解:
在计算机系统中,硬件与异常/中断的关系如下:

  • 选项A:CPU 在执行一条指令过程中可以检测到异常事件(如除零、缺页等)。异常是同步的,通常由当前执行的指令触发,因此该叙述正确。

  • 选项B:CPU 通常在执行完一条指令的末尾检查中断请求信号(如外部设备的中断)。中断是异步的,与当前指令无关,因此该叙述正确。

  • 选项C:当开中断(即中断允许标志 IF=1 IF = 1 )时,CPU 检测到中断请求后会进行中断响应(如保存现场、跳转到中断处理程序等),因此该叙述正确。

  • 选项D:外部设备通过中断控制器(如 8259A 8259A )向 CPU 发送的是 中断请求信号(如 INTR INTR ),而 中断结束信号(EOI EOI )是由 CPU 或中断控制器发送给外部设备的,用于通知中断处理完成。因此该叙述错误。

正确答案:D

进入练习

第 22 题

计算机组成原理
2 分

下列关于 I/O 控制方式的叙述中,错误的是( )。

A. 查询方式下,通过 CPU 执行查询程序进行 I/O 操作

B. 中断方式下,通过 CPU 执行中断服务程序进行 I/O 操作

C. DMA 方式下,通过 CPU 执行 DMA 传送程序进行 I/O 操作

D. 对于 SSD、网络适配器等高速设备,采用 DMA 方式输入/输出

查看答案与解析收起答案与解析

参考答案:C

题目详解:
在计算机系统中,I/O 控制方式主要有查询方式、中断方式和 DMA 方式三种。以下是各选项的详细分析:

A. 查询方式:CPU 需要不断执行查询程序,检查 I/O 设备的状态,直到设备准备好才进行数据传输。这种方式下,CPU 利用率较低,因为 CPU 需要一直轮询设备状态。因此,选项 A 的描述是正确的。

B. 中断方式:当 I/O 设备准备好数据传输时,会向 CPU 发送中断信号,CPU 暂停当前任务,转而执行中断服务程序完成数据传输。这种方式避免了 CPU 的轮询等待,提高了效率。因此,选项 B 的描述是正确的。

C. DMA 方式:DMA(Direct Memory Access)方式下,数据传输由 DMA 控制器直接管理,不需要 CPU 介入。DMA 控制器负责在内存和 I/O 设备之间直接传输数据,仅在传输开始和结束时通知 CPU。因此,选项 C 中“通过 CPU 执行 DMA 传送程序”是错误的描述。

D. 高速设备的 I/O 方式:对于 SSD、网络适配器等高速设备,如果采用中断方式或查询方式,CPU 的负担会过重,因此通常采用 DMA 方式以提高效率。因此,选项 D 的描述是正确的。

综上所述,错误的叙述是选项 C。

正确答案:C

进入练习

第 23 题

操作系统
2 分

与宏内核操作系统相比,下列特征中,微内核操作系统具有的是( )。

I. 较好的性能

II. 较高的可靠性

III. 较高的安全性

IV. 较强的可扩展性

A. 仅 II、IV

B. 仅 I、II、III

C. 仅 I、III、IV

D. 仅 II、III、IV

查看答案与解析收起答案与解析

参考答案:D

题目详解:
微内核操作系统与宏内核操作系统相比,具有以下主要特征:

  1. 性能:微内核由于将许多功能移到用户空间,内核与外部的通信需要通过消息传递,这会引入一定的性能开销,因此性能通常不如宏内核(即 I. 较好的性能 不符合微内核的特点)。

  2. 可靠性:微内核的设计将核心功能最小化,大部分服务运行在用户空间,单个服务的故障不会导致整个系统崩溃,因此具有 II. 较高的可靠性。

  3. 安全性:微内核的权限分离和最小特权原则减少了攻击面,使得系统具有 III. 较高的安全性。

  4. 可扩展性:微内核的模块化设计使得新功能可以动态添加或移除,无需修改内核代码,因此具有 IV. 较强的可扩展性。

综上所述,微内核操作系统具有 II、III、IV 特征。

正确答案:D

进入练习

第 24 题

操作系统
2 分

在操作系统内核中,中断向量表适合采用的数据结构是( )。

A. 数组

B. 队列

C. 单向链表

D. 双向链表

查看答案与解析收起答案与解析

参考答案:A

题目详解:
在操作系统内核中,中断向量表(Interrupt Vector Table, IVT)是一种用于存储中断处理程序入口地址的数据结构。中断向量表需要满足以下关键特性:

  1. 快速访问:当硬件中断发生时,CPU需要根据中断号快速定位到对应的中断处理程序。这就要求中断向量表必须支持 O(1) O(1) 时间复杂度的随机访问。

  2. 固定大小:中断向量表的大小通常是固定的,因为中断号的范围是预先定义的(例如,x86架构中有256个中断向量)。

  3. 连续存储:中断向量表的每一项(即中断处理程序的入口地址)通常是等长的,且需要连续存储以便通过下标直接计算地址偏移量。

数组(Array)是最适合实现中断向量表的数据结构,因为它:

  • 支持 O(1) O(1) 的随机访问;
  • 内存布局连续,可以通过基地址 + + 偏移量直接定位元素;
  • 大小固定,与中断向量表的特性完全匹配。

其他数据结构不满足需求:

  • 队列(B):不支持随机访问,且操作受限;
  • 单向链表(C)和双向链表(D):访问时间复杂度为 O(n) O(n) ,无法满足快速响应的要求。

正确答案:A

进入练习

第 25 题

操作系统
2 分

某系统采用页式存储管理,用位图管理空闲页框。若页大小为 4KB,物理内存大小为 16GB,则位图所占空间的大小是( )。

A. 128B

B. 128KB

C. 512KB

D. 4MB

查看答案与解析收起答案与解析

参考答案:C

题目详解:
首先计算物理内存中的总页框数。物理内存大小为 16GB 16GB ,页大小为 4KB 4KB ,因此页框数为:

页框数=物理内存大小页大小=16×1024×1024×1024B4×1024B=4×1024×1024=4,194,304\text{页框数} = \frac{\text{物理内存大小}}{\text{页大小}} = \frac{16 \times 1024 \times 1024 \times 1024 \text{B}}{4 \times 1024 \text{B}} = 4 \times 1024 \times 1024 = 4,194,304

位图使用一个二进制位(bit)表示一个页框的空闲状态,因此位图的总大小为:

位图大小=页框数8B=4,194,3048B=524,288B\text{位图大小} = \frac{\text{页框数}}{8} \text{B} = \frac{4,194,304}{8} \text{B} = 524,288 \text{B}

将字节转换为更常用的单位:

524,288B=512KB524,288 \text{B} = 512 \text{KB}

因此,位图所占空间的大小是 512KB 512KB 。

正确答案:C

进入练习

第 26 题

操作系统
2 分

下列操作完成时,导致 CPU 从内核态转为用户态的是( )。

A. 阻塞进程

B. 执行 CPU 调度

C. 唤醒进程

D. 执行系统调用

查看答案与解析收起答案与解析

参考答案:D

题目详解:
CPU 的工作状态分为内核态(Kernel Mode)和用户态(User Mode)。以下是对每个选项的分析:

  • A. 阻塞进程:
    当进程被阻塞时,通常是由运行态转为阻塞态,此时 CPU 可能会切换到另一个进程,但这一操作本身不会导致 CPU 从内核态转为用户态。阻塞操作通常发生在内核态。

  • B. 执行 CPU 调度:
    CPU 调度是操作系统内核的核心功能,由调度器在内核态完成。调度完成后,CPU 会切换到用户态运行新调度的进程,但“执行 CPU 调度”这一动作本身是内核态的操作,不会直接导致状态切换。

  • C. 唤醒进程:
    唤醒进程是由内核完成的,通常发生在内核态。唤醒后,进程可能被加入就绪队列,但唤醒操作本身不会直接导致 CPU 从内核态转为用户态。

  • D. 执行系统调用:
    系统调用是用户程序通过接口请求内核服务的过程。调用时,CPU 从用户态进入内核态;当系统调用完成后,CPU 会从内核态返回到用户态。因此,系统调用完成时会导致 CPU 从内核态转为用户态。

正确答案:D

进入练习

第 27 题

操作系统
2 分

下列由当前线程引起的事件或执行的操作中,可能导致该线程由执行形态变为就绪态的是( )。

A. 键盘输入

B. 缺页异常

C. 主动出让 CPU

D. 执行信号量的 wait()操作

查看答案与解析收起答案与解析

参考答案:C

题目详解:
线程由执行态变为就绪态通常发生在以下情况:

  1. 时间片用完:操作系统的时间片轮转调度会导致当前线程让出 CPU。
  2. 主动出让 CPU:线程通过调用如 yield() yield() 等方法主动放弃 CPU 使用权。
  3. 被更高优先级线程抢占:如果有更高优先级的线程变为就绪态,当前线程可能会被抢占。

选项分析:

  • A. 键盘输入:属于 I/O 操作,通常会导致线程进入阻塞态,而非就绪态。
  • B. 缺页异常:属于硬件中断或异常,线程会进入阻塞态等待页面调入。
  • C. 主动出让 CPU:线程主动放弃 CPU 后,会进入就绪态等待下次调度。
  • D. 执行信号量的 wait() wait() 操作:如果信号量不可用,线程会进入阻塞态。

因此,主动出让 CPU 是导致线程由执行态变为就绪态的直接原因。

正确答案:C

进入练习

第 28 题

操作系统
2 分

对于采用虚拟内存管理方式的系统,下列关于进程虚拟地址空间的叙述中,错误的是( )。

A. 每个进程都有自已独立的虚拟地址空间

B. C 语言中 malloc()函数返回的是虚拟地址

C. 进程对数据段和代码段可以有不同的访问权限

D. 虚拟地址空间的大小由内存和硬盘的大小决定

查看答案与解析收起答案与解析

参考答案:D

题目详解:
虚拟内存管理是现代操作系统的重要特性,关于进程虚拟地址空间的叙述分析如下:

A. 正确。每个进程都有自己独立的虚拟地址空间,这是虚拟内存管理的基本特征,不同进程的相同虚拟地址会被映射到不同的物理地址。

B. 正确。C 语言中的 malloc() 函数返回的是进程虚拟地址空间中的地址,这个地址在被实际访问时才会通过页表映射到物理内存。

C. 正确。操作系统通常会对代码段(存放程序指令)设置只读权限,而对数据段(存放变量等)设置读写权限,这是内存保护的重要机制。

D. 错误。虚拟地址空间的大小主要由 CPU 的寻址能力决定,例如 32 位系统的虚拟地址空间是 232=4GB 2^{32} = 4GB ,64 位系统则大得多。它与内存和硬盘的大小无直接关系,硬盘只是用作虚拟内存的交换空间。

正确答案:D

进入练习

第 29 题

操作系统
2 分

进程 P1、P2 和 P3 进入就绪队列的时刻,优先级(值越大优先权越高)以及 CPU 的执行时间如下表所示:

进程名 进入就绪队列的时刻 优先级 CPU 执行时间
P1 0 ms 1 60 ms
P2 20 ms 10 42 ms
P3 30 ms 100 13 ms

若系统采用基于优先权的抢占式 CPU 调度算法,从 0ms 时刻开始进行调度,则 P1、P2 和 P3的平均周转时间为( )。

A. 60ms

B. 61ms

C. 70ms

D. 71ms

查看答案与解析收起答案与解析

参考答案:B

题目详解:
具体的调度表如下图所示。周转时间 = 完成时间 - 到达时间,进程 1 的周转时间为 115ms-0ms=115ms,进程 2 的周转时间为 75ms-20ms=55ms,进程 3 的周转时间为 43ms- 30ms=13ms。平均周转时间为 (115+55+13)/3=61ms。所以该题的答案为 B 选项。

image

正确答案:B

进入练习

第 30 题

操作系统
2 分

进程 R 和 S 共享数据 data,若 data 在 R 和 S 中所在页的页号分别为 p1 和 p2,两个页所对应的页框号分别为 f1 和 f2,则下列叙述中,正确的是( )。

A. p1 和 p2 一定相等,f1 和 f2 一定相等

B. p1 和 p2 一定相等,f1 和 f2 不一定相等

C. p1 和 p2 不一定相等,f1 和 f2 一定相等

D. p1 和 p2 不一定相等,f1 和 f2 不一定相等

查看答案与解析收起答案与解析

参考答案:C

题目详解:
在操作系统中,进程 R 和 S 共享数据 data data ,这意味着它们访问的是同一块物理内存。以下是关键概念的分析:

  1. 页号(p1 p1 和 p2 p2 ):页号是虚拟地址空间中的逻辑页编号。不同进程的虚拟地址空间是独立的,因此 data data 在进程 R 和 S 中的页号 p1 p1 和 p2 p2 不一定相同。例如,进程 R 可能将 data data 放在其虚拟地址空间的第 5 页,而进程 S 可能将其放在第 10 页。

  2. 页框号(f1 f1 和 f2 f2 ):页框号是物理内存中的实际页框编号。由于 data data 是共享的,两个进程的页表会映射到同一个物理页框,因此 f1 f1 和 f2 f2 一定相同。例如,data data 可能存储在物理内存的第 20 页框中,因此 f1=f2=20 f1 = f2 = 20 。

综上所述:

  • p1 p1 和 p2 p2 不一定相等(因为虚拟地址空间独立)。
  • f1 f1 和 f2 f2 一定相等(因为共享同一物理页框)。

正确答案:C

进入练习

第 31 题

操作系统
2 分

若文件 F 仅被进程 P 打开并访问,则当进程 P 关闭 F 时,下列操作中,文件系统需要完成的是( )。

A. 删除目录文件中 F 的目录项

B. 释放 F 的索引节点所占的内存空间

C. 释放 F 的索引节点所占的外存空间

D. 将文件磁盘索引结点中的链接计数减 1

查看答案与解析收起答案与解析

参考答案:B

题目详解:
当进程 P P 关闭文件 F F 时,文件系统需要完成以下操作:

  1. 释放 F F 的索引节点所占的内存空间:索引节点(inode)是文件系统用于管理文件元数据的数据结构。当文件被打开时,其索引节点会被加载到内存中以供快速访问。当文件关闭时,这部分内存空间需要被释放,以便系统可以重新利用它。

  2. 其他选项分析:

    • 选项 A:删除目录文件中 F F 的目录项是不正确的,因为关闭文件并不会删除文件本身,只是释放相关资源。
    • 选项 C:释放 F F 的索引节点所占的外存空间也是不正确的,因为关闭文件并不会删除文件的外存数据,索引节点的外存空间仍然保留。
    • 选项 D:将文件磁盘索引结点中的链接计数减 1 通常是在删除硬链接时进行的操作,而不是关闭文件时的操作。

因此,文件系统在关闭文件时主要需要释放索引节点所占的内存空间。

正确答案:B

进入练习

第 32 题

操作系统
2 分

下列因素中,设备分配需要考虑的是( )。

I.设备的类型

II. 设备的访问权限

III.设备的占用状态

I V. 逻辑设备与物理设备的映射关系

A. 仅 I、II

B. 仅 II、III

C. 仅 III、IV

D. I、II、III、IV

查看答案与解析收起答案与解析

参考答案:D

题目详解:
设备分配是操作系统资源管理的重要环节,需要考虑以下因素:

  1. 设备的类型(I):不同类型的设备(如打印机、磁盘、网络设备等)具有不同的特性和使用方式,分配时需明确设备类型以满足任务需求。例如,打印任务必须分配打印机而非磁盘设备。

  2. 设备的访问权限(II):操作系统需检查进程是否具备访问该设备的权限,防止未授权访问。例如,普通用户可能无权直接访问高优先级设备。

  3. 设备的占用状态(III):分配前需检查设备是否空闲。若设备已被占用,需等待或选择其他可用设备。例如,打印机忙碌时需排队或分配其他空闲打印机。

  4. 逻辑设备与物理设备的映射关系(IV):用户程序通过逻辑设备名(如/dev/printer)请求设备,操作系统需将其映射到实际物理设备(如Printer1或Printer2),这种灵活性便于资源管理和负载均衡。

综上,设备分配需全面考虑上述四个因素,因此正确答案为 D D 。

正确答案:D

进入练习

第 33 题

计算机网络
2 分

在下图所示的分组交换网络中,主机 H1 和 H2 通过路由器互连,2 段链路的带宽均为 100Mb/s、时延带宽积(即单向传播时延×宽带)均为 1000b。若 H1 向 H2 发送 1 个大小为 1MB 的文件,分组长度为 1000B,则从 H1 开始发送时刻起到 H2 收到文件全部数据时刻止,所需的时间至少是( )。(注:M=106)。

2023-5

A. 80.02ms

B. 80.08ms

C. 80.09ms

D. 80.10ms

查看答案与解析收起答案与解析

参考答案:D

题目详解:

参数 计算 结果
链路带宽 RR — 100 Mbps100 \text{ Mbps}
时延带宽积 RTpR T_p 题设给定 1000 bit1000 \text{ bit}
传播时延 TpT_p Tp=1000 bit100 MbpsT_p = \dfrac{1000 \text{ bit}}{100 \text{ Mbps}} 0.01 ms
分组大小 LL — 1000 B=8000 bit1000 \text{ B} = 8000 \text{ bit}
发送时延 TsT_s Ts=LR=8000 bit100 MbpsT_s = \dfrac{L}{R} = \dfrac{8000 \text{ bit}}{100 \text{ Mbps}} 0.08 ms
分组数量 NN N=1 MB1000 BN = \dfrac{1 \text{ MB}}{1000 \text{ B}} 1000

  1. 发送阶段
  • 第 1 个分组:0→0.080 \rightarrow 0.08 ms 发送完。

  • …

  • 第 1000 个分组:79.92→8079.92 \rightarrow 80 ms 发送完。

    因此,最后 1 位比特离开 H1 的时刻为 t1=80 mst_1 = \textbf{80 ms}。

  1. H1 → R 传播
    单向传播时延 Tp=0.01T_p = 0.01 ms
    t2=t1+Tp=80.01 mst_2 = t_1 + T_p = \textbf{80.01 ms}

  2. R 转发(序列化)
    路由器必须将该分组重新发送一次,耗时仍为 Ts=0.08T_s = 0.08 ms
    t3=t2+Ts=80.09 mst_3 = t_2 + T_s = \textbf{80.09 ms}

  3. R → H2 传播
    再次经过链路传播时延 Tp=0.01T_p = 0.01 ms
    t4=t3+Tp=80.10 mst_4 = t_3 + T_p = \textbf{80.10 ms}

正确答案:D

进入练习

第 34 题

计算机网络
2 分

某无噪声理想信道带宽为 4MHz,采用 QAM 调制,若该信道的最大数据传输速率是 48Mb/s,则该信道采用的 QAM 调制方案是( )。

A. QAM–16

B. QAM–32

C. QAM–64

D. QAM–128

查看答案与解析收起答案与解析

参考答案:C

题目详解:
根据奈奎斯特定理,无噪声理想信道的最大数据传输速率 R R 可以通过以下公式计算:

R=2Blog⁡2VR = 2B \log_2 V

其中:

  • B B 是信道带宽,题目中给出 B=4 MHz B = 4 \text{ MHz} 。
  • V V 是调制电平数,即 QAM 调制方案中的状态数。
  • R R 是最大数据传输速率,题目中给出 R=48 Mb/s R = 48 \text{ Mb/s} 。

将已知数值代入公式:

48=2×4×log⁡2V48 = 2 \times 4 \times \log_2 V

简化方程:

48=8log⁡2V48 = 8 \log_2 V

两边同时除以 8:

log⁡2V=6\log_2 V = 6

通过指数运算求解 V V :

V=26=64V = 2^6 = 64

因此,该信道采用的 QAM 调制方案是 QAM–64。

正确答案:C

进入练习

第 35 题

计算机网络
2 分

假设通过同一信道,数据链路层分别采用停止–等待协议、GBN 协议和 SR 协议(发送窗口和接收窗口相等)传输数据,3 个协议数据帧长相同,忽略确认帧长度,帧序号位数为 3 比特。若对应3 个协议的发送方最大信道利用率分别是 U1 、U2 和 U3 ,则 U1、U2 和 U3 满足的关系是( )。

A. U1≤U2≤U3

B. U1≤U3≤U2

C. U2≤U3≤U1

D. U3≤U2≤U1

查看答案与解析收起答案与解析

参考答案:B

题目详解:
信道利用率 U U 的计算公式为:U=TdataTdata+Tprop+Tack U = \frac{T_{\text{data}}}{T_{\text{data}} + T_{\text{prop}} + T_{\text{ack}}}
其中:

  • Tdata T_{\text{data}} 是发送一帧数据的时间
  • Tprop T_{\text{prop}} 是传播时延
  • Tack T_{\text{ack}} 是确认时延

对于停止–等待协议(U1 U_1 ),每次只能发送一帧并等待确认,信道利用率为: U1=TdataTdata+2Tprop U_1 = \frac{T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}} (忽略 Tack T_{\text{ack}} 因为确认帧长度被忽略)

对于 GBN 协议(U2 U_2 ),发送窗口大小为 WGBN=2n−1=7 W_{\text{GBN}} = 2^n - 1 = 7 (n=3 n = 3 比特),信道利用率为: U2=WGBN⋅TdataTdata+2Tprop=7TdataTdata+2Tprop U_2 = \frac{W_{\text{GBN}} \cdot T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}} = \frac{7T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}}

对于 SR 协议(U3 U_3 ),发送窗口和接收窗口相等,最大窗口大小为 WSR=2n−1=4 W_{\text{SR}} = 2^{n-1} = 4 ,信道利用率为: U3=WSR⋅TdataTdata+2Tprop=4TdataTdata+2Tprop U_3 = \frac{W_{\text{SR}} \cdot T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}} = \frac{4T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}}

比较 U1 U_1 、U2 U_2 和 U3 U_3 :

  • U1=TdataTdata+2Tprop U_1 = \frac{T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}}
  • U3=4TdataTdata+2Tprop U_3 = \frac{4T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}}
  • U2=7TdataTdata+2Tprop U_2 = \frac{7T_{\text{data}}}{T_{\text{data}} + 2T_{\text{prop}}}

显然 U1≤U3≤U2 U_1 \leq U_3 \leq U_2 ,因此正确答案是 B。

正确答案:B

进入练习

第 36 题

计算机网络
2 分

已知 10BaseT 以太网的争用时间片为 51.2μs。若网卡在发送某帧时发生了连续 4 次冲突,则基于二进制指数退避算法确定的再次尝试重发该帧前等待的最长时间是( )。

A. 51.2μs

B. 204.8μs

C. 768μs

D. 819.2μs

查看答案与解析收起答案与解析

参考答案:C

题目详解:
在以太网中,二进制指数退避算法用于确定冲突后重发的等待时间。具体步骤如下:

  1. 基本时间单位是争用时间片,即 51.2μs 51.2 \mu s 。
  2. 第 k k 次冲突后的退避时间从 0 0 到 2k−1 2^k - 1 个时间片中随机选择。
  3. 最大退避次数限制为 10 10 次,即 k≤10 k \leq 10 。
  4. 题目中发生了连续 4 4 次冲突,因此 k=4 k = 4 。
  5. 最大退避时间为 (24−1)×51.2μs=15×51.2μs=768μs (2^4 - 1) \times 51.2 \mu s = 15 \times 51.2 \mu s = 768 \mu s 。

因此,最长的等待时间是 768μs 768 \mu s 。

正确答案:C

进入练习

第 37 题

计算机网络
2 分

若甲向乙发送数据时采用 CRC 校验,生成多项式为 G(X)=X4+X+1(即 G=10011),则乙接收到下列比特串时,可以断定其在传输过程中未发生错误的是( )。

A. 1 0111 0000

B. 1 0111 0100

C. 1 0111 1000

D. 1 0111 1100

查看答案与解析收起答案与解析

参考答案:D

题目详解:
CRC校验的原理是将数据比特串 D D 与生成多项式 G G 进行模2除法,若余数为0,则传输未发生错误。生成多项式 G(X)=X4+X+1 G(X) = X^4 + X + 1 对应的二进制为 G=10011 G = 10011 。

步骤如下:

  1. 在数据比特串后补 4 4 个0(因为生成多项式的最高次为4),得到被除数 D′ D' 。
  2. 用 G G 对 D′ D' 进行模2除法,检查余数是否为0。

对于选项D 1 0111 1100 1\ 0111\ 1100 :

  1. 补0后得到 D′=101111100 0000 D' = 101111100\ 0000 。
  2. 进行模2除法:
    • 1011111000000÷10011 1011111000000 \div 10011 :
      • 第一步:1011111000000⊕1001100000000=0010011000000 1011111000000 \oplus 1001100000000 = 0010011000000
      • 第二步:0010011000000⊕0000000000000=0010011000000 0010011000000 \oplus 0000000000000 = 0010011000000
      • 第三步:0010011000000⊕001001100000=0000000000000 0010011000000 \oplus 001001100000 = 0000000000000
    • 余数为0,说明传输未发生错误。

其他选项的余数均不为0,因此只有选项D满足条件。

正确答案:D

进入练习

第 38 题

计算机网络
2 分

某网络拓扑如下图所示,其中路出器 R2 实现 N AT 功能。若主机 H 向 Internet 发送 1 个 IP 分组,则经过 R2 转发后,该 IP 分组的源 IP 地址是( )。

2023-5

A. 195.123.0.33

B. 192.123.0.35

C. 192.168.0.1

D. 192.168.0.3

查看答案与解析收起答案与解析

参考答案:A

题目详解:
当 IP 分组经过 网络地址转换(Network Address Translation, NAT)转发时,会发生源 IP 地址转换:NAT 会将源 IP 地址从私有 IP 地址(在局域网内使用的 IP 地址)转换为公共 IP 地 址(在互联网上可路由的 IP 地址)。这是为了隐藏内部网络的真实 IP 地址,使其在公共网络 上不可见。同时给定 IP 地址段为 192.168.0.34/30,它表示一个有 30 位网络前缀的子网。根据 CIDR 表示法,30 表示子网掩码为 255.255.255.252。在这个子网中,可用的 IP 地址如下,网 络地址:192.168.0.32,第一个可用地址:192.168.0.33,最后一个可用地址:192.168.0.34,广 播地址:192.168.0.35。可以分配的源地址为 192.168.0.33 和 192.168.0.34,因为选项中只有 192.163.0.33,所以本题正确答案为选项 A。

正确答案:A

进入练习

第 39 题

计算机网络
2 分

主机 168.16.84.24/20 所在子网的最小可分配 IP 地址和最大可分配 IP 地址分别是( )。

A. 168.16.80.1, 168.16.84.254

B. 168.16.80.1, 168.16.95.254

C. 168.16.84.1, 168.16.84.254

D. 168.16.84.1, 168.16.95.254

查看答案与解析收起答案与解析

参考答案:B

题目详解:

  1. 首先,根据给定的 IP 地址 168.16.84.24/20 168.16.84.24/20 ,我们需要确定子网掩码。/20 /20 表示前 20 位是网络位,子网掩码为 255.255.240.0 255.255.240.0 。

  2. 计算子网地址:

    • 将 IP 地址 168.16.84.24 168.16.84.24 转换为二进制形式:
      168.16.0101 0100.24 168.16.0101\ 0100.24 。
    • 子网掩码 255.255.240.0 255.255.240.0 的二进制形式为:
      11111111.11111111.11110000.00000000 11111111.11111111.11110000.00000000 。
    • 进行按位与运算,得到子网地址:
      168.16.0101 0000.0 168.16.0101\ 0000.0 ,即 168.16.80.0 168.16.80.0 。
  3. 确定子网范围:

    • 最小可分配 IP 地址是子网地址加 1,即 168.16.80.1 168.16.80.1 。
    • 最大可分配 IP 地址是子网的广播地址减 1。广播地址的计算方法是将主机位全部置 1:
      168.16.0101 1111.11111111 168.16.0101\ 1111.11111111 ,即 168.16.95.255 168.16.95.255 。
    • 因此,最大可分配 IP 地址为 168.16.95.254 168.16.95.254 。
  4. 综上所述,最小可分配 IP 地址是 168.16.80.1 168.16.80.1 ,最大可分配 IP 地址是 168.16.95.254 168.16.95.254 。

正确答案:B

进入练习

第 40 题

计算机网络
2 分

下列关于 IPv4 和 IPv6 的叙述中,正确的是( )( )。

I. IPv6 地址空间是 IPv4 地址空间的 96 倍

II. IPv4 首部和 IPv6 的基本首部的长度均可变

III. IPv4 向 IPv6 过渡可以采用双协议栈和隧道技术

I V. IPv6 首部的 Hop Limit 等价于 IPv4 首部的 TTL 字段

A. 仅 I、II

B. 仅 I、IV

C. 仅 II、III

D. 仅 III、IV

二、综合应用题(第 41~47 小题,共 70 分)

查看答案与解析收起答案与解析

参考答案:D

题目详解:
关于 IPv4 和 IPv6 的叙述分析如下:

I. IPv6 地址空间是 IPv4 地址空间的 96 倍

  • IPv4 地址长度为 32 32 位,地址空间为 232 2^{32} 。
  • IPv6 地址长度为 128 128 位,地址空间为 2128 2^{128} 。
  • IPv6 地址空间是 IPv4 的 2128232=296 \frac{2^{128}}{2^{32}} = 2^{96} 倍,即 296 2^{96} 倍,而非简单的 96 倍。因此叙述 错误。

II. IPv4 首部和 IPv6 的基本首部的长度均可变

  • IPv4 首部长度可变(因为有选项字段),但 IPv6 的基本首部长度固定为 40 40 字节。因此叙述 错误。

III. IPv4 向 IPv6 过渡可以采用双协议栈和隧道技术

  • 双协议栈(Dual Stack)和隧道技术(Tunneling)是 IPv4 向 IPv6 过渡的两种主要技术,叙述 正确。

IV. IPv6 首部的 Hop Limit 等价于 IPv4 首部的 TTL 字段

  • IPv6 的 Hop Limit 字段与 IPv4 的 TTL(Time To Live)字段功能相同,均用于限制数据包的生存跳数,叙述 正确。

综上,正确的叙述是 III 和 IV,对应选项 D。

正确答案:D

进入练习

综合应用题

7 题 · 共 69 分

第 41 题

数据结构
10 分

(13 分)已知有向图 G 采用邻接矩阵存储,类型定义如下:

复制代码
typedef struct //图的类型定义

{
    int numVertices, numEdges;//图的顶点数和有向边数

    char VerticesList[MAXV];//顶点表,MAXV为已定义常量

    int Edge[MAXV][MAXV];//邻接矩阵

}MGraph

将图中出度大于入度的顶点称为 K 顶点。例如题 41 图中,顶点 a 和顶点 b 为 K 顶点。请设计算法:int printVertices(MGraph G),对给定的任意非空有向图 G,输出图 G 中所有的 K顶点,并返回 K 顶点的个数。要求:

2023-41

(1)给出算法的基本设计思想。

(2)根据设计思想,采用 C 或 C++语言描述算法,关键之处给出注释。

查看答案与解析收起答案与解析

题目详解:
1)采用邻接矩阵表示有向图时,一行中 1 的个数为该行对应顶点的出度,一列中 1 的个数为该列对应顶点的入度。使用一个初值为 0 的计数器记录 KK 顶点的个数。对图 GG 的每个顶点,根据邻接矩阵计算其出度 outdegreeoutdegree 和入度 indegreeindegree。若 outdegree−indegree>0outdegree - indegree > 0,则输出该顶点且计数器加 1。最后返回计数器的值。

2)算法实现

c 复制代码
int printVertices(MGraph G) {
    // K 顶点的个数
    int count = 0;
    for (int v = 0; v < numVertices; v++) {
        // v 顶点的入度和出度
        int indegree = 0;
        int outdegree = 0;
        // 统计出度
        for (int i = 0; i < numVertices; i++) {
            outdegree += G.Edge[v][i];
        }
        // 统计入度
        for (int i = 0; i < numVertices; i++) {
            indegree += G.Edge[i][v];
        }
        if (outdegree > indegree) {
            printf("%s ", G.VerticesList[v]);
            count++;
        }
    }
    return count;
}
进入练习

第 42 题

数据结构
10 分

(10 分)对含有 n(n > 0)个记录的文件进行外部排序,采用置换-选择排序生成初始归并段时需要使用一个工作,工作区中能保存 m 个记录,请回答下列问题:

(1)若文件中含有 19 个记录,其关键字依次是 51, 94, 37, 92, 14, 63, 15, 99, 48, 56, 23, 60, 31, 17,43, 8, 90, 166, 100,当 m = 4 时,可生成几个初始归并段?各是什么?

(2)对任意的 m(n>>m>0),生成的第一个初始归并段的长度最大值和最小值分别是多少?

查看答案与解析收起答案与解析

题目详解:
1)该题的关键字序列可生成 3 个初始归并段,分别是:

  • 37,51,63,92,94,99
  • 14,15,23,31,48,56,60,90,166
  • 8,17,43,100

2)最大值为 nn,最小值为 mm。

进入练习

第 43 题

计算机组成原理
13 分

(14 分)已知计算机 M 字长为 32 位,按字节编址,采用请求调页策略的虚拟存储管理方式,虚拟地址 32 位,页面大小为 4KB;数据 Cache 采用 4 路组相联映射方式,数据区大小为 8KB,主存块大小为 32B。现有 C 语言程序段如下:

复制代码
int a[24][64];
…
for (i=0;i<24;i++)
	for (j=0;j<64;j++)a[i][j]=10;

已知二维数组 a 按行优先存放,在虚拟地址空间中分配的起始地址为 0042 2000H,sizeof(int) =4。假定在 M 上执行上述程序段之前数组 a 不在主存,且在该程序执行过程中不会发生页面置换。请回答下列问题:

(1)数组分布在几个页面中?对于数组 a 的访问,会发生几次缺页异常?页故障地址各是什么?

(2)不考虑变量 i 和 j,该程序段的数据访问是否具有时间局部性?为什么?

(3)计算机 M 的虚拟地址(A31~A0)中哪几位用作块内地址?哪几位用作 Cache 组号?a\[1][0]的虚拟地址是多少?其所在主存块对应的 Cache 组号是多少?

(4)数组 a 占用多少主存块?假设上述程序段执行过程中数组 a 的访问不会和其他数据发生Cache 访问冲突,则数组 a 的 Cache 命中率是多少?若将循环中 i 和 j 的次序按如下方式调换:

复制代码
for (j=0;j<64;j++)
	for (i=0;i<24;i++)a[i][j]=10;

则数组 a 的 Cache 命中率又是多少?

查看答案与解析收起答案与解析

题目详解:
1)数组 aa 分布在 2 个页面中。缺页异常次数为 2。两个页故障地址分别是 0042 2000H0042\,2000H、0042 3000H0042\,3000H。

2)该程序段的数据访问没有时间局部性。因为每个数组元素仅访问 1 次。

3)虚拟地址中低 5 位 (A4A_4~A0A_0) 用作块内地址;低 11 位虚拟地址中高 6 位 (A10A_{10}~A5A_5) 用作 Cache 组号。a[1][0]a[1][0] 的虚拟地址为 0042 2000H+1×64×4+0×4=0042 2100H0042\,2000H + 1 \times 64 \times 4 + 0 \times 4 = 0042\,2100H。a[1][0]a[1][0] 所在主存块对应的 Cache 组号为 001000B=8001000B = 8。

4)数组 aa 占 24×64×4B32B=192\frac{24 \times 64 \times 4B}{32B} = 192 个主存块。每个主存块存放 32B4B=8\frac{32B}{4B} = 8 个数组元素,访问数组 aa 的 Cache 命中率为 8−18=87.5%\frac{8-1}{8} = 87.5\%。8 行数组元素占 8×64×4B32B=64\frac{8 \times 64 \times 4B}{32B} = 64 个主存块,分别映射到 64 个 Cache 组的某 Cache 行,数组 aa 共有 24 行,因此每个 Cache 组中只有 248=3\frac{24}{8} = 3 个 Cache 行存放数组 aa 中的数据,而每个 Cache 组有 4 行,因而不会发生替换,访问数组 aa 的 Cache 命中率为 78=87.5%\frac{7}{8} = 87.5\%。

进入练习

第 44 题

计算机组成原理
12 分

(9 分)43 题中 C 程序段在计算机 M 上的部分机器级代码如下,每个机器级代码行中依次包含指令序号、虚拟地址、机器指令和汇编指令。

复制代码
  for (i=0; i<24; i++)
1 00401072 C7 45 F8 00 00 00 00       mov [ebp–8],0
2 00401079 EB 09                      jmp 00401084h                 
3 0040107B 8B 55 F8                   mov eax,[ebp-8]
  ...                                 ...
7 00401088 7D 32                      jge 004010BCh
	for (j=0; j<64; j++)
8 0040108A C7 45 FC 00 00 00 00       mov [ebp–4],0
  ...      ...                        ...

      a[i][j]=10;
  ...      ...                        ...
19 004010AE C7 84 82 00 20 42 00 0A   mov [ecx + edx \* 4+ 
            00 00 00 00422000h],0Ah

请回答下列问题。

(1)第 20 条指令的虚拟地址是多少?

(2)已知第 2 条 jmp 和第 7 条 jge 都是跳转指令,其操作码分别是 EBH 和 7DH,跳转目标地址分别为 0040 1084H、0040 10BCH,这两条指令分别采用什么寻址方式?请给出第 2 条指令 jmp 的跳转目标地址计算过程。

(3)已知第 19 条 mov 指令的功能是“a[i][j]←10”,其中 ecx 和 edx 为寄存器名,0042 2000H是数组 a 的首地址,指令中源操作数采用什么寻址方式?已知 edx 中存放的是变量 j,ecx 中存放的是什么?根据该指令的机器码判断计算机 M 采用的是大端还是小端方式。

(4)第 1 次执行第 19 条指令时,取指令过程中是否会发生缺页异常?为什么?

2023 年全国硕士研究生入学统一考试计算机学科专业基础综合试题 第 8 页(共 11 页)

查看答案与解析收起答案与解析

题目详解:
1)第 20 条指令的虚拟地址为 0040 10B9H0040\,10B9H。

2)第 2 条 jmp 和第 7 条 jge 指令都采用相对寻址方式。第 2 条指令 jmp 的跳转目标地址 =0040 1079H+2+09H=0040 1084H= 0040\,1079H + 2 + 09H = 0040\,1084H。

3)第 19 条指令中源操作数采用立即(数)寻址方式。根据汇编指令中给出的计算公式 ecx+edx×4+00422000hecx + edx \times 4 + 00422000h 可知,ecxecx 中存放的是 i×256i \times 256。MM 采用小端方式。

4)第一次执行第 19 条指令时,取指令过程中不会发生缺页异常。因为第 19 条指令所在的程序段都在页号为 00401H00401H 的同一个页面中,执行第 19 条指令时,该页已在主存,因而取指令过程中不会发生缺页异常。

进入练习

第 45 题

操作系统
7 分

(7 分)现要求学生使用 swap 指令和布尔型变量 lock,实现临界区互斥。lock 为线程间共享的变量。lock 的值为 TRUE 时线程不能进入临界区,为 FALSE 时,线程能进入临界区。某同学编写的实现临界区互斥的伪代码如题 45(a)图所示:请回答下列问题。

2023-45

请回答下列问题:

(1)题 45(a)图的伪代码中哪些语句存在错误?将其改为正确的语句(不增加语句条数)。

(2)题 45(b)图给出了两个变量值的函数 newSwap()的代码,是否可以用函数调用语句“newSwap(&key,&lock)”代替指令“swap key, lock”以实现临界区的互斥?为什么?

查看答案与解析收起答案与解析

题目详解:
1)进入区中的语句 if (key == TRUE) swap key,lock 存在错误,修改为 while (key == TRUE) swap key, lock。 退出区中的语句 lock=TRUE 存在错误,修改为 lock=FALSE。

2)否。因为多个线程可以并发执行 newSwap(),newSwap() 执行时传递给形参 b 的是共享变量 lock 的地址,在 newSwap() 中对 lock 既有读操作又有写操作,并发执行时不能保证实现两个变量值的原子交换,从而会导致并发执行的线程同时进入临界区。

进入练习

第 46 题

操作系统
8 分

(8 分)进程 P 通过执行系统调用从键盘接收一个字符的输入,已知此过程中与进程 P 相关的操作包括:①将进程 P 插入就绪队列;②将进程 P 插入阻塞队列;③将字符从键盘控制器读入系统缓冲区;④启动键盘中断处理程序;⑤进程 P 系统调用返回;⑥用户在键盘上输入字符。以上编号①~⑥仅用于标记操作,与操作的先后顺序无关,请回答下列问题。

(1)按照正确的操作顺序,操作①的前一个和后一个操作分别是上述操作中的哪一个?操作⑥的后一个操作是上述操作中的哪一个?

(2)在上述哪个操作之后 CPU 一定从进程 P 切换到其他进程?在上述哪个操作之后 CPU 调度程序才能选中进程 P 执行?

(3)完成上述哪个操作的代码属于键盘驱动程序?

(4)键盘中断处理程序执行时,进程 P 处于什么状态?CPU 处于内核态还是用户态?

查看答案与解析收起答案与解析

题目详解:
1)在操作①的前操作是③,后一个操作是⑤。操作⑥的后一个操作是④。

2)在操作②之后 CPU 一定从进程 PP 切换到其他进程。在操作①之后 CPU 调度程序才能选中进程 PP 执行。

3)完成操作③的代码属于键盘驱动程序。

4)进程 PP 处于阻塞状态。CPU 处于内核态。

进入练习

第 47 题

计算机网络
9 分

(9 分)某网络拓扑如题 47 图所示,主机 H 登录 FTP 服务器后,向服务器上传一个大小为18000B 的文件 F。假设 H 为传输 F 建立数据连接时,选择的初始序号为 100,MSS=1000B,拥塞控制初始阈值为 4MSS,RTT=10ms,忽略 TCP 段的传输时延;在 F 的传输过程中,H 均以MSS 段向服务器发送数据,且未发生差错、丢包和乱序现象。

2023-47

请回答下列问题。

(1)FTP 的控制连接是持久的还是非持久的?FTP 的数据连接是持久的还是非持久的?H 登录FTP 服务器时,建立的 TCP 连接是控制连接还是数据连接?

(2)H 通过数据连接发送 F 时,F 的第 1 个字节的序号是多少?在断开数据连接的过程中,FTP服务器发送的第二次挥手 ACK 段的确认序号是多少?

(3)H 通过数据连接发送 F 时,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口调整为多少?收到确认序号为 7101 的确认段时,H 的拥塞窗口调整为多少?

(4)H 从请求建立数据连接开始,到确认 F 已被服务全部接收为止,至少需要多长时间?期间应用层数据的平均发送速率是多少?

查看答案与解析收起答案与解析

题目详解:
1)FTP 的控制连接是持久的;数据连接是非持久的;H 登录 FTP 服务器时,建立的 TCP 连接是控制连接。

2)F 的第 1 个字节的序号是 101101;第二次挥手 ACK 段的确认序号是 1810218102。

3)当 H 收到确认序号为 21012101 的确认段时,H 的拥塞窗口调整为 3MSS3MSS;收到确认序号为 71017101 的确认段时,H 的拥塞窗口调整为 5MSS5MSS。

4)H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止,至少需要 6RTT=6×10ms=60ms6RTT=6 \times 10ms=60ms;期间应用层数据平均发送速率是 18000B/60ms=300×103B/s=0.3MB/s=2.4Mb/s18000B/60ms=300 \times 10^3B/s=0.3MB/s=2.4Mb/s。

进入练习