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

2017年408真题

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

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

选择题

40 题 · 共 80 分

第 1 题

数据结构
2 分

下列函数的时间复杂度是( )。

cpp 复制代码
int func(int n){
    int i=0, sum=0;
    while(sum<n)sum += ++i;
    return i;
}

A. O(log n)

B. O(n1/2)

C. O(n)

D. O(n log n)

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

参考答案:B

题目详解:
我们需要分析函数 func 的时间复杂度。函数的主要操作是一个 while 循环,循环条件是 sum < n,每次循环中 sum 累加 ++i 的值。具体步骤如下:

  1. 初始化时,i = 0,sum = 0。
  2. 每次循环中,i 先自增 1,然后 sum 累加 i 的值。因此,sum 的值实际上是前 i i 个自然数的和,即:sum=1+2+3+⋯+i=i(i+1)2sum = 1 + 2 + 3 + \cdots + i = \frac{i(i + 1)}{2}
  3. 循环终止条件是 sum >= n,即:i(i+1)2≥n\frac{i(i + 1)}{2} \geq n
    由于 i2 i^2 是主导项,可以近似为:i2≈2n  ⟹  i≈2ni^2 \approx 2n \implies i \approx \sqrt{2n}
  4. 因此,循环的次数 i i 与 n \sqrt{n} 成正比,时间复杂度为 O(n) O(\sqrt{n}) ,即 O(n1/2) O(n^{1/2}) 。

正确答案是 B。

进入练习

第 2 题

数据结构
2 分

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

I. 采用非递归的方式重写递归程序时必须用栈

II. 函数调用时,系统要用栈保存必要的信息

III. 只要确定了入栈次序,就可确定出栈次序

I V. 栈是一种受限的线性表,允许在其两端进行操作

A. 仅 I

B. 仅I、II、III

C. 仅I、III、IV

D. 仅II 、III 、IV

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

参考答案:C

题目详解:
关于栈的叙述,我们逐一分析各选项的正确性:

I. 采用非递归的方式重写递归程序时必须用栈
这一叙述是错误的。并非所有递归程序都需要用栈来实现非递归版本。例如,尾递归可以通过迭代直接实现,不需要栈。只有非尾递归的情况才需要栈来保存调用信息。

II. 函数调用时,系统要用栈保存必要的信息
这一叙述是正确的。函数调用时,系统使用调用栈(call stack)保存返回地址、局部变量等信息。

III. 只要确定了入栈次序,就可确定出栈次序
这一叙述是错误的。入栈次序相同的情况下,可能有多种合法的出栈次序。例如,入栈序列为 1,2,3 1, 2, 3 ,出栈序列可以是 3,2,1 3, 2, 1 或 2,1,3 2, 1, 3 等。

IV. 栈是一种受限的线性表,允许在其两端进行操作
这一叙述是错误的。栈是一种后进先出(LIFO)的线性表,只允许在栈顶(一端)进行插入和删除操作。

综上所述,错误的叙述是 I、III、IV,因此正确答案是 C。

正确答案:C

进入练习

第 3 题

数据结构
2 分

适用于压缩存储稀疏矩阵的两种存储结构是( )。

A. 三元组表和十字链表

B. 三元组表和邻接矩阵

D. 邻接矩阵和十字链表

C. 十字链表和二叉链表

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

参考答案:A

题目详解:
稀疏矩阵是指矩阵中绝大多数元素为零的矩阵。为了高效存储稀疏矩阵,通常采用以下两种存储结构:

  1. 三元组表:将稀疏矩阵中的非零元素按行、列、值的形式存储为一个三元组 (i,j,value)(i, j, value),其中 ii 表示行号,jj 表示列号,valuevalue 表示元素值。这种存储方式节省了空间,但不利于快速访问。

  2. 十字链表:也称为正交链表,是一种链式存储结构。每个非零元素用一个节点表示,节点中包含行号、列号、值以及指向同行和同列下一个非零元素的指针。十字链表适合频繁插入和删除操作的场景。

其他选项分析:

  • 邻接矩阵:通常用于表示图的连接关系,不适合存储稀疏矩阵,因为会浪费大量空间存储零元素。
  • 二叉链表:通常用于表示树结构,与稀疏矩阵的存储无关。

因此,正确答案是 A. 三元组表和十字链表。

进入练习

第 4 题

数据结构
2 分

要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件( )。

A. 只有左子树

B. 只有右子树

C. 结点的度均为 1

D. 结点的度均为 2

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

参考答案:B

题目详解:
要理解这个问题,我们需要分析二叉树的先序遍历和中序遍历的特点:

  1. 先序遍历(Pre-order):访问顺序为 根→左子树→右子树 \text{根} \rightarrow \text{左子树} \rightarrow \text{右子树} 。
  2. 中序遍历(In-order):访问顺序为 左子树→根→右子树 \text{左子树} \rightarrow \text{根} \rightarrow \text{右子树} 。

为了使先序序列和中序序列相同,必须确保在访问根结点时,没有左子树的存在。否则,中序遍历会先访问左子树,从而导致序列不同。具体分析如下:

  • 如果非叶结点 只有左子树(选项A),中序遍历会先访问左子树,再访问根结点,导致序列与先序不同。
  • 如果非叶结点 只有右子树(选项B),先序和中序的访问顺序均为 根→右子树 \text{根} \rightarrow \text{右子树} ,序列相同。
  • 如果结点的度均为 1(选项C),可能是只有左子树或只有右子树,但只有右子树的情况才满足条件,因此选项C不全面。
  • 如果结点的度均为 2(选项D),意味着每个非叶结点都有左右子树,中序会先访问左子树,导致序列与先序不同。

因此,唯一满足条件的选项是 B,即所有非叶结点 只有右子树。

正确答案:B

进入练习

第 5 题

数据结构
2 分

已知一棵二叉树的树形如右图所示,其后序序列为e, a, c, b, d, g, f,树中与结点a 同层的结点是( )。

2017-5

A. c

B. d

C. f

D. g

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

参考答案:B

题目详解:
后序序列是先左子树,接着右子树,最后父结点,递归进行。根结点左子树的叶结点首先被访问,它是 e。接下来是它的父结点 a, 然后是 a 的父结点 c。接着访问根结点的右子树。它的叶结点 b 首先被访问,然后是 b 的父结点 d, 再者是 d 的父结点 g。最后是根结点 f。因此 d 与 a 同层,B 正确。

进入练习

第 6 题

数据结构
2 分

已知字符集{a, b, c, d, e, f, g, h},若各字符的哈夫曼编码依次是 0100, 10, 0000, 0101,001, 011, 11, 0001,则编码序列 0100011001001011110101 的译码结果是( )。

A. a c g a b f h

B. a d b a g b b

C. a f b e a g d

D. a f e e f g d

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

参考答案:D

题目详解:
哈夫曼编码是前缀编码,各个编码的前缀各不相同,因此直接拿编码序列与哈夫曼编码一一比对即可。序列可分割为 0100 011 001 001 011 11 0101,译码结果是 a f e e f g d,选项 D 正确。

正确答案:D

进入练习

第 7 题

数据结构
2 分

已知无向图G 含有 16 条边,其中度为 4 的顶点个数为 3,度为 3 的顶点个数为 4,其他顶点的度均小于 3。图G 所含的顶点个数至少是( )。

A. 10

B. 11

C. 13

D. 15

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

参考答案:B

题目详解:
根据图论中的握手定理,无向图中所有顶点的度数之和等于边数的两倍。设图 G G 的顶点总数为 n n ,其他顶点的度数和为 D D 。

已知:

  • 边数 ∣E∣=16 |E| = 16 ,所以度数之和为 2×16=32 2 \times 16 = 32 。
  • 度为 4 4 的顶点有 3 3 个,贡献的度数为 3×4=12 3 \times 4 = 12 。
  • 度为 3 3 的顶点有 4 4 个,贡献的度数为 4×3=12 4 \times 3 = 12 。
  • 其他顶点的度均小于 3 3 ,即最大可能为 2 2 。

设其他顶点数为 k k ,则 D≤2k D \leq 2k 。

根据握手定理:
12+12+D=32 12 + 12 + D = 32
D=8 D = 8

由于 D≤2k D \leq 2k ,所以:
8≤2k 8 \leq 2k
k≥4 k \geq 4

因此,总顶点数:
n=3+4+k≥3+4+4=11 n = 3 + 4 + k \geq 3 + 4 + 4 = 11

所以,图 G G 所含的顶点个数至少是 11 11 。

正确答案:B

进入练习

第 8 题

数据结构
2 分

下列二叉树中,可能成为折半查找判定树(不含外部结点)的是( )。

A. 2017-8a

B. 2017-8b

C. 2017-8c

D. 2017-8d

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

参考答案:A

题目详解:
折半查找判定树实际上是一棵 二叉排序树,它的中序序列是一个有序序列。可以在树结点上依次填上相应的元素,符合折半查找规则的树即是所求。

B 选项 4、5 相加除 2 向上取整,7、8 相加除 2 向下取整,矛盾。C 选项,3、4 相加除 2 向上取整,6、7 相加除 2 向下取整,矛盾。D 选项,1、10 相加除 2 向下取整,6、7 相加除 2 向上取整,矛盾。A 符合折半查找规则,因此正确。

进入练习

第 9 题

数据结构
2 分

下列应用中,适合使用B+树的是( )。

A. 编译器中的词法分析

B. 关系数据库系统中的索引

C. 网络中的路由表快速查找

D. 操作系统的磁盘空闲块管理

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

参考答案:B

题目详解:
B+树是一种多路平衡查找树,具有以下特点使其特别适合作为关系数据库系统中的索引:

  1. 高扇出性:B+树的每个节点可以包含大量子节点(通常上百个),这使得树的高度保持在很低的水平。例如,一个4层的B+树可以索引 108 10^8 条记录。

  2. 顺序访问优势:B+树的所有数据都存储在叶子节点,并且叶子节点通过指针连接成链表,非常适合范围查询(如SQL中的 BETWEEN 或 > 操作)。

  3. 磁盘I/O优化:B+树的节点大小通常设计为磁盘块大小(如4KB),通过 O(log⁡dn) O(\log_d n) 的I/O复杂度(其中 d d 为扇出系数)实现高效查找,显著减少磁盘访问次数。

其他选项分析:

  • A:词法分析通常使用有限自动机或正则表达式,不需要树结构。
  • C:路由表快速查找通常采用Trie树或哈希表,而非B+树。
  • D:磁盘空闲块管理通常使用位图或链表,B+树的维护开销不必要。

正确答案:B

进入练习

第 10 题

数据结构
2 分

在内部排序时,若选择了归并排序而没有选择插入排序,则可能的理由是( )。

I. 归并排序的程序代码更短

II. 归并排序的占用空间更少

III. 归并排序的运行效率更高

A. 仅II

B. 仅III

C. 仅I、II

D. 仅I、III

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

参考答案:B

题目详解:
在比较归并排序和插入排序时,我们需要从多个角度分析两者的差异:

  1. 程序代码长度:归并排序通常需要递归或迭代的分治策略,代码实现比插入排序复杂,因此 I I 是错误的。

  2. 占用空间:归并排序的空间复杂度为 O(n) O(n) ,因为需要额外的临时数组来合并子序列;而插入排序是原地排序,空间复杂度为 O(1) O(1) 。因此 II II 是错误的。

  3. 运行效率:归并排序的时间复杂度为 O(nlog⁡n) O(n \log n) ,而插入排序的时间复杂度为 O(n2) O(n^2) 。对于大规模数据,归并排序的效率更高,因此 III III 是正确的。

综上所述,只有 III III 是正确的,因此正确答案是 B B 。

正确答案:B

进入练习

第 11 题

数据结构
2 分

下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是( )。

I. 插入排序

II. 选择排序

III. 起泡排序

IV. 希尔排序

V. 堆排序

A. 仅I、II

B. 仅II、III

C. 仅III、IV

D. 仅IV、V

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

参考答案:D

题目详解:
排序算法在顺序存储和链式存储下的时间效率差异主要取决于算法对数据访问方式的要求:

  1. 插入排序(I):在链式存储中,插入操作的时间复杂度仍为 O(1) O(1) ,但查找插入位置需要顺序访问,平均时间复杂度仍为 O(n2) O(n^2) ,与顺序存储相同,因此时间效率不会显著降低。

  2. 选择排序(II):无论顺序还是链式存储,都需要顺序扫描未排序部分找到最小(或最大)元素,时间复杂度均为 O(n2) O(n^2) ,因此时间效率不会显著降低。

  3. 起泡排序(III):通过相邻元素比较和交换完成排序,链式存储可以高效实现,时间复杂度仍为 O(n2) O(n^2) ,因此时间效率不会显著降低。

  4. 希尔排序(IV):依赖于顺序存储的随机访问特性(通过增量跳跃访问元素),链式存储无法高效实现这种访问,时间复杂度会显著提高。

  5. 堆排序(V):完全依赖于顺序存储的随机访问特性(如通过下标计算父子节点位置),链式存储无法高效实现堆调整操作,时间复杂度会显著提高。

综上,希尔排序和堆排序在链式存储下时间效率会明显降低。

正确答案:D

进入练习

第 12 题

计算机组成原理
2 分

假定计算机M1和M2 具有相同的指令集体系结构(ISA),主频分别为 1.5GHz 和1.2GHz。在M1和M2 上运行某基准程序P, 若平均CPI 分别为2和1, 则程序P 在M1和M2 上运行时间的比值是( )。

A. 0.4

B. 0.625

C. 1.6

D. 2.5

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

参考答案:C

题目详解:
程序运行时间的计算公式为:
运行时间=指令数×CPI主频 运行时间 = \frac{指令数 \times CPI}{主频}

设程序P的指令数为 N N ,则:

在M1上的运行时间 T1 T_1 为:
T1=N×21.5×109 T_1 = \frac{N \times 2}{1.5 \times 10^9}

在M2上的运行时间 T2 T_2 为:
T2=N×11.2×109 T_2 = \frac{N \times 1}{1.2 \times 10^9}

运行时间的比值 T1T2 \frac{T_1}{T_2} 为:
T1T2=2N1.5×109N1.2×109=21.5×1.21=2×1.21.5×1=2.41.5=1.6 \frac{T_1}{T_2} = \frac{\frac{2N}{1.5 \times 10^9}}{\frac{N}{1.2 \times 10^9}} = \frac{2}{1.5} \times \frac{1.2}{1} = \frac{2 \times 1.2}{1.5 \times 1} = \frac{2.4}{1.5} = 1.6

因此,程序P在M1和M2上运行时间的比值是1.6。

正确答案:C

进入练习

第 13 题

计算机组成原理
2 分

某计算机主存按字节编址,由 4 个 64M×8 位的DRAM 芯片采用交叉编址方式构成,并与宽度为32 位的存储器总线相连,主存每次最多读写 32 位数据。若 double 型变量 x 的主存地址为 804001AH, 则读取x 需要的存储周期数是( )。

A. 1

B. 2

C. 3

D. 4

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

参考答案:C

题目详解:
首先,我们需要分析计算机主存的结构和编址方式:

  1. 主存由 4 个 64M×8 64M \times 8 位的 DRAM 芯片构成,采用交叉编址方式。这意味着:

    • 每个芯片的容量为 64M×8 64M \times 8 位,即 64 64 MB。
    • 4 个芯片总容量为 4×64 4 \times 64 MB =256 = 256 MB。
    • 交叉编址意味着地址空间被均匀分布到 4 个芯片上。
  2. 存储器总线宽度为 32 32 位,主存每次最多读写 32 32 位数据。因此,每次存储周期可以读取 4 4 字节数据。

  3. double double 型变量 x x 的大小为 8 8 字节,因此需要分多次读取:

    • 每次读取 4 4 字节,所以至少需要 ⌈84⌉=2 \lceil \frac{8}{4} \rceil = 2 次存储周期。
  4. 但是题目中给出的 x x 的主存地址为 804001AH 804001AH ,我们需要分析其对齐情况:

    • 地址的低 2 2 位(1AH 1AH 的低 2 2 位是 10 10 )表示 x x 的起始地址不是 4 4 字节对齐的(因为对齐地址的低 2 2 位应为 00 00 )。
    • 因此,第一次存储周期只能读取 804001AH 804001AH 开始的 2 2 字节(因为起始地址 1AHmod  4=2 1AH \mod 4 = 2 ),第二次读取接下来的 4 4 字节,第三次读取最后的 2 2 字节。
    • 总共需要 3 3 次存储周期。

综上所述,读取 x x 需要的存储周期数是 3 3 。

正确答案:C

进入练习

第 14 题

计算机组成原理
2 分

某C 语言程序段如下,下列关于数组a 的访问局部性的描述中,正确的是( )。

cpp 复制代码
for(i=0;i<=9;i++){
    temp = 1;
    for(j=0;j<=i;j++)temp *= a[j]
    	sum+=temp;
}

A. 时间局部性和空间局部性皆有

B. 无时间局部性,有空间局部性

C. 有时间局部性,无空间局部性

D. 时间局部性和空间局部性皆无

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

参考答案:A

题目详解:
在分析数组 a 的访问局部性时,我们需要考虑时间局部性和空间局部性两个维度。

  1. 时间局部性:指的是同一个数据项在短时间内被多次访问的特性。在代码中,数组元素 a[j] 在内部循环中被反复访问(temp *= a[j])。特别是对于较小的 j 值,a[j] 会在多次外层循环中被重复访问(例如 a[0] 在每次 i 增加时都会被访问)。因此,数组 a 的访问具有时间局部性。

  2. 空间局部性:指的是程序倾向于访问邻近于最近访问过的数据项的特性。代码中,数组 a 的访问顺序是 a[0], a[0], a[1], a[0], a[1], a[2], ..., a[0], ..., a[9]。可以看到,每次访问的 a[j] 都是按顺序连续访问的,且数组元素在内存中是连续存储的。因此,数组 a 的访问具有空间局部性。

综上所述,数组 a 的访问同时具有时间局部性和空间局部性。

正确答案:A

进入练习

第 15 题

计算机组成原理
2 分

下列寻址方式中,最适合按下标顺序访问一维数组元素的是( )。

A. 相对寻址

B. 寄存器寻址

C. 直接寻址

D. 变址寻址

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

参考答案:D

题目详解:
在计算机体系结构中,寻址方式的选择对数组访问的效率有很大影响。题目问的是最适合按下标顺序访问一维数组元素的寻址方式,我们需要分析每种寻址方式的特点:

  1. A. 相对寻址:通过基地址加上一个偏移量来计算有效地址,适用于访问局部变量或跳转指令,但不太适合数组的顺序访问,因为每次都需要重新计算偏移量。

  2. B. 寄存器寻址:操作数直接存放在寄存器中,适用于高速访问,但寄存器数量有限,无法直接用于数组元素的顺序访问。

  3. C. 直接寻址:指令中直接给出操作数的内存地址,适用于访问固定地址的数据,但无法灵活地按顺序访问数组元素。

  4. D. 变址寻址:通过基地址(数组起始地址)加上变址寄存器(存放数组下标)的值来计算有效地址,非常适合按下标顺序访问一维数组元素。变址寄存器可以方便地递增或递减,实现顺序访问。

因此,变址寻址是最适合按下标顺序访问一维数组元素的寻址方式。

正确答案:D

进入练习

第 16 题

计算机组成原理
2 分

某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令107 条,每个地址字段为 6 位,则指令字长至少应该是( )。

A. 24位

B. 26位

C. 28位

D. 32位

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

参考答案:A

题目详解:
首先,我们需要分析指令格式和地址字段的分配情况。

  1. 指令格式分析:

    • 该计算机有 两种指令格式:三地址指令和二地址指令。
    • 三地址指令有 29 29 条,二地址指令有 107 107 条。
    • 每个地址字段为 6 6 位。
  2. 三地址指令的编码:

    • 三地址指令包含 3个地址字段,每个地址字段占 6 6 位,因此地址部分共占 3×6=18 3 \times 6 = 18 位。
    • 假设三地址指令的操作码部分占 OP1 OP_1 位,则三地址指令的总长度为 OP1+18 OP_1 + 18 位。
    • 由于三地址指令有 29 29 条,需要满足 2OP1≥29 2^{OP_1} \geq 29 ,因此 OP1≥5 OP_1 \geq 5 位(因为 25=32≥29 2^5 = 32 \geq 29 )。
  3. 二地址指令的编码:

    • 二地址指令包含 2个地址字段,每个地址字段占 6 6 位,因此地址部分共占 2×6=12 2 \times 6 = 12 位。
    • 假设二地址指令的操作码部分占 OP2 OP_2 位,则二地址指令的总长度为 OP2+12 OP_2 + 12 位。
    • 由于二地址指令有 107 107 条,且需要与三地址指令的操作码区分开,因此需要满足 2OP2≥107 2^{OP_2} \geq 107 ,因此 OP2≥7 OP_2 \geq 7 位(因为 27=128≥107 2^7 = 128 \geq 107 )。
  4. 指令字长的确定:

    • 为了保证两种指令格式的操作码部分能够区分开,我们需要统一指令字长。
    • 三地址指令的最小长度为 5+18=23 5 + 18 = 23 位。
    • 二地址指令的最小长度为 7+12=19 7 + 12 = 19 位。
    • 为了统一指令字长,我们需要取两者的最大值,即 23 23 位。但由于计算机按字节编址,指令字长应为字节的整数倍(即 8 8 的倍数),因此至少需要 24 24 位。

综上所述,指令字长至少为 24 24 位。

正确答案:A

进入练习

第 17 题

计算机组成原理
2 分

下列关于超标量流水线特性的叙述中, 正确的是( )。

I. 能缩短流水线功能段的处理时间

II. 能在一个时钟周期内同时发射多条指令

III. 能结合动态调度技术提高指令执行并行性

A. 仅II

B. 仅I、III

C. 仅II、III

D. I、II 和III

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

参考答案:C

题目详解:
超标量流水线是一种通过增加硬件资源来提高指令级并行性的技术。下面对各个叙述进行分析:

  1. 叙述I:能缩短流水线功能段的处理时间
    这是错误的。超标量流水线并不能缩短单个功能段的处理时间,它只是通过在一个时钟周期内发射多条指令 来提升并行度。功能段的处理时间由硬件设计和电路延迟决定,与是否超标量无关。

  2. 叙述II:能在一个时钟周期内同时发射多条指令
    这是正确的。超标量流水线的核心特性就是通过多套功能部件 和多发射逻辑 实现每个周期发射多条指令(如 nn 条指令,n>1n > 1)。

  3. 叙述III:能结合动态调度技术提高指令执行并行性
    这是正确的。超标量流水线常与动态调度(如 Tomasulo 算法)结合,通过乱序执行 和寄存器重命名 等技术解决数据冲突,进一步提高并行性。

综上,仅叙述II和III正确。

正确答案:C

进入练习

第 18 题

计算机组成原理
2 分

下列关于主存储器(MM)和控制存储器(CS)的叙述中,错误的是( )。

A. MM 在CPU 外,CS 在CPU 内

B. MM 按地址访问,CS 按内容访问

C. MM 存储指令和数据,CS 存储微指令

D. MM 用RAM 和ROM 实现,CS 用ROM 实现

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

参考答案:B

题目详解:
主存储器(MM, Main Memory)和控制存储器(CS, Control Store)是计算机系统中的两种重要存储部件,它们在功能、位置和访问方式上有显著区别:

  1. 位置:

    • MM 位于CPU 外部,用于存储程序指令和数据,CPU 通过总线访问MM。
    • CS 位于CPU 内部,是微程序控制器的组成部分,用于存储微指令(控制信号序列)。
    • 因此,选项A(MM 在CPU 外,CS 在CPU 内)是正确的。
  2. 访问方式:

    • MM 通过地址访问(即按地址寻址),CPU 提供地址总线来读取或写入数据。
    • CS 也是按地址访问的,微程序的执行通过微地址顺序访问CS 中的微指令。
    • 按内容访问(如相联存储器)是另一种访问方式,但CS 并不采用这种方式。因此,选项B(MM 按地址访问,CS 按内容访问)是错误的。
  3. 存储内容:

    • MM 存储用户程序和相关的数据。
    • CS 存储微指令,用于控制CPU 的硬件操作。
    • 因此,选项C(MM 存储指令和数据,CS 存储微指令)是正确的。
  4. 实现技术:

    • MM 通常由RAM(随机存取存储器)和ROM(只读存储器)实现,RAM 用于临时存储,ROM 用于固化程序(如BIOS)。
    • CS 通常由ROM 实现,因为微指令在制造时就被固定,但现代CPU 也可能使用可写的CS(如EPROM)。
    • 因此,选项D(MM 用RAM 和ROM 实现,CS 用ROM 实现)是正确的。

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

正确答案:B

进入练习

第 19 题

计算机组成原理
2 分

下列关于指令流水线数据通路的叙述中,错误的是( )。

A. 包含生成控制信号的控制部件

B. 包含算术逻辑运算部件(ALU)

C. 包含通用寄存器组和取指部件

D. 由组合逻辑电路和时序逻辑电路组合而成

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

参考答案:A

题目详解:
在指令流水线数据通路的分析中,我们需要明确其组成部分和功能:

  1. 控制部件:指令流水线的数据通路主要负责数据的流动和处理,而生成控制信号的部件属于控制单元(Control Unit),它不属于数据通路的一部分。因此,选项A的描述是错误的。

  2. 通用寄存器组和取指部件:数据通路确实包含通用寄存器组(如 REG \text{REG} 文件)和取指部件(如 PC \text{PC} 和指令存储器),这些是数据通路的核心组件。因此,选项C的描述是正确的。

  3. 电路组成:数据通路通常由组合逻辑电路(如ALU、多路选择器)和时序逻辑电路(如寄存器、存储器)组合而成,以实现指令的流水执行。因此,选项D的描述是正确的。

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

正确答案:A

进入练习

第 20 题

计算机组成原理
2 分

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

A. 靠近CPU 的总线速度较快

B. 存储器总线可支持突发传送方式

C. 总线之间须通过桥接器相连

D. PCI-Express×16 采用并行传输方式

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

参考答案:D

题目详解:
多总线结构是计算机系统中常用的一种总线架构,其特点如下:

  1. 总线速度与CPU距离的关系:选项A提到“靠近CPU的总线速度较快”,这是正确的。因为CPU需要高速访问某些关键部件(如缓存),所以靠近CPU的总线通常设计为高速总线,例如前端总线(FSB)。

  2. 算术逻辑运算部件(ALU)的位置:选项B提到“包含算术逻辑运算部件(ALU)”,这是错误的。ALU是CPU的核心部件,位于CPU内部,并不属于多总线结构的组成部分。多总线结构主要涉及总线层级和连接方式,与ALU无关。

  3. 存储器总线的突发传送方式:选项B(第二个B)提到“存储器总线可支持突发传送方式”,这是正确的。突发传送(Burst Transfer)是一种高效的数据传输方式,允许连续传输多个数据单元而无需重复发送地址。

  4. 总线之间的连接方式:选项C提到“总线之间须通过桥接器相连”,这是正确的。在多总线结构中,不同速度的总线(如高速总线和低速总线)通常通过桥接器(如北桥、南桥)连接,以实现数据转发和协议转换。

  5. PCI-Express×16的传输方式:选项D提到“PCI-Express×16采用并行传输方式”,这是错误的。PCI-Express(PCIe)采用串行传输方式,通过多通道(如×1、×4、×8、×16)实现高带宽,而非并行传输。并行传输是传统总线(如PCI)的特点。

正确答案:D

进入练习

第 21 题

计算机组成原理
2 分

I/O 指令实现的数据传送通常发生在( )。

A. I/O 设备和I/O 端口之间

B. 通用寄存器和I/O 设备之间

C. I/O 端口和I/O 端口之间

D. 通用寄存器和I/O 端口之间

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

参考答案:D

题目详解:
I/O 指令主要用于实现 CPU 和 I/O 设备之间的数据传送。具体来说,I/O 指令执行时,数据通常在 CPU 的 通用寄存器 通用寄存器 和 I/O端口 I/O 端口 之间进行传送。I/O端口 I/O 端口 是 CPU 与外部设备进行通信的接口,每个 I/O设备 I/O 设备 都有一个或多个 I/O端口 I/O 端口 与之对应。当 CPU 执行输入指令时,数据从 I/O端口 I/O 端口 传送到 通用寄存器 通用寄存器 ;执行输出指令时,数据从 通用寄存器 通用寄存器 传送到 I/O端口 I/O 端口 。因此,I/O 指令实现的数据传送通常发生在 通用寄存器 通用寄存器 和 I/O端口 I/O 端口 之间。

正确答案:D

进入练习

第 22 题

计算机组成原理
2 分

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

A. 在一条指令执行结束时响应中断

B. 中断处理期间CPU 处于关中断状态

C. 中断请求的产生与当前指令的执行无关

D. CPU 通过采样中断请求信号检测中断请求

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

参考答案:B

题目详解:
在多重中断系统中:

A. 在一条指令执行结束时响应中断:这是正确的。CPU通常会在当前指令执行完成后检查中断请求,以确保指令的原子性。

B. 中断处理期间CPU 处于关中断状态:这是错误的。在多重中断系统中,CPU在处理一个中断时可能会允许更高优先级的中断(即开中断),而不是始终处于关中断状态。因此,这个叙述是错误的。

C. 中断请求的产生与当前指令的执行无关:这是正确的。中断请求通常由外部设备或内部异常触发,与当前执行的指令无直接关系。

D. CPU 通过采样中断请求信号检测中断请求:这是正确的。CPU会定期采样中断请求线(如IRQ IRQ )来检测是否有中断请求。

正确答案:B

进入练习

第 23 题

操作系统
2 分

假设 4 个作业到达系统的时刻和运行时间如下表所示。

作业 达到时刻 t 运行时间
J1 0 3
J2 1 3
J3 1 2
J4 3 1

系统在t = 2 时开始作业调度。若分别采用先来先服务和短作业优先调度算法,则选中的作业分别是( )。

A. J2、J3

B. J1、J4

C. J2、J4

D. J1、J3

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

参考答案:D

题目详解:
在 t=2 t = 2 时,系统开始作业调度。此时各作业的状态如下:

  1. 先来先服务 (FCFS) 调度算法:

    • 按照作业到达的顺序进行调度。
    • 在 t=2 t = 2 时,已到达的作业有 J1 J_1 (到达时刻 0 0 )、J2 J_2 (到达时刻 1 1 ) 和 J3 J_3 (到达时刻 1 1 )。
    • J1 J_1 最先到达,因此被选中执行。
  2. 短作业优先 (SJF) 调度算法:

    • 优先调度运行时间最短的作业。
    • 在 t=2 t = 2 时,已到达的作业有 J1 J_1 (运行时间 3 3 )、J2 J_2 (运行时间 3 3 )、J3 J_3 (运行时间 2 2 ) 和 J4 J_4 (运行时间 1 1 )。
    • J4 J_4 的运行时间最短,但它尚未到达(到达时刻为 3 3 ),因此选择次短的 J3 J_3 (运行时间 2 2 )。

综上,先来先服务选中 J1 J_1 ,短作业优先选中 J3 J_3 。正确答案是 D。

正确答案:D

进入练习

第 24 题

操作系统
2 分

执行系统调用的过程包括如下主要操作:

①返回用户态

②执行陷入(trap)指令

③传递系统调用参数

④执行相应的服务程序

正确的执行顺序是( )。

A. ②→③→①→④

B. ②→④→③→①

C. ③→②→④→①

D. ③→④→②→①

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

参考答案:C

题目详解:
执行系统调用的过程遵循以下顺序:

  1. 首先需要 传递系统调用参数 (步骤③),将用户态的参数传递给内核态,通常通过寄存器或栈来传递。

  2. 接着执行 陷入(trap)指令 (步骤②),该指令会触发一个软中断,将CPU从用户态切换到内核态,并跳转到内核的中断处理程序。

  3. 然后在内核态 执行相应的服务程序 (步骤④),根据系统调用号找到对应的内核函数并执行。

  4. 最后 返回用户态 (步骤①),将CPU从内核态切换回用户态,并将结果返回给用户程序。

因此,正确的顺序是 ③→②→④→① ③ \rightarrow ② \rightarrow ④ \rightarrow ① 。

正确答案:C

进入练习

第 25 题

操作系统
2 分

某计算机按字节编址,其动态分区内存管理采用最佳适应算法,每次分配和回收内存后都对空闲分区链重新排序。当前空闲分区信息如下表所示。

分区起始地址 20K 500K 1000K 200K
分区大小 40KB 80KB 100KB 200KB

回收起始地址为 60K、大小为 140KB 的分区后,系统中空闲分区的数量、空闲分区链第一个分区的起始地址和大小分别是( )。

A. 3、20K、380KB

B. 3、500K、80KB

C. 4、20K、180KB

D. 4、500K、80KB

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

参考答案:B

题目详解:
首先,我们需要分析当前的空闲分区链和回收操作的影响。

  1. 初始空闲分区链(按起始地址升序排列):

    • 分区1:起始地址 20K 20K ,大小 40KB 40KB
    • 分区2:起始地址 200K 200K ,大小 200KB 200KB
    • 分区3:起始地址 500K 500K ,大小 80KB 80KB
    • 分区4:起始地址 1000K 1000K ,大小 100KB 100KB
  2. 回收操作:回收起始地址为 60K 60K 、大小为 140KB 140KB 的分区。我们需要检查该分区是否可以与相邻的空闲分区合并:

    • 检查前一个分区:分区1的起始地址为 20K 20K ,大小为 40KB 40KB ,其结束地址为 20K+40KB=60K 20K + 40KB = 60K ,恰好与回收分区的起始地址 60K 60K 相邻。因此,分区1可以与回收分区合并。
    • 合并后的分区:起始地址 20K 20K ,大小 40KB+140KB=180KB 40KB + 140KB = 180KB 。
    • 检查后一个分区:下一个空闲分区的起始地址为 200K 200K ,而回收分区的结束地址为 60K+140KB=200K 60K + 140KB = 200K ,恰好与分区2的起始地址 200K 200K 相邻。因此,合并后的分区可以进一步与分区2合并。
    • 最终合并的分区:起始地址 20K 20K ,大小 180KB+200KB=380KB 180KB + 200KB = 380KB 。
  3. 合并后的空闲分区链:

    • 分区1:起始地址 20K 20K ,大小 380KB 380KB
    • 分区2:起始地址 500K 500K ,大小 80KB 80KB
    • 分区3:起始地址 1000K 1000K ,大小 100KB 100KB
  4. 重新排序:题目说明采用最佳适应算法,因此空闲分区链需要按分区大小升序排列:

    • 分区2:起始地址 500K 500K ,大小 80KB 80KB
    • 分区3:起始地址 1000K 1000K ,大小 100KB 100KB
    • 分区1:起始地址 20K 20K ,大小 380KB 380KB
  5. 结果:

    • 空闲分区的数量为 3 3 。
    • 空闲分区链的第一个分区是起始地址 500K 500K 、大小 80KB 80KB 的分区。

正确答案:B

进入练习

第 26 题

操作系统
2 分

某文件系统的簇和磁盘扇区大小分别为 1KB 和 512B。若一个文件的大小为 1026B,则系统分配给该文件的磁盘空间大小是( )。

A. 1026B

B. 1536B

C. 1538B

D. 2048B

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

参考答案:D

题目详解:
在文件系统中,磁盘空间分配的最小单位是簇。题目中给出的簇大小为 1KB 1KB (即 1024B 1024B ),而磁盘扇区大小为 512B 512B 。文件的大小为 1026B 1026B 。

  1. 首先,计算文件大小占用的簇数量:

    • 每个簇的大小为 1024B 1024B 。
    • 文件大小为 1026B 1026B ,因此需要分配的簇数为:
      ⌈10261024⌉=2 个簇 \lceil \frac{1026}{1024} \rceil = 2 \text{ 个簇}
  2. 计算分配的磁盘空间大小:

    • 分配的簇数为 2 2 ,每个簇为 1024B 1024B ,因此总空间为:
      2×1024B=2048B 2 \times 1024B = 2048B

因此,系统分配给该文件的磁盘空间大小是 2048B 2048B 。

正确答案:D

进入练习

第 27 题

操作系统
2 分

下列有关基于时间片的进程调度的叙述中,错误的是( )。

A. 时间片越短,进程切换的次数越多,系统开销也越大

B. 当前进程的时间片用完后,该进程状态由执行态变为阻塞态

C. 时钟中断发生后,系统会修改当前进程在时间片内的剩余时间

D. 影响时间片大小的主要因素包括响应时间、系统开销和进程数量等

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

参考答案:B

题目详解:
在基于时间片的进程调度中:

  • 选项A:时间片越短,意味着每个进程获得CPU的时间减少,导致进程切换的频率增加。每次切换都会带来上下文切换的开销,因此系统开销会增大。该叙述正确。

  • 选项B:当前进程的时间片用完后,进程调度器会剥夺其CPU使用权,并将其状态从 执行态 改为 就绪态,而非 阻塞态。阻塞态通常是由于等待I/O或其他事件而进入的状态。因此该叙述错误。

  • 选项C:时钟中断是时间片调度的重要机制。每次时钟中断发生时,系统会检查当前进程的时间片剩余时间,并更新该值。该叙述正确。

  • 选项D:时间片大小的设置需要权衡多个因素,例如:

    • 响应时间:时间片越小,响应时间越短。
    • 系统开销:时间片越小,切换越频繁,开销越大。
    • 进程数量:进程越多,时间片通常需要更小以保证公平性。
      因此该叙述正确。

正确答案:B

进入练习

第 28 题

操作系统
2 分

与单道程序系统相比,多道程序系统的优点是( )。

I. CPU 利用率高

II. 系统开销小

III. 系统吞吐量大

IV. I/O 设备利用率高

A. 仅I、III

B. 仅I、IV

C. 仅II、III

D. 仅I、III、IV

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

参考答案:D

题目详解:
与单道程序系统相比,多道程序系统的优点主要体现在以下几个方面:

  1. CPU 利用率高(I):多道程序系统可以同时在内存中装入多个程序,当一个程序因 I/O 操作而等待时,CPU 可以立即切换到另一个程序执行,避免了 CPU 空闲,从而提高了 CPU 的利用率。单道程序系统在同一时间只能运行一个程序,CPU 利用率较低。

  2. 系统吞吐量大(III):由于多道程序系统能够并行执行多个程序,单位时间内完成的作业数量(即吞吐量)显著增加。而单道程序系统一次只能处理一个作业,吞吐量较小。

  3. I/O 设备利用率高(IV):多道程序系统中,当一个程序进行 I/O 操作时,CPU 可以执行其他程序,使得 I/O 设备和 CPU 都能保持较高的利用率。单道程序系统中,I/O 操作期间 CPU 处于空闲状态,设备利用率较低。

关于 系统开销小(II):多道程序系统由于需要管理多个程序的并发执行,涉及进程调度、内存管理、资源分配等复杂机制,其系统开销通常比单道程序系统更大,因此这一项不是多道程序系统的优点。

综上所述,多道程序系统的优点是 I、III、IV,即 CPU 利用率高、系统吞吐量大、I/O 设备利用率高。

正确答案:D

进入练习

第 29 题

操作系统
2 分

下列选项中, 磁盘逻辑格式化程序所做的工作是( )。

I. 对磁盘进行分区

II. 建立文件系统的根目录

III. 确定磁盘扇区校验码所占位数

I V. 对保存空闲磁盘块信息的数据结构进行初始化

A. 仅II

B. 仅II、IV

C. 仅III、IV

D. 仅I、II、IV

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

参考答案:B

题目详解:
磁盘逻辑格式化程序(也称为高级格式化)主要完成以下工作:

  1. 建立文件系统的根目录(II):这是逻辑格式化的核心任务之一,为文件系统创建初始的目录结构。

  2. 对保存空闲磁盘块信息的数据结构进行初始化(IV):例如初始化位示图或空闲块链表,用于管理磁盘空间的分配。

而其他选项的描述不属于逻辑格式化的范畴:

  • 对磁盘进行分区(I):这是低级格式化或分区工具(如fdisk)的工作,发生在逻辑格式化之前。
  • 确定磁盘扇区校验码所占位数(III):这是磁盘控制器或低级格式化阶段完成的任务,与物理扇区特性相关。

因此,只有选项II和IV是逻辑格式化程序的工作内容。

正确答案:B

进入练习

第 30 题

操作系统
2 分

某文件系统中,针对每个文件,用户类别分为 4 类:安全管理员、文件主、文件主的伙伴、其他用户;访问权限分为 5 种:完全控制、执行、修改、读取、写入。若文件控制块中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为( )。

A. 5

B. 9

C. 12

D. 20

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

参考答案:D

题目详解:
为了计算表示文件权限所需的最少二进制位数,我们需要分析用户类别和访问权限的组合情况。

  1. 用户类别:共有 4 类用户:

    • 安全管理员
    • 文件主
    • 文件主的伙伴
    • 其他用户
  2. 访问权限:共有 5 种权限:

    • 完全控制
    • 执行
    • 修改
    • 读取
    • 写入
  3. 权限表示:每个用户类别需要独立分配访问权限。因此,每个用户类别需要一个二进制位串来表示其权限组合。对于 5 种权限,至少需要 ⌈log⁡25⌉=3 \lceil \log_2 5 \rceil = 3 位二进制数来表示(因为 22=4<5 2^2 = 4 < 5 ,而 23=8≥5 2^3 = 8 \geq 5 )。

  4. 总位数计算:由于有 4 类用户,每类用户需要 3 位二进制数表示其权限,因此总位数为:
    4(用户类别)×3(权限位数)=12 位 4 \text{(用户类别)} \times 3 \text{(权限位数)} = 12 \text{ 位}
    然而,题目中的选项没有 12 位(选项 C 是 12,但题目要求的是“至少”),因此可能需要更精确的表示方法。如果采用位掩码(每个权限用 1 位表示),则每种权限需要 5 位(每位对应一种权限),4 类用户需要的总位数为:
    4(用户类别)×5(权限位数)=20 位 4 \text{(用户类别)} \times 5 \text{(权限位数)} = 20 \text{ 位}
    这样,可以更灵活地为每类用户分配任意权限组合。

综上所述,描述文件权限的位数至少应为 20 位。

正确答案:D

进入练习

第 31 题

操作系统
2 分

若文件f1 的硬链接为f2,两个进程分别打开f1和f2, 获得对应的文件描述符为fd1和fd2, 则下列叙述中,正确的是( )。

I. f1和f2 的读写指针位置保持相同

II. f1和f2 共享同一个内存索引结点

III. fd1和fd2 分别指向各自的用户打开文件表中的一项

A. 仅III

B. 仅II、III

C. 仅I、II

D. I、II 和III

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

参考答案:B

题目详解:
在Unix/Linux系统中,硬链接(hard link)是指多个文件名指向同一个 inode(索引结点)。因此,f1 f1 和 f2 f2 是同一个文件的硬链接时,它们共享同一个 inode,即内存索引结点。以下是各选项的分析:

  1. I. f1 f1 和 f2 f2 的读写指针位置保持相同
    这个叙述是错误的。虽然 f1 f1 和 f2 f2 共享同一个 inode,但每个进程打开文件时会创建独立的文件描述符(file descriptor),每个文件描述符会维护自己的读写指针位置。因此,fd1 fd1 和 fd2 fd2 的读写指针是独立的,不会同步。

  2. II. f1 f1 和 f2 f2 共享同一个内存索引结点
    这个叙述是正确的。硬链接的本质是多个文件名指向同一个 inode,因此 f1 f1 和 f2 f2 共享同一个内存索引结点。

  3. III. fd1 fd1 和 fd2 fd2 分别指向各自的用户打开文件表中的一项
    这个叙述是正确的。每个进程打开文件时,会在自己的用户打开文件表中创建一项,因此 fd1 fd1 和 fd2 fd2 分别属于各自的进程,指向各自的表项。

综上所述,正确的叙述是 II 和 III,因此正确答案是 B。

正确答案:B

进入练习

第 32 题

操作系统
2 分

系统将数据从磁盘读到内存的过程包括以下操作,正确的执行顺序是( )。

①DMA 控制器发出中断请求

②初始化DMA 控制器并启动磁盘

③从磁盘传输一块数据到内存缓冲区

④执行“DMA 结束”中断服务程序

A. ③→①→②→④

B. ②→③→①→④

C. ②→①→③→④

D. ①→②→④→③

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

参考答案:B

题目详解:
系统将数据从磁盘读到内存的过程涉及 DMA(Direct Memory Access,直接内存访问)机制,其正确执行顺序如下:

  1. 初始化DMA控制器并启动磁盘(②):首先需要配置 DMA 控制器的参数(如内存起始地址、传输数据长度等),然后启动磁盘,准备数据传输。

  2. 从磁盘传输一块数据到内存缓冲区(③):DMA 控制器接管总线控制权,将数据从磁盘直接传输到内存缓冲区,无需 CPU 干预。

  3. DMA控制器发出中断请求(①):当数据传输完成后,DMA 控制器向 CPU 发出中断信号,通知 CPU 数据传输已完成。

  4. 执行“DMA结束”中断服务程序(④):CPU 响应中断,执行中断服务程序进行后续处理(如校验数据、更新状态等)。

因此,正确的执行顺序是 ②→③→①→④ ② \rightarrow ③ \rightarrow ① \rightarrow ④ 。

正确答案:B

进入练习

第 33 题

计算机网络
2 分

假设 OSI 参考模型的应用层欲发送 400B 的数据(无拆分), 除物理层和应用层之外,其他各层在封装PDU 时均引入 20B 的额外开销,则应用层数据传输效率约为( )。

A. 80%

B. 83%

C. 87%

D. 91%

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

参考答案:A

题目详解:
在 OSI 参考模型中,数据从应用层向下传输时,每层都会添加自己的头部信息(额外开销)。题目中给出以下条件:

  1. 应用层原始数据大小为 400B 400B 。
  2. 除物理层和应用层外,其他五层(表示层、会话层、传输层、网络层、数据链路层)每层引入 20B 20B 的额外开销。
  3. 物理层不添加额外开销。

因此,总额外开销为:
5×20B=100B 5 \times 20B = 100B 。

数据传输效率的计算公式为:
传输效率=应用层原始数据大小应用层原始数据大小+总额外开销×100% \text{传输效率} = \frac{\text{应用层原始数据大小}}{\text{应用层原始数据大小} + \text{总额外开销}} \times 100\%

将数值代入公式:
传输效率=400B400B+100B×100%=400500×100%=80% \text{传输效率} = \frac{400B}{400B + 100B} \times 100\% = \frac{400}{500} \times 100\% = 80\%

正确答案:A

进入练习

第 34 题

计算机网络
2 分

若信道在无噪声情况下的极限数据传输速率不小于信噪比为 30dB 条件下的极限数据传输速率,则信号状态数至少是( )。

A. 4

B. 8

C. 16

D. 32

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

参考答案:D

题目详解:
可用 奈奎斯特定理 计算无噪声情况下的极限数据传输速率,用 香农定理 计算有噪信道极限数据传输速率。2Wlog⁡2N≥Wlog⁡2(1+S/N)2W \log_{2}N \ge W \log_{2}(1 + S/N),WW 是信道带宽,NN 是信号状态数,S/NS/N 是信噪比,将数据代入计算可得 N≥32N \ge 32,选 D。分贝数 =10log⁡10(S/N)= 10 \log_{10}(S/N)。

正确答案:D

进入练习

第 35 题

计算机网络
2 分

在下图所示的网络中,若主机H 发送一个封装访问Internet 的 IP 分组的IEEE 802.11 数据帧F,则帧F 的地址 1、地址 2 和地址 3 分别是( )。

2017-35

A. 00-12-34-56-78-9a,00-12-34-56-78-9b,00-12-34-56-78-9c

B. 00-12-34-56-78-9b,00-12-34-56-78-9a,00-12-34-56-78-9c

C. 00-12-34-56-78-9b,00-12-34-56-78-9c,00-12-34-56-78-9a

D. 00-12-34-56-78-9a,00-12-34-56-78-9c,00-12-34-56-78-9b

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

参考答案:B

题目详解:
IEEE 802.11数据帧有四种子类型,分别是 IBSS、From AP、ToAP、WDS。这里的数据帧 F 是从笔记本电脑发送往访问接入点(AP),所以属于 To AP 子类型。这种帧地址 l 是 RA (BSSID),地址 2 是 SA,地址 3 是 DA。RA 是 Receiver Address 的缩写,BSSID 是 basic service set identifier 的缩写,SA 是 source address 的缩写,DA 是 destination address 的缩写。因此地址 1 是 AP 的 MAC,地址 2 是 H 的 MAC,地址 3 是 R 的 MAC,选 B。

进入练习

第 36 题

计算机网络
2 分

下列IP 地址中,只能作为IP 分组的源IP 地址但不能作为目的IP 地址的是( )。

A. 0.0.0.0

B. 127.0.0.1

C. 200.10.10.3

D. 255.255.255.255

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

参考答案:A

题目详解:
在IP地址中,有几个特殊的保留地址具有特定的用途:

  1. 0.0.0.0 0.0.0.0 是一个特殊的IP地址,称为“未指定地址”或“默认路由”。它通常用作源IP地址,表示“本网络上的本主机”,但不能作为目的IP地址使用。当主机在启动时尚未分配IP地址时,可能会使用 0.0.0.0 0.0.0.0 作为源地址。

  2. 127.0.0.1 127.0.0.1 是环回地址,用于主机自我通信。它可以作为源IP地址或目的IP地址使用,通常用于测试网络协议栈是否正常工作。

  3. 200.10.10.3 200.10.10.3 是一个普通的单播IP地址,可以作为源IP地址或目的IP地址使用。

  4. 255.255.255.255 255.255.255.255 是受限广播地址,用于向本地网络中的所有主机发送广播消息。它通常只能作为目的IP地址使用,而不能作为源IP地址。

因此,题目中只能作为源IP地址但不能作为目的IP地址的是 0.0.0.0 0.0.0.0 。

正确答案:A

进入练习

第 37 题

计算机网络
2 分

直接封装RIP、OSPF、BGP 报文的协议分别是( )。

A. TCP、UDP、IP

B. TCP、IP、UDP

C. UDP、TCP、IP

D. UDP、IP、TCP

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

参考答案:D

题目详解:
RIP、OSPF 和 BGP 是三种常见的路由协议,它们分别使用不同的传输协议进行报文封装:

  1. RIP(Routing Information Protocol):

    • RIP 使用 UDP UDP 作为传输协议,端口号为 520 520 。
    • RIP 报文直接封装在 UDP UDP 数据报中。
  2. OSPF(Open Shortest Path First):

    • OSPF 直接运行在 IP IP 之上,协议号为 89 89 。
    • OSPF 报文直接封装在 IP IP 数据包中,不依赖 TCP TCP 或 UDP UDP 。
  3. BGP(Border Gateway Protocol):

    • BGP 使用 TCP TCP 作为传输协议,端口号为 179 179 。
    • BGP 报文通过 TCP TCP 连接可靠传输。

因此,直接封装 RIP、OSPF、BGP 报文的协议分别是 UDP UDP 、 IP IP 、 TCP TCP 。

正确答案:D

进入练习

第 38 题

计算机网络
2 分

若将网络 21.3.0.0/16 划分为 128 个规模相同的子网,则每个子网可分配的最大 IP 地址个数是( )。

A. 254

B. 256

C. 510

D. 512

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

参考答案:C

题目详解:
首先,原始网络是 21.3.0.0/16 21.3.0.0/16 ,这意味着网络前缀是 16 16 位,主机部分是 32−16=16 32 - 16 = 16 位,可分配的 IP 地址总数是 216−2=65534 2^{16} - 2 = 65534 (减去全 0 和全 1 的地址)。

现在需要将该网络划分为 128 128 个规模相同的子网。因为 128=27 128 = 2^7 ,所以需要从主机部分借用 7 7 位作为子网位。新的子网掩码长度是 16+7=23 16 + 7 = 23 位。

剩下的主机部分是 32−23=9 32 - 23 = 9 位,因此每个子网可分配的 IP 地址个数是 29−2=512−2=510 2^9 - 2 = 512 - 2 = 510 (减去全 0 和全 1 的地址)。

正确答案:C

进入练习

第 39 题

计算机网络
2 分

若甲向乙发起一个TCP 连接,最大段长MSS = 1KB,RTT = 5ms,乙开辟的接收缓存为 64KB, 则甲从连接建立成功至发送窗口达到 32KB, 需经过的时间至少是( )。

A. 25ms

B. 30ms

C. 160ms

D. 165ms

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

参考答案:A

题目详解:
在TCP连接建立后,发送窗口会通过慢启动算法逐渐增大。慢启动阶段,发送窗口大小 cwnd cwnd 从1个MSS开始,每经过一个RTT时间,cwnd cwnd 会翻倍。具体过程如下:

  1. 初始时,cwnd=1 MSS=1 KB cwnd = 1 \text{ MSS} = 1 \text{ KB} 。
  2. 经过1个RTT(5ms),cwnd cwnd 翻倍为 2 KB 2 \text{ KB} 。
  3. 经过2个RTT(10ms),cwnd cwnd 翻倍为 4 KB 4 \text{ KB} 。
  4. 经过3个RTT(15ms),cwnd cwnd 翻倍为 8 KB 8 \text{ KB} 。
  5. 经过4个RTT(20ms),cwnd cwnd 翻倍为 16 KB 16 \text{ KB} 。
  6. 经过5个RTT(25ms),cwnd cwnd 翻倍为 32 KB 32 \text{ KB} 。

因此,甲从连接建立成功至发送窗口达到 32 KB 32 \text{ KB} ,至少需要经过 5×RTT=5×5 ms=25 ms 5 \times \text{RTT} = 5 \times 5 \text{ ms} = 25 \text{ ms} 。

正确答案:A

进入练习

第 40 题

计算机网络
2 分

下列关于FTP 协议的叙述中,错误的是( )。

A. 数据连接在每次数据传输完毕后就关闭

B. 控制连接在整个会话期间保持打开状态

C. 服务器与客户端的TCP 20 端口建立数据连接

D. 客户端与服务器的TCP 21 端口建立控制连接

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

参考答案:C

题目详解:
FTP(文件传输协议)使用两个独立的TCP连接:控制连接和数据连接。以下是各选项的详细分析:

A. 数据连接在每次数据传输完毕后就关闭
这是正确的。FTP的数据连接是“按需建立”的,每次传输文件时建立,传输完成后立即关闭。

B. 控制连接在整个会话期间保持打开状态
这是正确的。控制连接用于传输命令和响应,在整个FTP会话期间始终保持打开。

C. 服务器与客户端的TCP 20 端口建立数据连接
这是错误的。在主动模式(Active Mode)下,服务器确实从TCP 20端口发起数据连接,但客户端会随机选择一个端口(非20)来接收数据连接。在被动模式(Passive Mode)下,服务器会随机选择一个端口(非20)用于数据连接。因此,数据连接的端口并不固定为20。

D. 客户端与服务器的TCP 21 端口建立控制连接
这是正确的。控制连接默认使用服务器的TCP 21端口。

正确答案:C

进入练习

综合应用题

7 题 · 共 72 分

第 41 题

数据结构
15 分

(15分)请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两棵表达式树作为算法的输入时,输出的等价中缀表达式分别为(a+b)*(c*(-d))和(a*b)+(-(c-d))。

2017-41

二叉树结点定义如下:

cpp 复制代码
typedef struct node{
	char data[10]; //存储操作数或操作符
	struct node *left, *right;
}BTree;

要求:

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

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

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

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

表达式树的中序序列加上必要的括号即为等价的中缀表达式。可以基于二叉树的中序遍历策略得到所需的表达式。(3 分)

表达式树中分支结点所对应的子表达式的计算次序,由该分支结点所处的位置决定。为得到正确的中缀表达式,需要在生成遍历序列的同时,在适当位置增加必要的括号。显然,表达式的最外层(对应根结点)及操作数(对应叶结点)不需要添加括号。(2 分)

2、算法实现(10 分)

c 复制代码
void preorder(node *root, int depth) {
  if (!root) {
    return;
  }
  bool isRoot = (depth == 1);
  bool isLeaf = (!root->left && !root->right);
  if (!isRoot && !isLeaf) {
    printf("(");
  }
  preorder(root->left, depth+1);
  printf("%s", root->data);
  preorder(root->right, depth+1);
  if (!isRoot && !isLeaf) {
    printf(")");
  }
}

void solve(node *root) {
  preorder(root, 1);
}

将二叉树的中序遍历递归算法稍加改造即可得本题答案。除根结点和叶结点外,遍历到其他结点时在遍历其左子树之前加上左括号,在遍历完右子树后加上右括号。

【评分说明】①若考生设计的算法满足题目的功能要求,则(1)、(2) 根据所实现算法的策略及输出结果给分,评分标准见下表。

分数 备注
15 采用中序遍历算法且正确,括号嵌套正确,层数适当
14 采用中序遍历算法且正确,括号嵌套正确,但括号嵌套层数过多。例如,表达式最外层加上括号,或操作数加括号,如 (a)
11 采用中序遍历算法,但括号嵌套层数不完全正确。例如,左右括号数量不匹配
9 采用中序遍历算法,但没有考虑括号
≤7 其他

②若考生采用其他方法得到正确结果,可参照①的评分标准给分。

③如果程序中使用了求结点深度等辅助函数,但没有给出相应的实现过程,只要考生进 行了必要的说明,可不扣分。

④若在算法的基本设计思想描述中因文字表达没有清晰反映出算法思路,但在算法实现 中能够表达出算法思想且正确的,则可参照①的标准给分。

⑤若算法的基本设计思想描述或算法实现中部分正确,可参照①中各种情况的相应给分标准酌情给分。

进入练习

第 42 题

数据结构
8 分

(8 分)使用Prim (普里姆)算法求带权连通图的最小(代价)生成树(MST)。请回答下列问题。

2017-42

(1)对下列图G, 从顶点A 开始求G 的MST, 依次给出按算法选出的边。

(2)图G 的MST 是唯一的吗?

(3)对任意的带权连通图,满足什么条件时,其MST 是唯一的?

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

题目详解:
1)Prim 算法属于贪心策略。算法从一个任意的顶点开始,一直长大到覆盖图中所有顶点为止。算法每一步在连接树集合 SS 中顶点和其他顶点的边中,选择一条使得树的总权重增加最小的边加入集合 SS。当算法终止时,SS 就是最小生成树。

  1. SS 中顶点为 AA,候选边为 (A,D),(A,B),(A,E)(A,D),(A,B),(A,E),选择 (A,D)(A,D) 加入 SS。
  2. SS 中顶点为 A,DA,D,候选边为 (A,B),(A,E),(D,E),(C,D)(A,B),(A,E),(D,E),(C,D),选择 (D,E)(D,E) 加入 SS。
  3. SS 中顶点为 A,D,EA,D,E,候选边为 (A,B),(C,D),(C,E)(A,B),(C,D),(C,E),选择 (C,E)(C,E) 加入 SS。
  4. SS 中顶点为 A,D,E,CA,D,E,C,候选边为 (A,B),(B,C)(A,B),(B,C),选择 (B,C)(B,C) 加入 SS。
  5. SS 就是最小生成树。

依次选出的边为 (A,D),(D,E),(C,E),(B,C)(A,D),(D,E),(C,E),(B,C)(4 分)

【评分说明】每正确选对一条边且次序正确,给 1 分。若考生选择的边正确,但次序不完全正确,酌情给分。

2)图 GG 的 MST 是唯一的。(2 分)第一小题的最小生成树包括了图中权值最小的四条边,其他边都比这四条边大,所以此图的 MST 唯一。

3)当带权连通图的任意一个环中所包含的边的权值均不相同时,其 MST 是唯一的。(2 分)此题不要求回答充分必要条件,所以回答一个限制边权值的充分条件即可。

【评分说明】①若考生答案中给出的是其他充分条件,例如“带权连通图的所有边的权值均不相同”,同样给分。

②若考生给出的充分条件对图的顶点数和边数做了某些限制,例如,限制了图中顶点的个数(顶点个数少于 3 个)、限制了图的形状(图中没有环)等,则最高给 1 分。

③答案部分正确,酌情给分。

进入练习

第 43 题

计算机组成原理
14 分
2017-43
cpp 复制代码
int f1(unsigned n){
    int sum=1, power=1;
    for(unsigned i=0;i<=n-1;i++){
        power *= 2;
        sum += power;
	}
return sum;
}

将f1中的int 都改为float, 可得到计算f(n)的另一个函数f2。假设unsigned 和int 型数据都占 32位,float 采用IEEE 754 单精度标准。请回答下列问题。

(1)当n = 0 时,f1 会出现死循环,为什么?若将f1 中的变量i 和n 都定义为int 型,则f1是否还会出现死循环?为什么?

(2)f1(23)和f2(23)的返回值是否相等?机器数各是什么(用十六进制表示)?

(3)f1(24)和f2(24)的返回值分别为 33 554 431 和 33 554 432.0, 为什么不相等?

(4)f(31) = 232 -1, 而f1(31)的返回值却为-1, 为什么?若使f1(n)的返回值与f(n)相等,则最大的n 是多少?

(5)f2(127)的机器数为 7F80 0000H, 对应的值是什么?若使:f2(n)的结果不溢出,则最大的n 是多少?若使f2(n)的结果精确(无舍入),则最大的n 是多少?

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

题目详解:
1)由于 ii 和 nn 是 unsigned 型,故 i ≤ n - l 是无符号数比较,n = 0 时,n - 1 的机器数为全 1,值是 232−12^{32} - 1,为 unsigned 型可表示的最大数,条件 i ≤ n - 1 永真,因此出现死循环。(2 分)

若 ii 和 nn 改为 int 类型则不会出现死循环。(1 分)

因为 i ≤ n - 1 是带符号整数比较,n = 0 时,n - 1 的值是 −1-1,当 i = 0 时条件 i ≤ n - 1 不成立,此时退出 for 循环。(1 分)

2)f1(23) 与 f2(23) 的返回值相等。(1 分)f(23) = $2^{23+1} - 1 = 2^{24} - 1$,它的二进制形式是 2424 个 11。int 占 3232 位,没有溢出。float 有 11 个符号位,88 个指数位,2323 个底数位,2323 个底数位可以表示 2424 位的底数。所以两者返回值相等。

f1(23) 的机器数是 00FF FFFFH。(1 分)

f2(23) 的机器数是 4B7F FFFFH。(1 分)

显而易见前者是 2424 个 11,即 0000 0000 1111 1111 1111 1111 1111 1111_{(2)},后者符号位是 00,指数位为 23+12710=10010110223 + 127_{10} = 1001 0110_{2},底数位是 111 1111 1111 1111 1111 1111_{2}。

3)当 n = 24 时,f(24) = 1 1111 1111 1111 1111 1111 1111 B,而 float 型数只有 2424 位有效位,舍入后数值增大,所以 f2(24) 比 f1(24) 大 11。(1 分)

【评分说明】只要说明 f2(24) 需舍入处理即可给分。

4)显然 f(31) 已超出了 int 型数据的表示范围,用 f1(31) 实现时得到的机器数为 3232 个 11,作为 int 型数解释时其值为 −1-1,即 f1(31) 的返回值为 −1-1。(1 分)

因为 int 型最大可表示数是 00 后面加 3131 个 11,故使 f1(n) 的返回值与 f(n) 相等的最大 nn 值是 3030。(1 分)

【评分说明】对于第二问,只要给出 n=30n = 30 即可给分。

5)IEEE754 标准用“阶码全 11、尾数全 00”表示无穷大。f2 返回值为 float 型,机器数 7F800000H 对应的值是 +∞+\infty。(1 分)

当 n=126n = 126 时,f(126) = $2^{127} - 1 = 1.1…1 \times 2^{126}$,对应阶码为 127+126=253127 + 126 = 253,尾数部分舍入后阶码加 11,最终阶码为 254254,是 IEEE754 单精度格式表示的最大阶码。故使 f2 结果不溢出的最大 nn 值为 126126。(1 分)

当 n=23n = 23 时,f(23) 为 2424 位 11,float 型数有 2424 位有效位,所以不需舍入,结果精确。故使 f2 获得精确结果的最大 nn 值为 2323。(1 分)

【评分说明】对于第二问,只要给出 n=23n = 23,即可给分。对于第三问,只要给出 n=126n = 126,即可给分。

进入练习

第 44 题

计算机组成原理
11 分

(10 分)在按字节编址的计算机M 上, 题43 中f1 的部分源程序(阴影部分)与对应的机器级代码(包括指令的虚拟地址)如下图所示。

2017-44

其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令。请回答下列问题。

(1)计算机M 是RISC 还是CISC? 为什么?

(2)f1 的机器指令代码共占多少字节?要求给出计算过程。

(3)第 20 条指令cmp 通过i 减n-1 实现对i 和n-1 的比较。执行f1(0)过程中,当i=0 时,cmp指令执行后, 进/借位标志CF 的内容是什么?要求给出计算过程。

(4)第 23 条指令shl 通过左移操作实现了power*2 运算,在f2 中能否也用shl 指令实现power*2? 为什么?

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

题目详解:
(1) 判断 M 的指令系统类型

  • 答案: M 为 CISC。(1 分)
  • 理由: M 的指令长短不一,不符合 RISC 指令系统特点。(1 分)

(2) 计算 f1 的机器代码长度

  • 答案: f1 的机器代码占 96B。(1 分)
  • 计算过程:
    f1 的第一条指令 push ebp 的虚拟地址为 0040 1020H,最后一条指令 ret 的虚拟地址为 0040 107FH。
    因此,机器指令代码长度为:
    0040 107FH - 0040 1020H + 1 = 60H = 96 字节。(1 分)

(3) 确定 CF 的值

  • 答案: CF = 1。(1 分)
  • 分析:
    cmp 指令实现 i 与 n - 1 的比较功能(减法运算)。
    执行 f1(0) 时,n = 0,i = 0 时:
    • i = 0000 0000H
    • n - 1 = FFFF FFFFH
      执行第 20 条指令时,补码运算器计算 0 减 FFFF FFFFH,即:
      0000 0000H + 0000 0001H = 0000 0001H
      此时进位输出 C = 0,减法借位标志 CF = C ⊕ 1 = 1。(2 分)

(4) 解释 f2 中不能用 shl 指令实现 power*2

  • 答案: f2 中不能用 shl 指令实现 power*2。(1 分)
  • 理由:
    shl 指令用于将整数的所有有效位整体左移;而 power 是 float 类型,其机器数包含阶码部分而非最高有效位。
    将 float 类型整体左移无法实现“乘 2”功能,因此不能用 shl 指令。(2 分)
    补充: 浮点数运算比整型运算更复杂且耗时更长。
进入练习

第 45 题

操作系统
7 分

(7 分)假定题 44 给出的计算机M 采用二级分页虚拟存储管理方式,虚拟地址格式如下:页目录号(10 位) 页表索引(10 位) 页内偏移量(12 位)请针对题 43 的函数f1 和题 44 中的机器指令代码, 回答下列问题。2017-45

(1)函数f1 的机器指令代码占多少页?

(2)取第 1 条指令(push ebp)时, 若在进行地址变换的过程中需要访问内存中的页目录和页表, 则会分别访问它们各自的第几个表项(编号从 0 开始)?

(3)M 的I/O 采用中断控制方式。若进程P 在调用f1 之前通过scanf()获取n 的值,则在执行scanf()的过程中,进程P 的状态会如何变化? CPU 是否会进入内核态?

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

题目详解:
1)函数 1 的代码段中所有指令的虚拟地址的高 20 位相同,因此 1 的机器指令代码在同 一页中,仅占用 1 页。(1 分)页目录号用于寻找页目录的表项,该表项包含页表的位置。页表 索引用于寻找页表的表项,该表项包含页的位置。

2)push ebp 指令的虚拟地址的最高 10 位(页目录号)为 0000000001,中间 10 位(页 表索引)为 0000000001,所以,取该指令时访问了页目录的第 1 个表项,(1 分)在对应的页 表中访问了第 1 个表项。(1 分)

3)在执行 scanf0 的过程中,进程 P 因等待输入而从执行态变为阻塞态。(1 分)输入结束 时,P 被中断处理程序唤醒,变为就绪态。(1 分)P 被调度程序调度,变为运行态。(1 分)CPU 状态会从用户态变为内核态。(1 分)

进入练习

第 46 题

操作系统
8 分

(8 分)某进程中有 3 个并发执行的线程thread1、thread2和thread3, 其伪代码如下所示。请添加必要的信号量和 P、V(或 wait()、signal())操作,要求确保线程互斥访问临界资源,并且最大限度地并发执行。

2017-46
查看答案与解析收起答案与解析

题目详解:
先找出线程对在各个变量上的互斥、并发关系。如果是一读一写或两个都是写,那么这就是互斥关系。每一个互斥关系都需要一个信号量进行调节。

c 复制代码
// 冲突:
// t1 和 t3 关于 y 有读写冲突
// t2 和 t3 关于 y, z 都有读写冲突

// 解决 t1 和 t3 关于 y 读写冲突
semaphore y_mutex1 = 1;

semaphore y_mutex2 = 1;
semaphore z_mutex = 1;


// 全局变量 x y z
cnum x, y, z;

thread1()
{
  cnum w;
  // 读 x, y
  P(y_mutex1);
  w = add(x, y);
  V(y_mutex1);
  // ...
}

thread2()
{
  cnum w;
  // 读 y, z
  P(z_mutex);
  P(y_mutex2);
  w = add(y, z);
  V(y_mutex2);
  V(z_mutex);
  // ...
}

thread3()
{
  cnum w;
  w.a = 1;
  w.b = 1;
  // 写 z
  P(z_mutex);
  z = add(z, w);
  V(z_mutex);
  // 写 y
  P(y_mutex1);
  P(y_mutex2);
  y = add(y, w);
  V(y_mutex2);
  V(y_mutex1);
  // ...
}

【评分标准】

① 各线程与变量之间的互斥、并发情况及相应评分见下表。

变量/线程对 thread1 和 thread2 thread2 和 thread3 thread3 和 thread4 给分
x 不共享 不共享 不共享 1 分
y 同时读 读写互斥 读写互斥 3 分
z 不共享 读写互斥 不共享 1 分

② 考生仅使用一个互斥信号量,互斥代码部分的得分最多给 2 分。

③ 答案部分正确,酌情给分。

进入练习

第 47 题

计算机网络
9 分

(9 分)甲乙双方均采用后退N 帧协议(GBN)进行持续的双向数据传输, 且双方始终采用捎带确认,帧长均为 1000B。Sx,y 和Rx,y 分别表示甲方和乙方发送的数据帧,其中 x 是发送序号,y是确认序号(表示希望接收对方的下一帧序号);数据帧的发送序号和确认序号字段均为比 3 特。 信道传输速率为 100Mpbs , RTT = 0.96ms。 下图给出了甲方发送数据帧和接收数据帧的两种场景,其中t0 为初始时刻,此时甲方的发送和确认序号均为 0,t1 时刻甲方有足够多的数据待发送。请回答下列问题。

2017-47

(1)对于图(a),t0 时刻到 t1 时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少?正确接收的是哪几个帧?(请用Sx, y 形式给出。)

(2)对于图(a),从t1 时刻起,甲方在不出现超时且未收到乙方新的数据帧之前,最多还可以发送多少个数据帧?其中第一个帧和最后一个帧分别是哪个?(请用Sx, y 形式给出。)

(3)对于图(b),从t1 时刻起, 甲方在不出现新的超时且未收到乙方新的数据帧之前,需要重发多少个数据帧?重发的第一个帧是哪个?(请用Sx, y 形式给出。)

(4)甲方可以达到的最大信道利用率是多少?

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

题目详解:
1)t0t_0 时刻到 tt 时刻期间,甲方可以断定乙方已正确接收了 3 个数据帧(1 分),分别是 S0,0S_{0,0}、S1,0S_{1,0}、S2,0S_{2,0}(1 分)。R3,3R_{3,3} 说明乙发送的数据帧确认号是 3,即希望甲发送序号 3 的数据帧,说明乙已经接收了序号为 0~2 的数据帧。

2)从 t1t_1 时刻起,甲方最多还可以发送 5 个数据帧(1 分),其中第一个帧是 S5,2S_{5,2}(1 分),最后一个数据帧是 S1,2S_{1,2}(1 分)。发送序号 3 位,有 8 个序号。在 GBN 协议中,序号个数 ≥ 发送窗口 + 1,所以这里发送窗口最大为 7。此时已发送了 S3,0S_{3,0} 和 S4,1S_{4,1},所以最多还可以发送 5 个帧。

3)甲方需要重发 3 个数据帧(1 分),重发的第一个帧是 S2,3S_{2,3}(1 分)。在 GBN 协议中,接收方发送了 N 帧后,检测出错,则需要发送出错帧及其之后的帧。S2,0S_{2,0} 超时,所以重发的第一帧是 S2S_2。已收到乙的 R2R_2 帧,所以确认号应为 3。

7×8×1000100×1060.96×10−3+2×8×1000100×106×100%=50%\frac{7 \times \frac{8 \times 1000}{100 \times 10^6}}{0.96 \times 10^{-3} + 2 \times \frac{8 \times 1000}{100 \times 10^6}} \times 100\% = 50\%

4)甲方可以达到的最大信道利用率是

U=发送数据的时间/从开始发送第一帧到收到第一个确认帧的时间=N⋅TdTd+RTT+TaU = 发送数据的时间/从开始发送第一帧到收到第一个确认帧的时间 = \frac{N \cdot T_d}{T_d + RTT + T_a}

UU 是信道利用率,NN 是发送窗口的最大值,TdT_d 是发送一数据帧的时间,RTTRTT 是往返时间,TaT_a 是发送一确认帧的时间。这里采用捎带确认,Td=TaT_d = T_a。

【评分说明】答案部分正确,酌情给分。

进入练习