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

2021年408真题

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

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

选择题

40 题 · 共 80 分

第 1 题

数据结构
2 分

已知头指针 h 指向一个带头结点的非空单循环链表,结点结构为 data next ,其中 next 是指向直接后继结点的指针,p 是尾指针,q 是临时指针。现要删除该链表的第一个元素,正确的语句序列是( )。

A. h->next = h->next->next; q=h->next; free(q);

B. q=h->next; h->next = h->next->next; free(q);

C. q=h->next; h->next = q->next; if(p!=q)p=h; free(q);

D. q=h->next; h->next = q->next; if(p==q)p=h; free(q);

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

参考答案:D

题目详解:
要删除带头结点的非空单循环链表的第一个元素,需要执行以下步骤:

  1. 首先,用临时指针 q q 保存第一个结点的地址,即 q=h→next q = h \rightarrow next 。

  2. 将头结点的 next next 指针指向第二个结点,即 h→next=q→next h \rightarrow next = q \rightarrow next 。

  3. 由于是循环链表,需要检查尾指针 p p 是否指向第一个结点(即 p==q p == q )。如果是,说明删除的是链表中唯一的元素(除头结点外),此时需要将尾指针 p p 重新指向头结点 h h ,即 if(p==q)p=h if(p == q) p = h 。

  4. 最后,释放临时指针 q q 指向的结点,即 free(q) free(q) 。

选项 D 完全符合上述步骤:

  • q=h→next q = h \rightarrow next 保存第一个结点。
  • h→next=q→next h \rightarrow next = q \rightarrow next 更新头结点的 next next 指针。
  • if(p==q)p=h if(p == q) p = h 处理尾指针的特殊情况。
  • free(q) free(q) 释放第一个结点。

其他选项的问题:

  • A:先更新 h→next h \rightarrow next ,再 free(q) free(q) ,但 q q 未正确指向第一个结点。
  • B:未处理尾指针 p p 的特殊情况。
  • C:条件 if(p!=q)p=h if(p != q) p = h 逻辑错误,应为 if(p==q)p=h if(p == q) p = h 。

正确答案:D

进入练习

第 2 题

数据结构
2 分

已知初始为空的队列 Q 的一端仅能进行入队操作,另外一端既能进行入队操作又能进行出队操作。若 Q 的入队序列是 1, 2, 3, 4, 5, 则不能得到的出队序列是( )。

A. 5, 4, 3, 1, 2

B. 5, 3, 1, 2, 4

C. 4, 2, 1, 3, 5

D. 4, 1, 3, 2, 5

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

参考答案:D

题目详解:
首先,我们需要明确队列的操作规则。题目描述的队列 Q Q 是一个双端队列的特殊情况:一端仅能进行入队操作(称为受限端),另一端既能入队又能出队(称为非受限端)。入队序列为 1,2,3,4,5 1, 2, 3, 4, 5 。

我们需要分析每个选项的出队序列是否可以通过合法的操作得到。

选项 A: 5,4,3,1,2 5, 4, 3, 1, 2

  1. 将 1,2,3,4,5 1, 2, 3, 4, 5 依次从非受限端入队。

  2. 从非受限端依次出队 5,4,3 5, 4, 3 。

  3. 将 1 1 从非受限端出队。

  4. 将 2 2 从非受限端出队。

    此序列是合法的。

选项 B: 5,3,1,2,4 5, 3, 1, 2, 4

  1. 将 1,2,3,4,5 1, 2, 3, 4, 5 依次从非受限端入队。

  2. 从非受限端出队 5 5 。

  3. 从非受限端出队 3 3 (此时 4 4 在受限端)。

  4. 从非受限端出队 1 1 。

  5. 从非受限端出队 2 2 。

  6. 从非受限端出队 4 4 。

    此序列是合法的。

选项 C: 4,2,1,3,5 4, 2, 1, 3, 5

  1. 将 1,2,3 1, 2, 3 从非受限端入队,4,5 4, 5 从受限端入队。

  2. 从非受限端出队 4 4 。

  3. 从非受限端出队 2 2 。

  4. 从非受限端出队 1 1 。

  5. 从非受限端出队 3 3 。

  6. 从非受限端出队 5 5 。

    此序列是合法的。

选项 D: 4,1,3,2,5 4, 1, 3, 2, 5

  1. 要出队 4 4 ,必须先将 1,2,3 1, 2, 3 从非受限端入队,4 4 从受限端入队。

  2. 出队 4 4 后,队列中剩下 1,2,3 1, 2, 3 (非受限端)和 5 5 (受限端)。

  3. 接下来要出队 1 1 ,可以直接从非受限端出队。

  4. 然后要出队 3 3 ,但 3 3 位于 2 2 之后,无法直接出队 3 3 而不先出队 2 2 。

    因此,此序列无法通过合法操作得到。

正确答案:D

进入练习

第 3 题

数据结构
2 分

已知二维数组 A 按行优先方式存储,每个元素占用 1 个存储单元。若元素 A[0][0]的存储地址是100,A\[3][3]的存储地址是 220,则元素 A\[5][5]的存储地址是( )。

A. 295

B. 300

C. 301

D. 306

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

参考答案:B

题目详解:
已知二维数组 A A 按行优先方式存储,每个元素占用 1 1 个存储单元。设数组 A A 的列数为 n n ,则元素 A[i][j] A[i][j] 的存储地址可以表示为:

Address(A[i][j])=Address(A[0][0])+(i×n+j)×element_size \text{Address}(A[i][j]) = \text{Address}(A[0][0]) + (i \times n + j) \times \text{element\_size}

其中,element_size=1 \text{element\_size} = 1 个存储单元。

根据题目给出的信息:

  1. Address(A[0][0])=100 \text{Address}(A[0][0]) = 100
  2. Address(A[3][3])=220 \text{Address}(A[3][3]) = 220

代入公式:

220=100+(3×n+3)×1 220 = 100 + (3 \times n + 3) \times 1
220−100=3n+3 220 - 100 = 3n + 3
120=3n+3 120 = 3n + 3
3n=117 3n = 117
n=39 n = 39

现在计算 A[5][5] A[5][5] 的存储地址:

Address(A[5][5])=100+(5×39+5)×1 \text{Address}(A[5][5]) = 100 + (5 \times 39 + 5) \times 1
=100+(195+5) = 100 + (195 + 5)
=100+200 = 100 + 200
=300 = 300

因此,A[5][5] A[5][5] 的存储地址是 300 300 。

正确答案:B

进入练习

第 4 题

数据结构
2 分

某森林 F 对应的二叉树为 T,若 T 的先序遍历序列是 a, b, d, c, e, g, f,中序遍历序列是 b, d, a, e,g, c, f,则 F 中树的棵树是( )。

A. 1

B. 2

C. 3

D. 4

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

参考答案:C

题目详解:
首先,我们需要根据给定的先序遍历和中序遍历序列重建二叉树 T。

  1. 先序遍历序列:a, b, d, c, e, g, f
    中序遍历序列:b, d, a, e, g, c, f

  2. 先序遍历的第一个元素是根节点,因此 a 是 T 的根节点。
    在中序遍历中,a 左边的序列是左子树的中序遍历,右边是右子树的中序遍历。

    • 左子树中序遍历:b, d
    • 右子树中序遍历:e, g, c, f
  3. 根据左子树的节点数量(2个),从先序遍历中提取左子树的先序序列:b, d。

    • 左子树的根节点是 b。
    • 在中序遍历中,b 的右孩子是 d(因为 d 在 b 之后)。
  4. 右子树的先序序列:c, e, g, f。

    • 右子树的根节点是 c。
    • 在中序遍历中,c 的左子树是 e, g,右子树是 f。
    • 进一步分析 e, g:
      • 先序序列中 e 在 g 之前,因此 e 是根节点,g 是其右孩子。
  5. 重建的二叉树 T 结构如下:

    复制代码
         a
        / \
       b   c
        \ / \
        d e  f
          \
           g
  6. 将二叉树 T 转换为森林 F:

    • 二叉树的根节点 a 是第一棵树的根。
    • a 的右孩子 c 是第二棵树的根。
    • c 的右孩子 f 是第三棵树的根。
    • 因此,森林 F 中有 3 棵树。

正确答案:C

进入练习

第 5 题

数据结构
2 分

若某二叉树有 5 个叶结点,其权值分别为 10, 12, 16, 21, 30,则其最小的带权路径长度(WPL)是( )。

A. 89

B. 200

C. 208

D. 289

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

参考答案:B

题目详解:
要计算二叉树的最小带权路径长度(WPL),可以使用哈夫曼编码的方法。哈夫曼树是一种带权路径长度最短的二叉树。计算步骤如下:

  1. 将所有叶结点按权值从小到大排序:10 10 , 12 12 , 16 16 , 21 21 , 30 30 。

  2. 每次取出权值最小的两个结点,合并成一个新的父结点,父结点的权值为这两个结点的权值之和。重复此过程,直到只剩一个结点(根结点)。

    • 第一步:合并 10 10 和 12 12 ,得到新结点 22 22 。剩余结点:16 16 , 21 21 , 22 22 , 30 30 。
    • 第二步:合并 16 16 和 21 21 ,得到新结点 37 37 。剩余结点:22 22 , 30 30 , 37 37 。
    • 第三步:合并 22 22 和 30 30 ,得到新结点 52 52 。剩余结点:37 37 , 52 52 。
    • 第四步:合并 37 37 和 52 52 ,得到根结点 89 89 。
  3. 计算 WPL:每个叶结点的权值乘以其到根结点的路径长度(边数),然后求和。

    • 10 10 的路径长度为 3,贡献为 10×3=30 10 \times 3 = 30 。
    • 12 12 的路径长度为 3,贡献为 12×3=36 12 \times 3 = 36 。
    • 16 16 的路径长度为 2,贡献为 16×2=32 16 \times 2 = 32 。
    • 21 21 的路径长度为 2,贡献为 21×2=42 21 \times 2 = 42 。
    • 30 30 的路径长度为 2,贡献为 30×2=60 30 \times 2 = 60 。

    将这些值相加:30+36+32+42+60=200 30 + 36 + 32 + 42 + 60 = 200 。

因此,最小的带权路径长度(WPL)为 200 200 。

正确答案:B

进入练习

第 6 题

数据结构
2 分

给定平衡二叉树如下图所示,插入关键字 23 后,根中的关键字是( )。

2021-6

A. 16

B. 20

C. 23

D. 25

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

参考答案:D

题目详解:
根据 AVL 旋转方法可知,这题采用 RL 型旋转,旋转后树的结构为:

复制代码
    25
   /  \
  20   30
 /  \    \
16  23    40

根结点为 25

正确答案:D

进入练习

第 7 题

数据结构
2 分

给定如下有向图,该图的拓扑有序序列的个数是( )。

2021-7

A. 1

B. 2

C. 3

D. 4

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

参考答案:A

题目详解:
求拓扑序列的过程如下:从图中选择无入边的结点,输出该结点并删除该结点的所有出边,重复上述过程,直至全部结点都已输出,求得拓扑序列ABCDEF。每次输出一个结点并删除该结点的所有出边后,都发现仅有一个结点无入边,因此该拓扑序列唯一,故选A。

正确答案:A

进入练习

第 8 题

数据结构
2 分

使用 Dijkstra 算法求下图中从顶点 1 到其余各顶点的最短路径,将当前找到的从顶点 1 到顶点 2,3, 4, 5 的最短路径长度保存在数组 dist 中,求出第二条最短路径后,dist 中的内容更新为( )。

2021-8

A. 26, 3, 14, 6

B. 25, 3, 14, 6

C. 21, 3, 14, 6

D. 15, 3, 14, 6

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

参考答案:C

题目详解:
在 djkstra 算法中,每次在 dist 数组中选择一个最小值加入顶点集,并从该顶点出发修改 dist 数组。本题中 dist 数组的变化过程如下: dist[26, 3, ∞, 6] → [25, 3, ∞, 6] → [21, 3, 14, 6]

进入练习

第 9 题

数据结构
2 分

在一棵高度为 3 的 3 阶 B 树中,根为第 1 层,若第 2 层中有 4 个关键字,则该树的结点个数最多是( )。

A. 11

B. 10

C. 9

D. 8

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

参考答案:A

题目详解:
保证特性中的结点数量尽量多,然后每个结点中元素数量尽量多。 3 阶 B 树 中个结点最多有两个元素,三个孩子。

正确答案:A

进入练习

第 10 题

数据结构
2 分

设数组 S[]={93, 946, 372, 9, 146, 151, 301, 485, 236, 327, 43, 892},采用最低位优先(LSD)基数排序将 S 排列成升序序列。第 1 趟分配、收集后,元素 372 之前、之后紧邻的元素分别是( )。

A. 43, 892

B. 236, 301

C. 301, 892

D. 485, 301

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

参考答案:C

题目详解:
基数排序(LSD)从最低位开始,依次对每一位进行分配和收集。第 1 趟处理的是个位数。

原始数组 S[]={93,946,372,9,146,151,301,485,236,327,43,892} S[] = \{93, 946, 372, 9, 146, 151, 301, 485, 236, 327, 43, 892\} 。

  1. 分配:按照个位数分配到 0-9 的桶中:

    • 0:
    • 1: 151,301 151, 301
    • 2: 372,892 372, 892
    • 3: 93,43 93, 43
    • 4:
    • 5: 485,236,146 485, 236, 146
    • 6: 946,236,146 946, 236, 146
    • 7: 327 327
    • 8:
    • 9: 9 9
  2. 收集:按顺序从桶中收集元素,得到第 1 趟后的序列:
    {151,301,372,892,93,43,485,236,146,946,327,9} \{151, 301, 372, 892, 93, 43, 485, 236, 146, 946, 327, 9\} 。

  3. 定位 372:

    • 372 之前的元素是 301 301 。
    • 372 之后的元素是 892 892 。

因此,元素 372 之前、之后紧邻的元素分别是 301 301 和 892 892 。

正确答案:C

进入练习

第 11 题

数据结构
2 分

将关键字 6, 9, 1, 5, 8, 4, 7 依次插入到初始为空的大根堆 H 中,得到的 H 是( )。

A. 9, 8, 7, 6, 5, 4, 1

B. 9, 8, 7, 5, 6, 1, 4

C. 9, 8, 7, 5, 6, 4, 1

D. 9, 6, 7, 5, 8, 4, 1

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

参考答案:B

题目详解:
构建大根堆的过程如下:

  1. 插入 6 6 :堆为 [6] [6]
  2. 插入 9 9 :9>6 9 > 6 ,交换,堆为 [9,6] [9, 6]
  3. 插入 1 1 :1≤6 1 \leq 6 ,无需交换,堆为 [9,6,1] [9, 6, 1]
  4. 插入 5 5 :5≤6 5 \leq 6 ,无需交换,堆为 [9,6,1,5] [9, 6, 1, 5]
  5. 插入 8 8 :8>5 8 > 5 ,交换;8>6 8 > 6 ,交换,堆为 [9,8,1,5,6] [9, 8, 1, 5, 6]
  6. 插入 4 4 :4≤1 4 \leq 1 ,无需交换,堆为 [9,8,1,5,6,4] [9, 8, 1, 5, 6, 4]
  7. 插入 7 7 :7>4 7 > 4 ,交换;7>1 7 > 1 ,交换,堆为 [9,8,7,5,6,4,1] [9, 8, 7, 5, 6, 4, 1]

最终堆为 [9,8,7,5,6,1,4] [9, 8, 7, 5, 6, 1, 4] ,对应选项 B。

正确答案:B

进入练习

第 12 题

计算机组成原理
2 分

2017 年公布的全球超级计算机 TOP 500 排名中,我国“神威•太湖之光”超级计算机蝉联第一,其浮点运算速度为 93.0146PFLOPS,说明该计算机每秒钟内完成的浮点操作次数约为( )。

A. 9.3×1013 次

B. 9.3×1015 次

C. 9.3 千万亿次

D. 9.3 亿亿次

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

参考答案:D

题目详解:
“神威•太湖之光”超级计算机的浮点运算速度为 93.0146 93.0146 PFLOPS,其中 PFLOPS 表示每秒 1015 10^{15} 次浮点运算(Peta-FLOPS)。因此,计算其每秒钟完成的浮点操作次数如下:

93.0146 PFLOPS=93.0146×1015 FLOPS 93.0146 \text{ PFLOPS} = 93.0146 \times 10^{15} \text{ FLOPS}

93.0146×1015 93.0146 \times 10^{15} 可以表示为 9.30146×1016 9.30146 \times 10^{16} ,即约 9.3×1016 9.3 \times 10^{16} 次浮点操作/秒。

1016 10^{16} 是“亿亿”次(108×108=1016 10^8 \times 10^8 = 10^{16} ),因此 9.3×1016 9.3 \times 10^{16} 次即为 9.3 9.3 亿亿次。

选项 D 正确描述了这一数值。

正确答案:D

进入练习

第 13 题

计算机组成原理
2 分

已知带符号整数用补码表示,变量 x, y, z 的机器数分别为 FFFDH, FFDFH, 7FFCH,下列结论中,正确的是( )。

A. 若 x, y 和 z 为无符号整数,则 z<x<y

B. 若 x, y 和 z 为无符号整数,则 x<y<z

C. 若 x, y 和 z 为带符号整数,则 x<y<z

D. 若 x, y 和 z 为带符号整数,则 y<x<z

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

参考答案:D

题目详解:
首先将给定的十六进制机器数转换为十进制,分别考虑无符号整数和带符号整数(补码表示)的情况。

  1. 无符号整数:

    • x=FFFDH=6553310 x = \text{FFFDH} = 65533_{10}
    • y=FFDFH=6550310 y = \text{FFDFH} = 65503_{10}
    • z=7FFCH=3276410 z = \text{7FFCH} = 32764_{10}
      比较大小:z<y<x z < y < x ,因此选项 A 和 B 都不正确。
  2. 带符号整数(补码表示):

    • x=FFFDH x = \text{FFFDH} :
      最高位为 1,是负数。补码转换为原码:
      FFFDH \text{FFFDH} 的二进制为 1111 1111 1111 1101 1111\ 1111\ 1111\ 1101 ,取反加 1 得到原码:
      1000 0000 0000 0011 1000\ 0000\ 0000\ 0011 ,即 −310 -3_{10} 。
    • y=FFDFH y = \text{FFDFH} :
      最高位为 1,是负数。补码转换为原码:
      FFDFH \text{FFDFH} 的二进制为 1111 1111 1101 1111 1111\ 1111\ 1101\ 1111 ,取反加 1 得到原码:
      1000 0000 0010 0001 1000\ 0000\ 0010\ 0001 ,即 −3310 -33_{10} 。
    • z=7FFCH z = \text{7FFCH} :
      最高位为 0,是正数。直接转换为十进制:
      7FFCH=3276410 \text{7FFCH} = 32764_{10} 。
      比较大小:y<x<z y < x < z ,因此选项 D 正确,选项 C 不正确。

正确答案:D

进入练习

第 14 题

计算机组成原理
2 分

下列数值中,不能用 IEEE 754 浮点格式精确表示的( )。

A. 1.2

B. 1.25

C. 2.0

D. 2.5

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

参考答案:A

题目详解:
IEEE 754 浮点格式表示的数可以精确表示为 m×2n m \times 2^n ,其中 m m 是尾数,n n 是指数。我们需要检查每个选项是否可以表示为这种形式:

  • A. 1.2:1.2=65 1.2 = \frac{6}{5} ,分母是 5,不是 2 的幂次方,因此无法用 IEEE 754 浮点格式精确表示。
  • B. 1.25:1.25=54=1.012×20 1.25 = \frac{5}{4} = 1.01_2 \times 2^0 ,可以精确表示。
  • C. 2.0:2.0=10.02×20 2.0 = 10.0_2 \times 2^0 ,可以精确表示。
  • D. 2.5:2.5=52=10.12×20 2.5 = \frac{5}{2} = 10.1_2 \times 2^0 ,可以精确表示。

因此,选项 A 无法用 IEEE 754 浮点格式精确表示。

正确答案:A

进入练习

第 15 题

计算机组成原理
2 分

某计算机的存储器总线中有 24 位地址线和 32 位数据线,按字编址,字长为 32 位。如果 000000H~3F FFFFH 为 RAM 区,那么需要 512K×8 位的 RAM 芯片数为( )。

A. 8

B. 16

C. 32

D. 64

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

参考答案:C

题目详解:
首先,我们需要明确几个关键信息:

  1. 地址线位数:24 位地址线,意味着地址空间为 224 2^{24} 个地址单元。
  2. 数据线位数:32 位数据线,按字编址,字长为 32 位(即 4 字节),因此每个地址单元对应 4 字节。
  3. RAM 地址范围:000000H~3F FFFFH,计算该范围的大小:
    • 起始地址:000000H
    • 结束地址:3F FFFFH
    • 地址范围大小 = 3FFFFFH−000000H+1=400000H 3F FFFFH - 000000H + 1 = 400000H 个地址单元。
    • 将十六进制转换为十进制:400000H=4×165=4×1048576=4194304 400000H = 4 \times 16^5 = 4 \times 1048576 = 4194304 个地址单元。
    • 由于每个地址单元对应 4 字节,因此 RAM 总容量为 4194304×4=16777216 4194304 \times 4 = 16777216 字节 = 16 MB。
  4. RAM 芯片规格:512K×8 位,即每片 RAM 芯片的容量为 512K×1 512K \times 1 字节 = 512×1024=524288 512 \times 1024 = 524288 字节 = 512 KB。
  5. 计算所需芯片数:
    • 总 RAM 容量为 16 MB,即 16×1024×1024=16777216 16 \times 1024 \times 1024 = 16777216 字节。
    • 每片 RAM 芯片容量为 512 KB,即 512×1024=524288 512 \times 1024 = 524288 字节。
    • 所需芯片数 = 16777216524288=32 \frac{16777216}{524288} = 32 片。
    • 注意:由于数据线是 32 位,而每片 RAM 芯片是 8 位,因此需要 328=4 \frac{32}{8} = 4 片 RAM 芯片并联组成 32 位数据宽度。因此,实际总芯片数为 32×4=128 32 \times 4 = 128 片,但题目问的是“512K×8 位的 RAM 芯片数”,即按 8 位计算,因此直接为 32 片。

正确答案:C

进入练习

第 16 题

计算机组成原理
2 分

若计算机主存地址为 32 位,按字节编址,Cache 数据区大小为 32KB,主存块大小为 32B,采用直接映射方式和回写(Write Back)策略,则 Cache 行的位数至少是( )。

A. 275

B. 274

C. 258

D. 257

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

参考答案:A

题目详解:
首先,我们需要计算Cache的总行数、标记位数、有效位、脏位以及数据区位数,然后求和得到Cache行的总位数。

  1. 计算Cache的总行数:

    • Cache数据区大小为 32KB=32×1024B 32 \text{KB} = 32 \times 1024 \text{B} 。
    • 主存块大小为 32B 32 \text{B} 。
    • Cache总行数为:
      32×102432=1024行 \frac{32 \times 1024}{32} = 1024 \text{行}
  2. 计算标记位数(Tag):

    • 主存地址为 32 32 位,按字节编址。
    • 主存块大小为 32B 32 \text{B} ,所以块内偏移地址位数为 log⁡232=5 \log_2{32} = 5 位。
    • Cache总行数为 1024 1024 行,所以行索引位数为 log⁡21024=10 \log_2{1024} = 10 位。
    • 标记位数为:
      32−10−5=17位 32 - 10 - 5 = 17 \text{位}
  3. 计算有效位和脏位:

    • 直接映射方式需要 1 1 位有效位(Valid)。
    • 回写策略需要 1 1 位脏位(Dirty)。
  4. 计算数据区位数:

    • 每个Cache行存储一个主存块,大小为 32B=32×8=256位 32 \text{B} = 32 \times 8 = 256 \text{位} 。
  5. Cache行的总位数:

    • 标记位数:17 17 位。
    • 有效位:1 1 位。
    • 脏位:1 1 位。
    • 数据区位数:256 256 位。
    • 总位数为:
      17+1+1+256=275位 17 + 1 + 1 + 256 = 275 \text{位}

正确答案:A

进入练习

第 17 题

计算机组成原理
2 分

下列寄存器中,汇编语言程序员可见的( )。

I. 指令寄存器

II. 微指令寄存器

III. 基址寄存器

IV. 标志/状态寄存器

A. 仅 I、II

B. 仅 I、IV

C. 仅 II、IV

D. 仅 III、IV

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

参考答案:D

题目详解:
在计算机体系结构中,汇编语言程序员可见的寄存器是指那些可以通过汇编指令直接访问或操作的寄存器。我们逐一分析各选项:

  1. 指令寄存器(I. 指令寄存器):存储当前正在执行的指令的地址,由CPU内部控制,程序员无法直接访问或修改。因此,它是不可见的。

  2. 微指令寄存器(II. 微指令寄存器):用于微程序控制的CPU中,存储微指令。微指令是硬件级别的控制信号,对程序员透明,因此它是不可见的。

  3. 基址寄存器(III. 基址寄存器):用于存储基地址,在地址计算中起重要作用。汇编程序员可以通过指令直接访问或修改基址寄存器,因此它是可见的。

  4. 标志/状态寄存器(IV. 标志/状态寄存器):存储CPU的状态标志(如零标志、进位标志等)。汇编程序员可以通过条件跳转等指令测试或修改这些标志,因此它是可见的。

综上所述,汇编语言程序员可见的寄存器是 基址寄存器 和 标志/状态寄存器,即选项 D(仅 III、IV)正确。

正确答案:D

进入练习

第 18 题

计算机组成原理
2 分

下列关于数据通路的叙述中,错误的是( )。

A. 数据通路包含 ALU 等组合逻辑(操作)元件

B. 数据通路包含寄存器等时序逻辑(状态)元件

C. 数据通路不包含用于异常事件检测及响应的电路

D. 数据通路中的数据流动路径由控制信号进行控制

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

参考答案:C

题目详解:
数据通路是计算机中用于执行指令并传输数据的硬件组件集合,其组成和功能如下:

  1. 组合逻辑元件:数据通路包含算术逻辑单元(ALU ALU )等组合逻辑元件,用于执行算术和逻辑运算(选项 A A 正确)。

  2. 时序逻辑元件:数据通路还包含寄存器等时序逻辑元件,用于暂存数据和状态信息(选项 B B 正确)。

  3. 异常事件检测与响应:数据通路中通常包含用于检测异常事件(如溢出、除零等)的电路,并在异常发生时进行响应(选项 C C 错误,是本题答案)。

  4. 控制信号:数据通路中的数据流动路径由控制单元生成的控制信号进行控制(选项 D D 正确)。

因此,错误的叙述是选项 C C 。

正确答案:C

进入练习

第 19 题

计算机组成原理
2 分

下列关于总线的叙述中,错误的是( )。

A. 总线是在两个或多个部件之间进行数据交换的传输介质

B. 同步总线由时钟信号定时,时钟频率不一定等于工作频率

C. 异步总线由握手信号定时,一次握手过程完成一位数据交换

D. 突发(Burst)传送总线事务可以在总线上连续传送多个数据

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

参考答案:C

题目详解:
总线是计算机系统中用于在不同部件之间传输数据的公共通道。以下是各选项的详细分析:

A. 总线是在两个或多个部件之间进行数据交换的传输介质

  • 这是总线的定义,正确描述了总线的基本功能。

B. 同步总线由时钟信号定时,时钟频率不一定等于工作频率

  • 同步总线确实由时钟信号控制时序,且时钟频率可以高于或低于实际工作频率(例如通过分频或倍频),因此该叙述正确。

C. 异步总线由握手信号定时,一次握手过程完成一位数据交换

  • 异步总线通过握手信号(如 Req \text{Req} 和 Ack \text{Ack} )协调通信,但一次握手通常完成一个数据单元(如一个字节或字)的传输,而非仅一位。因此该叙述错误。

D. 突发(Burst)传送总线事务可以在总线上连续传送多个数据

  • 突发传输是一种高效的总线事务,允许在单个地址周期后连续传输多个数据,叙述正确。

正确答案:C

进入练习

第 20 题

计算机组成原理
2 分

下列选项中,不属于 I/O 接口的是( )。

A. 磁盘驱动器

B. 打印机适配器

C. 网络控制器

D. 可编程中断控制器

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

参考答案:A

题目详解:
I/O 接口(输入/输出接口)是计算机系统中用于连接 CPU 和外部设备的桥梁,负责数据交换和控制信号的传递。题目要求找出不属于 I/O 接口的选项,具体分析如下:

  • A. 磁盘驱动器:磁盘驱动器是存储设备,属于外部设备而非接口。它需要通过 I/O 接口(如 SATA 或 IDE 控制器)与计算机连接,因此不属于 I/O 接口本身。

  • B. 打印机适配器:打印机适配器是一种典型的 I/O 接口,用于连接计算机和打印机,负责数据传输和控制。

  • C. 网络控制器:网络控制器(如网卡)也是一种 I/O 接口,用于实现计算机与网络之间的通信。

  • D. 可编程中断控制器:可编程中断控制器(如 8259A)是管理中断请求的硬件,属于 I/O 接口的一部分,负责协调外部设备的中断信号。

综上所述,磁盘驱动器是外部设备,而非 I/O 接口。

正确答案:A

进入练习

第 21 题

计算机组成原理
2 分

异常事件在当前指令执行过程中进行检测,中断请求则在当前指令执行后进行检测。下列事件中,相应处理程序执行后,必须回到当前指令重新执行的是( )。

A. 系统调用

B. 页缺失

C. DMA 传送结束

D. 打印机缺纸

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

参考答案:B

题目详解:
在计算机系统中,异常和中断的处理机制有所不同:

  1. 异常(如页缺失):

    • 异常是在当前指令执行过程中被检测到的(例如访问无效内存地址)。
    • 处理程序执行完成后,通常需要重新执行当前指令(例如页缺失处理后,需重新访问内存)。
    • 页缺失(选项 B)属于此类情况,因为处理程序会加载缺失的页到内存后,必须回到触发页缺失的指令重新执行。
  2. 中断(如 DMA 传送结束、打印机缺纸):

    • 中断是在当前指令执行完成后被检测到的(例如 I/O 设备信号)。
    • 处理程序执行后,继续执行下一条指令,无需回到当前指令。
    • 选项 C(DMA 传送结束)和 D(打印机缺纸)属于此类。
  3. 系统调用(选项 A):

    • 系统调用是程序主动触发的异常,但处理完成后继续执行下一条指令,无需回到当前指令。

因此,必须回到当前指令重新执行的事件只有页缺失(B)。

正确答案:B

进入练习

第 22 题

计算机组成原理
2 分

下列是关于多重中断系统中 CPU 响应中断的叙述,其中错误的是( )。

A. 仅在用户态(执行用户程序)下,CPU 才能检测和响应中断

B. CPU 只有在检测到中断请求信号后,才会进入中断响应周期

C. 进入中断响应周期时,CPU 一定处于中断允许(开中断)状态

D. 若 CPU 检测到中断请求信号,则一定存在未被屏蔽的中断源请求信号

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

参考答案:A

题目详解:
在多重中断系统中,CPU 响应中断的过程和相关机制如下:

  1. 用户态与核心态:CPU 可以在用户态(执行用户程序)和核心态(执行操作系统内核程序)下检测和响应中断。因此,选项 A 中“仅在用户态下才能检测和响应中断”是错误的叙述。

  2. 中断请求信号检测:CPU 响应中断的前提是检测到中断请求信号(IRQ)。因此,选项 B 的叙述是正确的。

  3. 中断允许状态:进入中断响应周期时,CPU 必须处于开中断(中断允许)状态,否则无法响应新的中断。因此,选项 C 的叙述是正确的。

  4. 未被屏蔽的中断源:CPU 检测到中断请求信号时,说明至少有一个未被屏蔽的中断源发出了请求信号。因此,选项 D 的叙述是正确的。

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

正确答案:A

进入练习

第 23 题

操作系统
2 分

下列指令中,只能在内核态执行的是( )。

A. trap 指令

B. I/O 指令

C. 数据传送指令

D. 设置断点指令

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

参考答案:B

题目详解:
在计算机系统中,指令的执行权限分为 用户态 和 内核态。某些指令由于涉及系统关键资源或硬件直接操作,只能在内核态执行。分析各选项:

  • A. trap 指令: trap 指令用于从用户态陷入内核态(例如系统调用),它可以在用户态触发,但实际执行是在内核态完成的。因此 trap 指令本身并非只能在内核态执行。

  • B. I/O 指令: I/O 指令直接操作硬件设备(如磁盘、键盘等),涉及系统安全和资源管理,因此 只能在内核态执行。这是正确答案。

  • C. 数据传送指令: 数据传送指令(如 mov)用于寄存器或内存之间的数据交换,不涉及特权操作,可以在用户态执行。

  • D. 设置断点指令: 设置断点指令(如 x86 的 int 33 )通常用于调试,虽然会触发异常进入内核态,但指令本身可以在用户态调用。

正确答案:B

进入练习

第 24 题

操作系统
2 分

下列操作中,操作系统在创建新进程时,必须完成的是( )。

I. 申请空白的进程控制块 II. 初始化进程控制块 III. 设置进程状态为执行态

A. 仅 I

B. 仅 I、II

C. 仅 I、III

D. 仅 II、III

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

参考答案:B

题目详解:
在操作系统中,创建新进程是一个关键的操作,必须完成以下步骤:

  1. 申请空白的进程控制块(I):进程控制块(PCB)是操作系统管理进程的核心数据结构,用于存储进程的所有信息。创建新进程时,必须首先为它分配一个空白的PCB。

  2. 初始化进程控制块(II):分配PCB后,需要对其进行初始化,包括设置进程ID、分配资源、初始化程序计数器等。这一步是必要的,以确保进程能够正确运行。

  3. 设置进程状态为执行态(III):这一步并不是必须的。新创建的进程通常会被设置为就绪态(Ready),而不是直接设置为执行态(Running)。只有当进程被调度器选中时,才会从就绪态转为执行态。

因此,必须完成的操作是 I 和 II,而 III 不是必须的。

正确答案:B

进入练习

第 25 题

操作系统
2 分

下列内核的数据结构或程序中,分时系统实现时间片轮转调度需要使用的是( )。

I. 进程控制块 II. 时钟中断处理程序 III. 进程就绪队列 IV. 进程阻塞队列

A. 仅 II、III

B. 仅 I、IV

C. 仅 I、II、III

D. 仅 I、II、IV

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

参考答案:C

题目详解:
分时系统实现时间片轮转调度需要依赖以下关键数据结构或程序:

  1. 进程控制块(I):用于存储进程的状态、上下文等信息,是调度器管理进程的基础。时间片轮转时需要保存和恢复进程的上下文。

  2. 时钟中断处理程序(II):负责在时间片用完时触发中断,强制当前进程让出CPU,是实现时间片轮转的核心机制。时间片通常由 Δt \Delta t 表示。

  3. 进程就绪队列(III):用于存放所有就绪状态的进程,调度器按照轮转规则从队列中选择下一个运行的进程。队列通常遵循FIFO原则。

  4. 进程阻塞队列(IV):与时间片轮转无关,阻塞队列用于管理等待I/O或其他事件的进程,不参与调度。

因此,时间片轮转调度需要 I、II、III 的支持。

正确答案:C

进入练习

第 26 题

操作系统
2 分

某系统中磁盘的磁道数为 200(0~199),磁头当前在 184 号磁道上。用户进程提出的磁盘访问请求对应的磁道号依次为 184, 187, 176, 182, 199。若采用最短寻道时间优先调度算法(SSTF)完成磁盘访问,则磁头移动的距离(磁道数)是( )。

A. 37

B. 38

C. 41

D. 42

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

参考答案:C

题目详解:
初始磁头位置为 184 184 ,请求队列为 [184,187,176,182,199] [184, 187, 176, 182, 199] 。

采用最短寻道时间优先(SSTF)算法,步骤如下:

  1. 当前磁头位置为 184 184 ,最近的请求是 184 184 (距离为 0 0 ),直接处理,无需移动。请求队列更新为 [187,176,182,199] [187, 176, 182, 199] 。

  2. 当前磁头位置为 184 184 ,最近的请求是 187 187 (距离为 ∣187−184∣=3 |187 - 184| = 3 )。移动磁头到 187 187 ,移动距离为 3 3 。请求队列更新为 [176,182,199] [176, 182, 199] 。

  3. 当前磁头位置为 187 187 ,最近的请求是 182 182 (距离为 ∣182−187∣=5 |182 - 187| = 5 )。移动磁头到 182 182 ,移动距离为 5 5 。请求队列更新为 [176,199] [176, 199] 。

  4. 当前磁头位置为 182 182 ,最近的请求是 176 176 (距离为 ∣176−182∣=6 |176 - 182| = 6 )。移动磁头到 176 176 ,移动距离为 6 6 。请求队列更新为 [199] [199] 。

  5. 当前磁头位置为 176 176 ,唯一剩余请求是 199 199 (距离为 ∣199−176∣=23 |199 - 176| = 23 )。移动磁头到 199 199 ,移动距离为 23 23 。

总移动距离为 0+3+5+6+23=37 0 + 3 + 5 + 6 + 23 = 37 。但题目中给出的选项没有 37 37 ,可能是题目描述有误或选项有误。根据题目给出的正确答案是 C.41 C. 41 ,可能是题目描述中的请求队列或初始位置有差异。

正确答案:C

进入练习

第 27 题

操作系统
2 分

下列事件中,可能引起进程调度程序执行的是( )。

I. 中断处理结束

II. 进程阻塞

III. 进程执行结束

IV. 进程的时间片用完

A. 仅 I、III

B. 仅 II、IV

C. 仅 III、IV

D. I、II、III 和 IV

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

参考答案:D

题目详解:
进程调度程序的执行通常由以下事件触发:

  1. 中断处理结束(I):当中断处理完成后,操作系统可能需要重新调度进程,因此可能引起进程调度程序执行。例如,I/O 中断完成后,等待该 I/O 的进程可能从阻塞状态变为就绪状态,从而触发调度。

  2. 进程阻塞(II):当一个进程因等待某种资源(如 I/O 操作)而主动阻塞时,CPU 会空闲,此时调度程序需要选择一个就绪进程来运行。

  3. 进程执行结束(III):当一个进程完成其任务并终止时,CPU 会空闲,调度程序需要选择另一个就绪进程来运行。

  4. 进程的时间片用完(IV):在分时系统中,如果一个进程用完其分配的时间片,调度程序会强制切换到其他就绪进程。

因此,以上所有事件(I、II、III 和 IV)都可能引起进程调度程序的执行。

正确答案:D

进入练习

第 28 题

操作系统
2 分

某请求分页存储系统的页大小为 4KB,按字节编址。系统给进程 P 分配 2 个固定的页框,并采用改进型 Clock 置换算法,进程 P 页表的部分内容如下表所示。若 P 访问虚拟地址为 02A01H 的存储单元,则经地址变换后得到的物理地址是( )。

2021-28

A. 00A01H

B. 20A01H

C. 60A01H

D. 80A01H

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

参考答案:C

题目详解:
页面大小为 4KB,低 12 位是页内偏移。虚拟地址为 02A01H,页号为 02H,02H 页对应的页表项中存在位为 0,进程 P 分配的页框固定为 2,且内存中已有两个页面存在。根据 CLOCK 算法,选择将 3 号页换出,将 2 号页放入 60H 页框,经过地址变换后得到的物理地址是 60A01H。

进入练习

第 29 题

操作系统
2 分

在采用二级页表的分页系统中,CPU 页表基址寄存器中的内容是( )。

A. 当前进程的一级页表的起始虚拟地址

B. 当前进程的一级页表的起始物理地址

C. 当前进程的二级页表的起始虚拟地址

D. 当前进程的二级页表的起始物理地址

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

参考答案:B

题目详解:
在采用二级页表的分页系统中,CPU 的页表基址寄存器(通常称为页表基址寄存器或页目录基址寄存器)存储的是当前进程的一级页表(也称为页目录)的起始物理地址。这是因为:

  1. 一级页表(页目录)的起始地址必须是物理地址,因为 CPU 的 MMU(内存管理单元)在地址转换过程中需要直接访问该地址,而 MMU 在访问内存时使用的是物理地址,而不是虚拟地址。

  2. 二级页表的结构中,一级页表用于定位二级页表,而二级页表用于定位实际的物理页。因此,CPU 需要知道一级页表在物理内存中的确切位置。

  3. 虚拟地址是由 CPU 生成的,而页表基址寄存器的作用是帮助 MMU 将虚拟地址转换为物理地址,因此它必须存储物理地址,而不是虚拟地址。

综上所述,页表基址寄存器中的内容是当前进程的一级页表的起始物理地址。

正确答案:B

进入练习

第 30 题

操作系统
2 分

若目录 dir 下有文件 file1,则为删除该文件内核不必完成的工作是( )。

A. 删除 file1 的快捷方式

B. 释放 file1 的文件控制块

D. 删除目录 dir 中与 file1 对应的目录项

C. 释放 file1 占用的磁盘空间

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

参考答案:A

题目详解:
在删除文件时,内核需要完成以下工作:

  1. 释放文件占用的磁盘空间:内核需要将 file1 file1 占用的磁盘块标记为可用,以便其他文件可以使用这些空间。对应选项 C C 。

  2. 释放文件控制块(FCB):文件控制块是内核用于管理文件的数据结构,删除文件时需要释放其 FCB。对应选项 B B 。

  3. 删除目录项:内核需要从目录 dir dir 中移除与 file1 file1 对应的目录项,以反映文件的删除。对应选项 D D 。

而 删除快捷方式(选项 A A )并不是内核必须完成的工作。快捷方式是文件的引用,可能存在于其他目录中,删除文件本身并不会自动删除其所有快捷方式。快捷方式的管理通常由文件系统或用户程序处理。

正确答案:A

进入练习

第 31 题

操作系统
2 分

若系统中有 n(n≥2)个进程,每个进程均需要使用某类临界资源 2 个,则系统不会发生死锁所需的该类资源总数至少是( )。

A. 2

B. n

C. n + 1

D. 2n

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

参考答案:C

题目详解:
要确保系统不会发生死锁,需要考虑最坏的情况,即所有进程都持有部分资源并等待其他资源。假设系统中有 n n 个进程,每个进程需要 2 2 个临界资源。

  1. 最坏情况分析:每个进程已经持有 1 1 个资源,并等待获取第二个资源。此时,如果系统剩余的资源数为 1 1 ,则可以确保至少一个进程能够获得全部所需的资源,从而避免死锁。

  2. 资源总数计算:

    • 每个进程持有 1 1 个资源,共占用 n n 个资源。
    • 额外需要 1 1 个资源确保至少一个进程可以完成。
    • 因此,资源总数至少为 n+1 n + 1 。
  3. 公式表示:
    资源总数≥n+1 \text{资源总数} \geq n + 1

综上所述,系统不会发生死锁所需的资源总数至少是 n+1 n + 1 。

正确答案:C

进入练习

第 32 题

操作系统
2 分

下列选项中,通过系统调用完成的操作是( )。

A. 页置换

B. 进程调度

C. 创建新进程

D. 生成随机整数

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

参考答案:C

题目详解:
系统调用是操作系统提供给用户程序的接口,允许用户程序请求操作系统内核执行某些特权操作。在选项中:

A. 页置换:这是由操作系统的内存管理模块自动完成的,属于内核内部机制,不需要通过系统调用触发。

B. 进程调度:这是操作系统内核的调度器负责的任务,同样属于内核内部机制,不直接暴露给用户程序。

C. 创建新进程:用户程序需要通过系统调用(如Linux的fork()或exec())请求内核创建新进程,这是典型的系统调用场景。

D. 生成随机整数:通常由用户空间的库函数(如C语言的rand())实现,不需要系统调用支持。

因此,只有选项C是通过系统调用完成的操作。

正确答案:C

进入练习

第 33 题

计算机网络
2 分

在 TCP/IP 参考模型中,由传输层相邻的下一层实现的主要功能( )。

A. 对话管理

B. 路由选择

C. 端到端报文段传输

D. 结点到结点流量控制

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

参考答案:B

题目详解:
在 TCP/IP 参考模型中,传输层的相邻下一层是网络层(也称为网际层)。网络层的主要功能是实现数据包的路由选择和转发,确保数据能够从源主机传输到目的主机。具体分析如下:

  • A. 对话管理:这是会话层的功能,属于 OSI 模型中的高层功能,TCP/IP 模型中没有明确的会话层。

  • B. 路由选择:这是网络层的核心功能,通过路由算法和协议(如 RIP、OSPF)确定数据包的最佳路径。

  • C. 端到端报文段传输:这是传输层的功能,例如 TCP 或 UDP 提供的服务。

  • D. 结点到结点流量控制:这是数据链路层的功能,例如通过滑动窗口协议实现。

因此,传输层相邻的下一层(网络层)实现的主要功能是路由选择。

正确答案:B

进入练习

第 34 题

计算机网络
2 分

若下图为一段差分曼彻斯特编码信号波形,则其编码的二进制位串是( )。

2021-34

A. 1011 1001

B. 1101 0001

C. 0010 1110

D. 1011 0110

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

参考答案:A

题目详解:
差分曼彻斯特编码常用于局域网传输,其规则是:若码元为 1,则前半个码元的电平与上一码元的后半个码元的电平相同;若码元为 0,则情形相反。差分曼彻斯特编码的特点在于,在每个时钟周期的起始处,跳变则说明该比特是 0,不跳变则说明该比特是 1。根据题 34 图,第 1 个码元的信号波形因缺乏上一码元的信号波形,无法判断是 0 还是 1.但根据后面的信号波形,可以求出第 2~8 个码元为 011 1001,因此选 A。

进入练习

第 35 题

计算机网络
2 分

现将一个 IP 网络划分为 3 个子网,若其中一个子网是 192.168.9.128/26,则下列网络中,不可能是另外两个子网之一的是( )。

A. 192.168.9.0/25

B. 192.168.9.0/26

C. 192.168.9.192/26 D. 192.168.9.192/27

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

参考答案:B

题目详解:
首先分析给定的子网 192.168.9.128/26 192.168.9.128/26 :

  • 子网掩码 /26 /26 表示前 26 26 位是网络位,后 6 6 位是主机位。
  • 子网掩码为 255.255.255.192 255.255.255.192 。
  • 该子网的网络地址是 192.168.9.128 192.168.9.128 ,广播地址是 192.168.9.191 192.168.9.191 ,可用地址范围是 192.168.9.129 192.168.9.129 到 192.168.9.190 192.168.9.190 。

接下来分析各选项是否可能与 192.168.9.128/26 192.168.9.128/26 共存于同一 /24 /24 网络中:

选项 A:192.168.9.0/25 192.168.9.0/25

  • 子网掩码为 255.255.255.128 255.255.255.128 。
  • 网络地址是 192.168.9.0 192.168.9.0 ,广播地址是 192.168.9.127 192.168.9.127 。
  • 与 192.168.9.128/26 192.168.9.128/26 不重叠,是合法的子网划分。

选项 B:192.168.9.0/26 192.168.9.0/26

  • 子网掩码为 255.255.255.192 255.255.255.192 。
  • 网络地址是 192.168.9.0 192.168.9.0 ,广播地址是 192.168.9.63 192.168.9.63 。
  • 该子网与 192.168.9.128/26 192.168.9.128/26 可以共存,但题目要求划分为 3 3 个子网。如果选择 192.168.9.0/26 192.168.9.0/26 ,剩下的地址空间 192.168.9.64/26 192.168.9.64/26 和 192.168.9.192/26 192.168.9.192/26 也需要被使用,但题目只允许 3 3 个子网,因此 192.168.9.0/26 192.168.9.0/26 不可能是另外两个子网之一。

选项 C:192.168.9.192/26 192.168.9.192/26

  • 子网掩码为 255.255.255.192 255.255.255.192 。
  • 网络地址是 192.168.9.192 192.168.9.192 ,广播地址是 192.168.9.255 192.168.9.255 。
  • 与 192.168.9.128/26 192.168.9.128/26 不重叠,是合法的子网划分。

选项 D:192.168.9.192/27 192.168.9.192/27

  • 子网掩码为 255.255.255.224 255.255.255.224 。
  • 网络地址是 192.168.9.192 192.168.9.192 ,广播地址是 192.168.9.223 192.168.9.223 。
  • 与 192.168.9.128/26 192.168.9.128/26 不重叠,是合法的子网划分。

综上所述,192.168.9.0/26 192.168.9.0/26 不可能是另外两个子网之一。

正确答案:B

进入练习

第 36 题

计算机网络
2 分

若路由器向 MTU = 800B 的链路转发一个总长度为 1580B 的 IP 数据报(首部长度为 20B)时,进行了分片,且每个分片尽可能大,则第 2 个分片的总长度字段和 MF 标志位的值分别是( )。

A. 796, 0

B. 796, 1

C. 800, 0

D. 800, 1

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

参考答案:B

题目详解:
IP 数据报的总长度为 1580B 1580B ,首部长度为 20B 20B ,因此数据部分长度为 1580B−20B=1560B 1580B - 20B = 1560B 。链路的 MTU 为 800B 800B ,因此每个分片的最大数据长度为 800B−20B=780B 800B - 20B = 780B 。由于每个分片尽可能大,且数据部分需要按 8B 8B 的倍数进行分片,因此每个分片的数据长度应为 776B 776B (因为 776 776 是小于等于 780 780 的最大的 8 8 的倍数)。

  1. 第一个分片:

    • 数据长度:776B 776B
    • 总长度:776B+20B=796B 776B + 20B = 796B
    • MF 标志位:1 1 (表示还有后续分片)
  2. 第二个分片:

    • 剩余数据长度:1560B−776B=784B 1560B - 776B = 784B
    • 数据长度:776B 776B (仍然是 8 8 的倍数且尽可能大)
    • 总长度:776B+20B=796B 776B + 20B = 796B
    • MF 标志位:1 1 (因为还有剩余数据)
  3. 第三个分片:

    • 剩余数据长度:784B−776B=8B 784B - 776B = 8B
    • 数据长度:8B 8B
    • 总长度:8B+20B=28B 8B + 20B = 28B
    • MF 标志位:0 0 (表示这是最后一个分片)

题目问的是第二个分片的总长度字段和 MF 标志位的值,因此:

  • 总长度字段:796 796
  • MF 标志位:1 1

正确答案:B

进入练习

第 37 题

计算机网络
2 分

某网络中的所有路由器均采用距离向量路由算法计算路由。若路由器 E 与邻居路由器 A, B, C 和D 之间的直接链路距离分别是 8, 10, 12 和 6, 且 E 收到邻居路由器的距离向量如下表所示,则路由器 E 更新后的到达目的网络 Net1~Net4 的距离分别是( )。

2021-37

A. 9, 10, 12, 6

B. 9, 10, 28, 20

C. 9, 20, 12, 20

D. 9, 20, 28, 20

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

参考答案:D

题目详解:
根据距离向量算法,E 收到相邻路由器的距离向量后,更新它的路由表:

① 当原路由表中没有目的网络时,把该项目添加到路由表中。

② 发来的路由信息中有一条到达某个目的网络的路由,该路由与当前使用的路由相比,有较短的距离,就用经过发送路由信息的结点的新路由替换。

分析题意可知,E 与邻居路由器 A、B、C 和 D 之间的直接链路距离分别是 8.10.12 和 6.到达 Net1~Net4 没有直接链路,需要通过邻居路由器。从上述算法可知,E 到达目的网络一定是经过 A,B,C 和 D 中距离最小的。根据题中所给的距离信息,计算 E 经邻居路由器到达目的网络 Net1~Net4 的距离,如下表所示,选择到达每个目的网络距离的最短值。

目的网络 经过 A 需要的距离 经过 B 需要的距离 经过 C 需要的距离 经过 D 需要的距离
Net1 9 33 32 28
Net2 20 45 42 34
Net3 32 28 28 42
Net4 44 40 20 30
进入练习

第 38 题

计算机网络
2 分

若客户首先向服务器发送 FIN 段请求断开 TCP 连接,则当客户收到服务器发送的 FIN 段并向服务器发送了 ACK 段后,客户的 TCP 状态转换为( )。

A. CLOSE_WAIT B. TIME_WAIT

C. FIN_WAIT_1

D. FIN_WAIT_2

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

参考答案:B

题目详解:
在TCP连接断开过程中,客户和服务器之间会经历一系列状态转换。根据题目描述,客户首先发送 FIN 段请求断开连接,此时客户的状态从 ESTABLISHED ESTABLISHED 转换为 FIN_WAIT_1 FIN\_WAIT\_1 。当服务器收到 FIN 段后,会发送 ACK 段确认,此时客户的状态从 FIN_WAIT_1 FIN\_WAIT\_1 转换为 FIN_WAIT_2 FIN\_WAIT\_2 。接着,服务器发送自己的 FIN 段请求断开连接,客户收到 FIN 段后发送 ACK 段确认,此时客户的状态从 FIN_WAIT_2 FIN\_WAIT\_2 转换为 TIME_WAIT TIME\_WAIT 。因此,题目描述的场景中,客户的最终状态是 TIME_WAIT TIME\_WAIT 。

正确答案:B

进入练习

第 39 题

计算机网络
2 分

若大小为 12B 的应用层数据分别通过 1 个 UDP 数据报和 1 个 TCP 段传输,则该 UDP 数据报和TCP 段实现的有效载荷(应用层数据)最大传输效率分别是( )。

A. 37.5%, 16.7%

B. 37.5%, 37.5%

C. 60.0%, 16.7%

D. 60.0%, 37.5%

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

参考答案:D

题目详解:
传输效率的计算公式为:传输效率=应用层数据大小总传输数据大小×100% \text{传输效率} = \frac{\text{应用层数据大小}}{\text{总传输数据大小}} \times 100\%

  1. UDP 数据报的传输效率:

    • UDP 头部固定为 8B 8 \text{B} 。
    • 应用层数据大小为 12B 12 \text{B} 。
    • 总传输数据大小为 12B+8B=20B 12 \text{B} + 8 \text{B} = 20 \text{B} 。
    • 传输效率为 1220×100%=60% \frac{12}{20} \times 100\% = 60\% 。
  2. TCP 段的传输效率:

    • TCP 头部通常为 20B 20 \text{B} (无选项时)。
    • 应用层数据大小为 12B 12 \text{B} 。
    • 总传输数据大小为 12B+20B=32B 12 \text{B} + 20 \text{B} = 32 \text{B} 。
    • 传输效率为 1232×100%=37.5% \frac{12}{32} \times 100\% = 37.5\% 。

因此,UDP 数据报和 TCP 段的最大传输效率分别是 60.0% 60.0\% 和 37.5% 37.5\% 。

正确答案:D

进入练习

第 40 题

计算机网络
2 分

设主机甲通过 TCP 向主机乙发送数据,部分过程如下图所示。甲在 t0 时刻发送一个序号 seq =501、封装 200B 数据的段,在 t1 时刻收到乙发送的序号 seq = 601、确认序号 ack_seq = 501、接收窗口 rcvwnd = 500B 的段,则甲在未收到新的确认段之前,可以继续向乙发送的数据序号范围是( )。

2021-40

A. 501~1000

B. 601~1100

C. 701~1000

D. 801~1100

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

参考答案:C

题目详解:
本题考察 TCP 的滑动窗口机制。 依题意,甲发送完 200B 报文后,继续发送的报文段中序号字段 seq=701。由于乙告知接收窗口为 500,且甲未收到乙对 seq =501 报文段的确认,那么甲还能发送的报文段字节数为 500-200=300B,因此甲在未收到新的确认段之前,还能发送的数据序号范围是 701~1000。

进入练习

综合应用题

7 题 · 共 73 分

第 41 题

数据结构
13 分

(15 分)已知无向连通图 G 由顶点集 V 和边集 E 组成,|E| > 0 ,当 G 中度为奇数的顶点个数为不大于 2 的偶数时,G 存在包含所有边且长度为|E|的路径(称为 EL 路径)。设图 G 采用邻接矩阵存储,类型定义如下:

cpp 复制代码
typedef struct{//图的定义
int numVertices, numEdges;//图中实际顶点数和边数
char VerticesList[MAXV]; //顶点表。MAXV为已定义常量
int Edge[MAXV][MAXV];//邻接矩阵
}MGraph

请设计算法 int IsExistEL(MGraph G),判断 G 是否存在 EL 路径,若存在,则返回 1,否则返回 0。要求:

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

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

(3)说明你所设计算法的时间复杂度和空间复杂度。

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

题目详解:
1)算法的基本设计思想

本算法题属于送分题,题干已经告诉我们算法的思想。对于采用邻接矩阵存储的无向图,在邻接矩阵的每一行(列)中,非零元素的个数为本行(列)对应顶点的度。可以依次计算连通图 GG 中各顶点的度,并记录度为奇数的顶点个数,若个数为 00 或 22,则返回 11,否则返回 00。

2)算法实现

c 复制代码
int isExistEL(MGraph G) {
  // 统计度为奇数的定点个数
  int count = 0;
  for (int v = 0; v < numVertices; v++) {
    // 该顶点的度
    int degree = 0;
    for (int e = 0; e < numEdges; e++) {
      if (Edge[v][e] == 1) {
        degree++;
      }
    }
    if (degree % 2 == 1) {
      count++;
    }
  }
  if (count == 2 || count == 2) {
    return 1;
  }
  return 0;
}

3)时间和空间复杂度

算法需要遍历整个矩阵,所以时间复杂度为 O(n2)O(n^2),空间复杂度为 O(1)O(1)。

进入练习

第 42 题

数据结构
10 分

(8 分)已知某排序算法如下:

cpp 复制代码
void cmpCountSort(int a[], int b[], int n)
{ 
    int i,j,*count;
    count=(int *)malloc(sizeof(int)*n);
    for(i=0;i<n;i++) count[i]=0;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        	if(a[i]<a[j]) count[j]++;
        	else count[i]++;
    for(i=0;i<n;i++) b[count[i]]=a[i];
    free(count);
}

请回答下列问题

(1)若有 int a[] = {25,-10,25,10,11,19},b[6];,则调用 cmpCountSort(a,b,6)后数组 b中的内容是什么?

(2)若 a中含有 n 个元素,则算法执行过程中,元素之间的比较次数是多少?

(3)该算法是稳定的吗?若是,则阐述理由;否则,修改为稳定排序算法。

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

题目详解:
cmpCountSort 算法基于计数排序的思想,对序列进行排序。cmpCountSort 算法遍历数组中的元素,count 数组记录比对应待排序数组元素下标大的元素个数,例如,count[1]=3count[1]=3 的意思是数组 aa 中有 33 个元素比 a[1]a[1] 大,即 a[1]a[1] 是第 44 大元素,a[1]a[1] 的正确位置应是 b[3]b[3]。

1)排序结果为 b[6]={-10,10,11,19,25,25}。

2)由代码 for(i=0;i<n-1;i++) 和 for(j=i+1;j<n;j++) 可知,在循环过程中,每个元素都与它后面的所有元素比较一次(即所有元素都两两比较一次),比较次数之和为 (n−1)+(n−2)+⋯+1(n-1)+(n-2)+\cdots+1,故总的比较次数是 n(n−1)2\frac{n(n-1)}{2}。

3)不是。需要将程序中的 if 语句修改如下:

复制代码
if(a[i]<=a[j]) count[j]++;
else count[i]++;

如果不加等号,两个相等的元素比较时,前面元素的 count 值会加 1,导致原序列中靠前的元素在排序后的序列中处于靠后的位置。

进入练习

第 43 题

计算机组成原理
14 分

(13 分)假定计算机 M 字长为 16 位,按字节编址,连接 CPU 和主存的系统总线中地址线为 20位、数据线为 8 位,采用 16 位定长指令字,指令格式及其说明如下:

2021-43

其中,op1~op3 为操作码,rs, rt 和 rd 为通用寄存器编号,R[r]表示寄存器 r 的内容,imm 为立即数,target 为转移目标的形式地址。请回答下列问题。

(1)ALU 的宽度是多少位?可寻址主存空间大小为多少字节?指令寄存器、主存地址寄存器(MAR)和主存数据寄存器(MDR)分别应有多少位?

(2)R 型格式最多可定义多少种操作?I 型和 J 型格式总共最多可定义多少种操作?通用寄存器最多有多少个?

(3)假定 op1 为 0010 和 0011 时,分别表示带符号整数减法和带符号整数乘法指令,则指令01B2H 的功能是什么(参考上述指令功能说明的格式进行描述)?若 1, 2, 3 号通用寄存器当前内容分别为 B052H, 0008H, 0020H ,则分别执行指令 01B2H 和 01B3H 后,3 号通用寄存器内容各是什么?各自结果是否溢出?

(4)若采用 I 型格式的访存指令中 imm(偏移量)为带符号整数,则地址计算时应对 imm 进行零扩展还是符号扩展?

(5)无条件转移指令可以采用上述哪种指令格式?

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

题目详解:
1)ALU 的宽度为 16 位,ALU 的宽度即 ALU 运算对象的宽度,通常与字长相同。地址线为 20 位,按字节编址,可寻址主存空间大小为 2202^{20} 字节(或 1MB)。指令寄存器有 16 位,和单条指令长度相同。MAR 有 20 位,和地址线位数相同。MDR 有 8 位,和数据线宽度相同。

2)R 型格式的操作码有 4 位,最多有 242^4(或 16)种操作。I 型和 J 型格式的操作码有 6 位,因为它们的操作码部分重叠,所以共享这 6 位的操作码空间,且前 6 位全 0 的编码已被 R 型格式占用,因此 I 和 J 型格式最多有 28−1=632^8-1=63 种操作。从 R 型和 I 型格式的寄存器编号部分可知,只用 2 位对寄存器编码,因此通用寄存器最多有 4 个。

3)指令 01B2H=0000000110110010B 为一条 R 型指令,操作码 0010 表示带符号整数减法指令,其功能为 R[3]←R[1]-R[2]。执行指令 01B2H 后,R[3]=B052H-0008H=B04AH,结果未溢出。指令 01B3H=0000000110110011B,操作码 0011 表示带符号整数乘法指令,执行指令 01B3H 后,R[3]=R[1]×R[2]=B052H×0008H=8290H,结果溢出。

4)在进行指令的跳转时,可能向前跳转,也可能向后跳转,偏移量是一个带符号整数,因此在地址计算时,应对 imm 进行符号扩展。

5)无条件转移指令可以采用 J 型格式,将 tagt 部分写入 PC 的低 10 位,完成跳转。

进入练习

第 44 题

计算机组成原理
11 分

(8 分)假设计算机 M 的主存地址为 24 位,按字节编址;采用分页存储管理方式,虚拟地址为

30 位,页大小为 4KB;TLB 采用 2 路组相联方式和 LRU 替换策略,共 8 组。请回答下列问题。

(1)虚拟地址中哪几位表示虚页号?哪几位表示页内地址?

(2)已知访问 TLB 时虚页号高位部分用作 TLB 标记,低位部分用作 TLB 组号,M 的虚拟地址

中哪几位是 TLB 标记?哪几位是 TLB 组号?

(3)假设 TLB 初始时为空,访问的虚页号依次为 10, 12, 16, 7, 26, 4, 12 和 20 ,在此过程中,哪

一个虚页号对应的 TLB 表项被替换?说明理由。

(4)若将 M 中的虚拟地址位数增加到 32 位,则 TLB 表项的位数增加几位?

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

题目详解:
1)按字节编址,页面大小为 4KB=212B4KB=2^{12}B,页内地址为 1212 位。虚拟地址中高 30−12=1830-12=18 位表示虚页号,虚拟地址中低 1212 位表示页内地址。

2)TLB采用 22 路组相联方式,共 8=28=2 组,用 33 位来标记组号。虚拟地址(或虚页号)中高 18−3=1518-3=15 位为 TLB 标记,虚拟地址中随后 33 位(或虚页号中低 33 位)为 TLB 组号。

3)虚页号 44 对应的 TLB 表项被替换。因为虚页号与 TLB 组号的映射关系为 TLB 组号=虚页号mod  TLB 组数=虚页号mod  8TLB\ 组号 = 虚页号 \mod TLB\ 组数 = 虚页号 \mod 8,因此,虚页号 10,12,16,7,26,4,12,2010,12,16,7,26,4,12,20 映射到的 TLB 组号依次为 2,4,0,7,2,4,4,42,4,0,7,2,4,4,4。TLB 采用 22 路组相联方式,从上述映射到的 TLB 组号序列可以看出,只有映射到 44 号组的虚页号数量大于 22,相应虚页号依次是 12,4,1212,4,12 和 2020。根据 LRU 替换策略,当访问第 2020 页时,虚页号 44 对应的 TLB 表项被替换出来。

4)虚拟地址位数增加到 3232 位时,虚页号增加了 32−30=232-30=2 位,使得每个 TLB 表项中的标记字段增加 22 位,因此,每个 TLB 表项的位数增加 22 位。

进入练习

第 45 题

操作系统
8 分

(7 分)下表给出了整型信号量 S 的 wait()和 signal()操作的功能描述,以及采用开/关中断指令实现信号量操作互斥的两种方法。请回答下列问题。

2021-45

(1)为什么在 wait()和 signal()操作中对信号量 S的访问必须互斥执行?

(2)分别说明方法 1 和方法 2 是否正确。若不正确,请说明理由。

(3)用户程序能否使用开/关中断指令实现临界区互斥?为什么?

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

题目详解:
1)信号量 SS 是能被多个进程共享的变量,多个进程都可通过 wait()wait() 和 signal()signal() 对 SS 进行读、写操作。所以,wait()wait() 和 signal()signal() 操作中对 SS 的访问必须是互斥的。

2)方法 1 错误。在 wait()wait() 中,当 S≤0S \le 0 时,关中断后,其他进程无法修改 SS 的值,while 语句陷入死循环。方法 2 正确。方法 2 在循环体中有一个开中断操作,这样就可以使其他进程修改 SS 的值,从而避免 while 语句陷入死循环。

3)用户程序不能使用开/关中断指令实现临界区互斥。因为开中断和关中断指令都是特权指令,不能在用户态下执行,只能在内核态下执行。

进入练习

第 46 题

操作系统
8 分

(8 分)某计算机用硬盘作为启动盘,硬盘第一个扇区存放主引导记录,其中包含磁盘引导程序和分区表。磁盘引导程序用于选择引导哪个分区的操作系统,分区表记录硬盘上各分区的位置等描述信息。硬盘被划分成若干个分区,每个分区的第一个扇区存放分区引导程序,用于引导该分区中的操作系统。系统采用多阶段引导方式,除了执行磁盘引导程序和分区引导程序外,还需要执行 ROM 中的引导程序。请回答下列问题。

(1)系统启动过程中操作系统的初始化程序、分区引导程序、ROM 中的引导程序、磁盘引导程序的执行顺序是什么?

(2)把硬盘制作为启动盘时,需要完成操作系统的安装、磁盘的物理格式化、逻辑格式化、对磁盘进行分区,执行这 4 个操作的正确顺序是什么?

(3)磁盘扇区的划分和文件系统根目录的建立分别是在第(2)问的哪个操作中完成的?2021 年全国硕士研究生入学统一考试计算机学科专业基础综合试题 第 10 页(共 11 页)

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

题目详解:
1)执行顺序依次是 ROM 中的引导程序、磁盘引导程序、分区引导程序、操作系统的初始化程序。启动系统时,首先运行 ROM 中的引导代码(bootstrap)。为执行某个分区的操作系统的初始化程序,需要先执行磁盘引导程序以指示引导到哪个分区,然后执行该分区的引导程序,用于引导该分区的操作系统。

2)4 个操作的执行顺序依次是磁盘的物理格式化、对磁盘进行分区、逻辑格式化、操作系统的安装。磁盘只有通过分区和逻辑格式化后才能安装系统和存储信息。物理格式化(又称低级格式化,通常出厂时就已完成)的作用是为每个磁道划分扇区,安排扇区在磁道中的排列顺序,并对已损坏的磁道和扇区做“坏”标记等。随后将磁盘的整体存储空间划分为相互独立的多个分区(如 Windows 中划分 C 盘、D 盘等),这些分区可以用作多种用途,如安装不同的操作系统和应用程序、存储文件等。然后进行逻辑格式化(又称高级格式化),其作用是对扇区进行逻辑编号、建立逻辑盘的引导记录、文件分配表、文件目录表和数据区等。最后才是操作系统的安装。

3)由上述解析可知,磁盘扇区的划分是在磁盘的物理格式化操作中完成的,文件系统根目录的建立是在逻辑格式化操作中完成的。

进入练习

第 47 题

计算机网络
9 分

(9 分)某网络拓扑如题 47 图所示,以太网交换机 S 通过路由器 R 与 Internet 互联。路由器部分接口、本地域名服务器、H1、H2 的 IP 地址和 MAC 地址如图中所示。在 t0 时刻 H1 的 ARP 表和S 的交换表均为空,H1 在此刻利用浏览器通过域名 www.abc.com 请求访问 Web 服务器,在 t1 时刻(t1 >t0 )S 第一次收到了封装 HTTP 请求报文的以太网帧,假设从 t0 到 t0 期间网络未发生任何与此次 Web 访问无关的网络通信。请回答下列问题。

2021-47

(1)从 t0 到 t1 期间,H1 除了 HTTP 之外还运行了哪个应用层协议?从应用层到数据链路层,该应用层协议报文是通过哪些协议进行逐层封装的?

(2)若 S 的交换表结构为<MAC 地址,端口>,则 t1 时刻 S 交换表的内容是什么?

(3)从 t0 到 t1 期间,H2 至少会接收到几个与此次 Web 访问相关的帧?接收到的是什么帧?帧的目的 MAC 地址是什么?

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

题目详解:
1)从 t0t_0 到 t1t_1 期间,除了 HTTP,H1 还运行了 DNS 应用层协议,以将域名转换为 IP 地址。DNS 运行在 UDP 之上,UDP 将应用层交下来的 DNS 报文添加首部后,向下交付给 IP 层,IP 层使用 IP 数据报进行封装,封装好后,向下交付给数据链路层,数据链路层使用 CSMA/CD 帧进行封装。因此,逐层封装关系如下:DNS 报文→UDP 数据报→IP 数据报→CSMA/CD 帧。

2)t0t_0 时刻,H1 的 ARP 表和 S 的交换表为空。H1 利用浏览器通过域名请求访问 Web 服务器。由于要先解析域名,所以会发送 DNS 报文到本地域名服务器,查询该域名对应的 IP 地址,所以要先向本地域名服务器发送请求。ARP 表为空,所以需要先发送 ARP 请求分组,查询本地域名服务器对应的 MAC 地址。这些帧的目的 MAC 地址均是 FF-FF-FF-FF-FF-FF。S 接收到这个帧,在交换表中记录下 MAC 地址为 00-11-22-33-44-cc,位于端口 4,然后广播该帧。当本地域名服务器接收到 ARP 请求后,向 H1 发送响应 ARP 分组。S 接收到这个帧,在交换表中记录下 MAC 地址为 00-11-22-33-44-bb 位于端口 1,然后把该帧从端口 4 发送出去。

得到了域名对应的 IP 地址,发现不在本局域网中,需要通过路由表转发。

H1 的 ARP 表中并没有路由器对应的 MAC 地址,因此需要先发送 ARP 请求分组,查询路由器对应的 MAC 地址。这些帧的目的 MAC 地址均是 FF-FF-FF-FF-FF-FF。S 接收到这个帧,广播该帧。当路由器收到 ARP 请求后,向 H1 发送响应 ARP 分组。S 接收到这个帧,在交换表中记录下 MAC 地址为 00-11-22-33-44-aa,位于端口 2,然后把该帧从端口 4 发送出去。现在,H1 能把数据发送给路由器了。在整个过程中,并没有涉及 H2,H2 没有主动发送数据。所以 S 并不会记录下 H2 的 MAC 地址和端口,所以 S 在 t1t_1 时刻的交换表如下表所示。

MAC 地址 端口
00-11-22-33-44-cc 4
00-11-22-33-44-bb 1
00-11-22-33-44-aa 2

3)H2 至少会接收到 2 个和此次 Web 访问相关的帧。接收到的均是封装 ARP 查询报文的以太网帧;这些帧的目的 MAC 地址均是 FF-FF-FF-FF-FF-FF。

进入练习