2011 年 408 真题

本节正在编写中,敬请期待。

选择题

数据结构

1

设 n 是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。

x = 2;
while (x < n / 2)
    x = 2 * x;
正确答案: A
在程序中,执行频率最高的语句为 x = x * 2,设该语句总共执行了 T(n) 次,则 $2^{T(n)+1} \le n/2$, 故 $T(n) = log_{2}(n/2) - 1 = log_{2}n - 2$,得 $T(n) = O(log_{2}n)$
2

元素 a,b,c,d,e 依次进入初始为空的栈中,若元素进栈后可停留、可出栈,知道所有元素都出栈,则在所有可能的出现序列中,一元素 d 开头的序列个数是( )。

正确答案: B
d 为第 1 个出栈元素,则 d 之前的元素必定是进栈后在栈中停留。因而出栈顺序必为 d_c_b_a_, e 的顺序不定,在任一"_“上都有可能,一共有 4 种可能。
3

已知循环队列存储在一维数组 A[0..n-1]中,且队列非空时 front 和 rear 分别指向队头元素和队尾元素。若初始时队列空,且要求第一个进入队列的元素存储在 A[0]处,则初始时 front 和 rear 的值分别是______。

正确答案: B
根据题意,第一个元素进入队列后存储在 A[0] 处,此时 front 和 rear 值都为 0 。入队时由于 要执行(rear+ 1)%n 操作,所以如果入队后指针指向 o, 则 rear 初值为 n-1, 而由千第一个元素在 A[0] 中,插入操作只改变 rear 指针,所以 front 为 0 不变。
4

若一棵完全二叉树有 768 个结点,则该二叉树中叶结点的个数是()

正确答案: C
根据完全二叉树的性质,最后一个分支结点的序号为 $\lfloor n/2 \rfloor = \lfloor 768/2 \rfloor = 384$, 故叶子结点的个数为 768 - 384 = 384 。
5

若一棵二叉树的前序遍历序列和后序遍历序列分别为 1,2,3,4 和 4,3,2,1,则该二叉树的 中序遍历序列不会是()

正确答案: C
前序序列为 NLR,后序序列为 LRN,由于前序序列和后序序列刚好相反,故不可能存在一 个结点同时存在左右孩子,即二叉树的高度为 4.1 为根结点,由于根结点只能有左孩子(或右 孩子),因此,在中序序列中,1 或在序列首或在序列尾,ABCD 皆满足要求。仅考虑以 1 的孩子 结点 2 为根结点的子树,它也只能有左孩子(或右孩子),因此,在中序序列中,2 或在序列首或 序列尾,ABD 皆满足要求
6

已知一棵有 2011 个结点的树,其叶结点个数为 116,该树对应的二叉树中无右孩子的结点个数是( )。

正确答案: D
树转换为二叉树时,树中每一个分支结点的所有子结点中的最右子结点无右孩子,根结点转 换后也没有右孩子,因此,对应的二叉树中无右孩子的结点个数=分支结点数+1=2011-116+ 1= 1896。通常本题应采用特殊法解, 设题意中的树是如右图所示 的结构,则 对应的二叉树中仅有前 115 个叶结点有右孩子,故 无右孩子的结点个数= 2011 - 115 = 1896。
7

对于下列关键字序列,不可能构成某二叉排序树中一条查找路径的序列是 ( )。

正确答案: A
在二叉排序树中,左子树结点值小于根结点,右子树结点 值大于根结点。在选项 A 中, 当查找到 91 后再向 24 查找,说 明这一 条路径(左子树)之后查找的数都要比 91 小,而后面却 查找到了 94 (解题过程中,建议配合画图),因此错误。
8

下列关于图的叙述中,正确的是()

Ⅰ. 回路是简单路径

Ⅱ.存储稀疏图,用邻接矩阵比邻接表更省空间

Ⅲ.若有向图中存在拓扑序列,则该图不存在回路

正确答案: C
第一个顶点和最后一个顶点相同的路径称为回路;序列中项点不重复出现的路径称为简单路 径;回路显然不是简单路径,故 I 错误;稀疏图是边比较少的情况,此时用邻接矩阵的空间复杂 度为 $O(n)$ ,必将浪费大量的空间,而邻接表的空间复杂度为 $O(n+e)$,应该选用邻接表,故 IⅡ错 误。存在回路的有向图不存在拓扑序列,若拓扑排序输出结束后所余下的顶点都有前驱,则说明 只得到了部分顶点的拓扑有序序列,图中存在回路,故Ⅱ正确。
9

为提高哈希(Hash)表的查找效率,可以采取的正确措施是______。

Ⅰ.增大装填因子

Ⅱ.设计冲突少的哈希函数

Ⅲ.处理冲突时避免产生堆积现象

正确答案: D
Hash 表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与 装填因子(表中记录数与表长之比)的大小成正比,即装填得越满越容易发生冲突,I 错误。Ⅱ 显然正确。采用合适的处理冲突的方式避免产生聚集现象,也将提高查找效率,例如用拉链法解 决冲突时就不存在聚集现象,用线性探测法解决冲突时易引起聚集现象,Ⅲ正确。
10

为实现快速排序算法,待排序序列宜采用的存储方式是()

正确答案: A
对绝大部分内部排序而言,只适用于顺序存储结构。快速排序在排序的过程中,既要从后向 前查找,也要从前向后查找,因此宜采用顺序存储。
11

已知序列 25,13,10,12,9 是大根堆,在序列尾部插入新元素 18,将其再调整为大根堆,调整过程中元素之间进行的比较次数是()

正确答案: B

插入 18 后,首先将 18 与 10 比较,交换位置,再将 18 与 25 比较,不交换位置。共比较了 2 次, 调整的过程如下图所示。

25
13
10
12
9
25
13
10
12
9
18
25
13
10
12
9
18
25
13
18
12
9
10
插入结点 18
插入结点 10
插入结点 25

组成原理

12

下列选项中,描述浮点数操作速度指标的是( )。

正确答案: D
MIPS 是每秒执行多少百万条指令,适用千衡量标量机的性能。 CPI 是平均每条指令的时钟 周期数。 IPC 是 CPI 的倒数,即每个时钟周期执行的指令数。MFLOPS 是每秒执行多少百万条浮 点数运算,用来描述浮点数运算速度,适用于衡量向量机的性能。
13

float 型数据通常用 IEEE754 单精度浮点数格式表示。若编译器将 float 型变量 x 分配在一个 32 位浮点寄存器 FR1 中,且 x=-8.25,则 FR1 的内容是( )。

正确答案: A

本题题意即考查 IEEE 754 单精度浮点数的表示。先将 x 转换成二进制为 $-1000.01 = -1.00001 \times 2^3$, 其次计算阶码 E, 根据 IEEE 754 单精度浮点数格式,有 E-127=3, 故 E=130, 转换成二进制 为 1000 0010。最后,根据 IEEE 754 标准,最高位的 “1” 是被隐藏的。

IEEE 754 单精度浮点数格式:数符(1 位)+阶码 (8 位)+尾数 (23 位)。

故, FRI 内容为 1; 1000 0010; 0000 10000 0000 0000 0000 000。

即,1100 0001 0000 0100 0000 0000 0000 0000= C104000H。

本题易误选 D, 未考虑 IEEE 754 标准隐含最高位 1 的情况,偏置值是 128。

14

下列各类存储器中,不采用随机存取方式的是( )。

正确答案: B
随机存取方式是指 CPU 可以对存储器的任一存储单元中的内容随机存取, 而且存取时间与 存储单元的物理位置无关。选项 A 、 C、 D 均采用随机存取方式, CD-ROM 即光盘,采用串行存 取方式。
15

某计算机存储器按字节编址,主存地址空间大小为 64MB,现用 4M×8 位的 RAM 芯片组成 32MB 的主存储器,则存储器地址寄存器 MAR 的位数至少是( )。

正确答案: D
主存按字节编址,地址空间大小为 64MB,MAR 的寻址范围为 64M = $2^{26}$,故为 26 位。实际 的主存容量 32MB 不能代表 MAR 的位数,考虑到存储器扩展的需要,MAR 应保证访问到整个主 存地址空间,反过来,MAR 的位数决定了主存地址空间的大小。
16

偏移寻址将某个寄存器内容与一个形式地址相加而生成有效地址。下列寻址方式中,不属于偏移寻址方式的是( )。

正确答案: A
间接寻址不需要寄存器,EA=(A)。基址寻址 EA=A+ 基址寄存器 BR 内容;相对寻址 EA= A+ 程序计数器 PC 内容;变址寻址 EA=A+ 变址寄存器 IX 内容。后三者都是将某个寄存器内容 与一个形式地址相加而形成有效地址,故选 A。
17

某机器有一个标志寄存器,其中有进位/借位标志 CF、零标志 ZF、符号标志 SF 和溢出标志 OF,条件转移指令 bgt(无符号整数比较大于时转移)的转移条件是(  )

正确答案: C
假设两个无符号整数 A 和 B,bgt 指令会将 A 和 B 进行比较,也就是将 A 和 B 相减。如果 A>B, 则 A-B 肯定无进位/借位, 也不为 0 (为 0 时表示两数相同), 故而 CF 和 ZF 均为 o, 选 C。其 余选项中用到了符号标志 SF 和溢出标志 OF, 显然应当排除。
18

下列给出的指令系统特点中,有利于实现指令流水线的是( )。

Ⅰ. 指令格式规整且长度一致

Ⅱ. 指令和数据按边界对齐存放

Ⅲ. 只有 Load/Store 指令才能对操作数进行存储访问

正确答案: D
指令定长、 对齐和仅 Load/Store 指令访存, 这 3 个都是 RISC 的特征,指令格式规整且长度 一 致能大大简化指令译码的复杂度,有利于 实现流水线。指令和数据按边界对齐存放能保证在一 个存取 周期内取到需要的 数据和指令,不用多余的延迟等待, 也有利于实现流水线。 只有 Load/Store 指令才能对操作数进行存储访问使取指令、 取操作数操作简化且时间长度固定,能够 有效地简化流水线的复杂度。
19

假定不采用 Cache 和指令预取技术,且机器处于“开中断”状态,则在下列有关指令执行的叙述中,错误的是( )。

正确答案: C
由于不采用指令预取技术, 每个指令周期都需要取指令,而不采用 Cache 技术, 则每次取指 令都至少要访问内存一次(当指令字长与存储字长相等且按边界对齐时),A 正确。时钟周期是 CPU 的最小时间单位, 每个指令周期一定大于或等于 一个 CPU 时钟周期,B 正确。 即使是空操 作指令, 在取指操作后,PC 也会自动加 1, C 错误。 由于机器处于 “ 开中断 ” 状态, 在 每条指令 执行结束时都可能被外部中断而 打断。
20

在系统总线的数据线上,不可能传输的是( )。

正确答案: C
在取指令时,指令便是在数据线上传输的。操作数显然在数据线上传输。中断类型号用以指 出中断向量的地址, CPU 响应中断请求后, 将中断应答信号-(�TR)发回到数据总线上, CPU 从数据总线上读取中断类型号后, 查找中断向量表, 找到相应的中断处理程序入口。而握手(应 答)信号属于通信联络控制信号,应在通信总线上传输。
21

某计算机有五级中断 L4~L0,中断屏蔽字为 M4M3M2M1M0 , Mi=1(0≤i≤4) 表示对 Li 级中断进行屏蔽。若中断响应优先级从高到低的顺序是 L0→L1→L2→L3→L4 ,且要求中断处理优先级从高到低的顺序是 L4→L0→L2→L1→L3 ,则 L1 的中断处理程序中设置的中断屏蔽字是( )。

正确答案: D
高优先级置 0 表示可被中断,比该中断优先级低(或相等)的置 l 表示不可被中断,$L_1$ 只能 屏蔽 $L_3$ 和其自身, 故 $M_3$ 和 $M_1$ 置 1, 中断屏蔽字 $M_4 M_3 M_2 M_1 M_0 = 01010$。
22

某计算机处理器主频为 50MHz,采用定时查询方式控制设备 A 的 I/O,查询程序运行一次所用的时钟周期数至少为 500。在设备 A 工作期间,为数据不丢失,每秒需对其查询至少 200 次,则 CPU 用于设备 A 的 I/O 的时间占整个 CPU 时间的百分比至少是( )。

正确答案: C
每秒至少查询 200 次,每次查询至少 500 个 时钟周期,总的时钟周期数为 200 × 500 =100000, 因此 CPU 用于设备 A 的 I/O 的时间占 CPU 时间比为 100000/50M =0.20%。

操作系统

23

下列选项中,满足短任务优先且不会发生饥饿现象的调度算法是( )。

正确答案: B
高响应比优先算法是一种综合考虑任务长度和等待时间的调度算法, 响应比=(等待时间+ 执行时间)/执行时间。高响应比优先算法在等待时间相同的情况下,作业执行 时间越短则响应比 越高, 满足短任务优先。随着长任务的等待时间增加, 响应比也会变大, 执行机会也就增大, 所以不会发生饥饿现象。先来先服务和时间片轮转不符合短任务优先, 非抢占式短任务优先会 产生饥饿现象。
24

下列选项中,在用户态执行的是( )。

正确答案: A
缺页处理和时钟中断都属千中断,在核心态执行;进程调度是操作系统内核进程, 无须用户 干预, 在核心态执行;命令解释程序属于命令接口,是四个选项中唯 一 能面对用户 的, 它在用户 态执行。
25

在支持多线程的系统中,进程 P 创建的若干线程不能共享的是( )。

正确答案: D
进程是资源分配的基本单位,线程是处理机调度的基本单位。因此, 进程的代码段、进程打 开的文件 、 进程的全局变量等都是进程的资源, 唯有进程中某线程的栈指针是属千线程的, 属于 进程的资源可以共享, 属于线程的栈是独享的, 对其他线程透明。
26

用户程序发出磁盘 I/O 请求后,系统的正确处理流程是( )。

正确答案: B

输入/输出软件 一 般从上到下分为四个层次:用户层、与设备无关的软件层、设备驱动程序以 及中断处理程序。 与设备无 关的软件层也就是系统调用的处理程序。

当用户使用设备时, 首先在用户程序中发起 一 次系统调用,操作系统的内核接到该调用请求 后请求调用处理程序进行处理, 再转到相应的设备驱动程序, 当设备准备好或 所需数据到达后设 备硬件发出中断, 将数据按上述调用顺序逆向回传到用户程序中。

27

某时刻进程的资源使用情况如下表所示。

R1
R2
R3
已分配资源数
尚需资源数
可用资源数
进程
P1
P2
P3
2
1
0
0
2
1
0
0
1
0
1
1
0
3
3
1
2
1
0
2
1
P4
0
0
1
2
0
0
R1
R2
R3
R1
R2
R3

此时的安全序列是( )。

正确答案: D
题应采用排除法,逐个代入分析。当剩余资源分配给 $P_1$, 待 $P_1$ 执行完后,可用资源数为 (2,2,1), 此时仅能满足 $P_4$ 的需求,排除 AB; 接着分配给 $P_4$ , 待 $P_4$ 执行完后, 可用资源数为(2, 2, 2), 此时已 无法满足任何进程的需求, 排除 C。 此外,本题还可以使用银行家算法求解(对于选择题来说,显得过于复杂)。
28

在缺页处理过程中,操作系统执行的操作可能是()。

Ⅰ、修改页表

Ⅱ、磁盘 I/O

Ⅲ、分配页框

正确答案: D
缺页中断产生后,需要在内存中找到空闲页框并分配给需要访问的页(可能涉及页面置换), 之后缺页中断处理程序调用设备驱动程序做磁盘/O,将位于外存上的页面调入内存,调入后需 要修改页表,将页表中代表该页是否在内存的标志位(或有效位)置为 1,并将物理页框号填入 相应位置,若必要还需修改其他相关表项等。
29

当系统发生抖动 (thrashing) 时,可以采取的有效措施是( )。

Ⅰ. 撤销部分进程

Ⅱ. 增加磁盘交换区的容量

Ⅲ. 提高用户进程的优先级

正确答案: A
在具有对换功能的操作系统中,通常把外存分为文件区和对换区。前者用于存放文件,后者 用于存放从内存换出的进程。抖动现象是指刚刚被换出的页很快又要被访问,为此又要换出其他 页,而该页又很快被访问,如此频繁地置换页面,以致大部分时间都花在页面置换上,引起系统 性能下降。撤销部分进程可以减少所要用到的页面数,防止抖动。对换区大小和进程优先级都与 抖动无关。
30

在虚拟内存管理中,地址变换机构将逻辑地址变换为物理地址,形成该逻辑地址的阶段是()。

正确答案: C

编译后的模块需要经过链接才能装载,而链接后形成的地址才是整个程序的完整逻辑地址空 间。以 C 语言为例:C 语言经过预处理(cpp)→编译(ccl)→汇编(as)→链接(ld)产生可执 行文件。其中链接的前一步,产生了可重定位的二进制的目标文件。C 语言采用源文件独立编译 的方法,如程序 main.c,file1.c,file2.c,file1.h,file2.h,在链接的前一步生成了 main.o,file1.o,file2.o, 这些目标模块采用的逻辑地址都从 0 开始,但只是相对于该模块的逻辑地址。链接器将这三个文件, libc 和其他的库文件链接成一个可执行文件。链接阶段主要完成了重定位,形成整个程序的完整逻 辑地址空间。

例如,file1.o 的逻辑地址为 0~1023,main.o 的逻辑地址为 0~1023,假设链接时将 filel.o 链接在 main.0 之后,则重定位之后 fle1.o 对应的逻辑地址就应为 1024~2047。

31

某文件占 10 个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析,假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为 100μs,将缓冲区的数据传送到用户区的时间是 50μs,CPU 对一块数据进行分析的时间为 50μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是( )。

正确答案: B
在单缓冲区中,当上一个磁盘块从缓冲区读入用户区完成时,下一磁盘块才能开始读入,也 就是当最后一块磁盘块读入用户区完毕时所用时间为 150×10=1500μs,加上处理最后一个磁盘块 的时间 50μs,得 1550μs。双缓冲区中,不存在等待磁盘块从缓冲区读入用户区的问题,10 个磁 盘块可以连续从外存读入主存缓冲区,加上将最后一个磁盘块从缓冲区送到用户区的传输时间 50μs 以及处理时间 50μs,也就是 100×10+50+50=1100μs。
32

有两个并发执行的进程 P1 和 P2,共享初值为 1 的变量 x。P1 对 x 加 1,P2 对 x 减 1。加 1 和减 1 操作的指令序列分别如下所示。

P1 // 加 1 操作
load R1, x // 取 x 到寄存器 R1 中
inc R1
store x, R1 // 将 R1 的内容存入 x
P2 // 减 1 操作
load R2, x // 取 x 到寄存器 R2 中
dec R2
store x, R2 // 将 R2 的内容存入 x

两个操作完成后,x 的值( )。

正确答案: C
将 $P_1$ 中 3 条语句依次编号为 1,2,3;$P_2$ 中 3 条语句依次编号为 4,5,6。依次执行 1,2,3,4,5, 6 得结果 1,依次执行 1,2,4,5,6,3 得结果 2,执行 4,5,1,2,3,6 得结果 0。因此结果-1 不可能得出。

计算机网络

33

TCP/IP 参考模型的网络层提供的是( )。

正确答案: A
TCP/IP 的网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。考查 IP 首部,如果是面向连接的, 那么应有用于建立连接的字段, 但是没有;如果提供可靠的服务, 那 么至少应有序号和校验 和两个字段, 但是 IP 分组头中也没有(IP 首部中只是首部校验和)。 通常 有连 接、 可靠 的应用是由运输层的 TCP 实现的。
34

若某通信链路的数据传输速率为 2400 bps,采用 4 相位调制,则该链路的波特率是( )。

正确答案: B
波特率 B 与数据传输率 C 的关系:$C = B log_{2}N$,$N$ 为一个码元所取的离散值个数。采用 $4$ 种 相位,也即可以表示 $4$ 种变化,故一个码元可携带 $log_{2} 4 = 2$ bit 信息,则该链路的波特率 = 比特 率/2 = 1200 波特。
35

数据链路层采用选择重传协议 (SR) 传输数据,发送方已发送了 0~3 号数据帧,现已收到 1 号帧的确认,而 0、2 号帧依次超时,则此时需要重传的帧数是( )。

正确答案: B
在选择重传协议中,接收方逐个确认正确接收的分组,不管接收到的分组是否有序,只要正 确接收就发送选择 ACK 分组进行确认。因此选择重传协议中的 ACK 分组不再具有累积确认的作 用,要特别注意其与 GBN 协议的区别。本题中只收到 1 号帧的确认,0、2 号帧超时,由于对于 1 号帧的确认不具累积确认的作用,因此发送方认为接收方没有收到 0、2 号帧,于是重传这两帧。 因为 3 号帧计时器并无超时,所以暂时不用重传 3 号帧。
36

下列选项中,对正确接收到的数据帧进行确认的 MAC 协议是( )。

正确答案: D
CSMA/CA 是无线局域网标准 802.11 中的协议,它在 CSMA 的基础上增加了冲突避免的功能。 ACK 帧是 CSMA/CA 避免冲突的机制之一,也就是说,只有当发送方收到接收方发回的 ACK 帧 后才确认发出的数据帧已正确到达目的地。
37

某网络拓扑如下图所示,路由器 R1 只有到达子网 192.168.1.0/24 的路由。为使 R1 可以将 IP 分组正确地路由到图中所有子网,则在 R1 中需要增加的一条路由(目的网络,子网掩码,下一跳)是( )。

192.168.1.0/24
192.168.2.0/25
192.168.1.128/25
R1
192.168.1.1
192.168.1.2
R2
192.168.2.1
192.168.2.130
正确答案: D

要使 Rl 能够正确将分组路由到所有子网,则 Rl 中需要有到 192.168.2.0/25 和 192.168.2.128/25 的路由, 分别转换成二进制如下:

192.168.2.0: 11000000 10101000 00000010 00000000

192.168.2.128: 11000000 10101000 00000010 10000000

前 24 位都是相同的,于是可以聚合成超网 192.168.2.0/24, 子网掩码为前 24 位,即 255.255.255.0。下 一跳是与 Rl 直接 相连的 R2 的地址,因此是 192.168.1.2。

38

在子网 192.168.4.0/30 中,能接收目的地址为 192.168.4.3 的 IP 分组的最大主机数是

正确答案: C
首先分析 192.168.4.0/30 这个网络,主机号只占 2 位,地址范围为 192.168.4.0-192.168.4.3, 主机号全 l 时,即 192.168.4.3 是广播地址, 主机号全 0 表示本网络 本身,不作为主机地址使用, 因此可容纳 4 - 2=2 个 主机 。
39

主机甲向主机乙发送一个 (SYN=1, seq=11220) 的 TCP 段,期望与主机乙建立 TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的 TCP 段可能是

正确答案: C
在确认报文段中,同步位 SYN 和确认位 ACK 必须都是 1; 返回的确认号 seq 是甲发送的初 始序号 seq=11220 加 1, 即 ack= 11221; 同时乙也要选择并消耗一个初始序号 seq, seq 值由乙的 TCP 进程任意给出,它与确认号、请求报文段的序号没有任何关系。
40

主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了 3 个连续的 TCP 段,分别包含 300 字节、400 字节和 500 字节的有效载荷,第 3 个段的序号为 900。若主机乙仅正确接收到第 1 和第 3 个段,则主机乙发送给主机甲的确认序号是

正确答案: B
TCP 首部的序号字段是指本报文段数据部分的第一个字节的序号,而确认号是期待收到对方 下 一个报文段的第一个字节的序号 。第三个段的序号为 900, 则第二个段的序号为 900-400=500, 现在主机乙期待收到第二个段,故发给甲的确认号是 500。

解答题

数据结构

41

已知有 6 个顶点(顶点编号为 0~5)的有向带权图 G ,其邻接矩阵 A 为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。

4
6
5
4
3
3
3

要求:

(1) 写出图 G 的邻接矩阵 A 。

(2) 画出有向带权图 G 。

(3) 求图 G 的关键路径,并计算该关键路径的长度。

42

一个长度为 L(L≥1) 的升序序列 S ,处在第 ⌈L/2⌉ 个位置的数称为 S 的中位数。例如,若序列 S1=<11,13,15,17,19> ,则 S1 的中位数是 15 。两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若序列 S2=<2,4,6,8,20> ,则 S1 和 S2 的中位数是 11 。现有两个等长的升序序列 A 和 B ,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列 A 和 B 的中位数。要求:

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

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

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

组成原理

43

假定在一个 8 位字长的计算机中运行如下 C 程序段:

unsigned int x=134;
unsigned int y=246;
int m=x;
int n=y;
unsigned int z1=x-y;
unsigned int z2=x+y;
int k1=m-n;
int k2=m+n;

若编译器编译时将 8 个 8 位寄存器 R1~R8 分别分配给变量 x、y、m、n、z1、z2、k1 和 k2。请回答下列问题。(提示:带符号整数用补码表示)

(1) 执行上述程序段后,寄存器 R1、R5 和 R6 的内容分别是什么(用十六进制表示)?

(2) 执行上述程序段后,变量 m 和 k1 的值分别是多少(用十进制表示)?

(3) 上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用同一个加法器及辅助电路实现?简述理由。

(4) 计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?

44

某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为 16MB,主存(物理)地址空间大小为 1MB,页面大小为 4KB:Cache 采用直接映射方式,共 8 行:主存与 Cache 之间交换的块大小为 32B。系统运行到某一时刻时,页表的部分内容和 Cache 的部分内容分别如题 44-a 图、题 44-b 图所示,图中页框号及标记字段的内容为十六进制形式。

1
06
· · ·
0
1
04
· · ·
1
1
15
· · ·
2
1
02
· · ·
3
0
· · ·
4
1
2B
· · ·
5
0
· · ·
6
1
32
· · ·
7
虚页号
有效位
页框号
· · ·
44-a 图  页表的部分内容
1
020
· · ·
0
0
· · ·
1
1
01D
· · ·
2
1
105
· · ·
3
1
064
· · ·
4
1
01D
· · ·
5
0
· · ·
6
1
27A
· · ·
7
行号
有效位
标记
· · ·
44-b 图  cache 的部分内容

请回答下列问题∶

(1) 虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号(物理页号)?

(2) 使用物理地址访问 Cache 时,物理地址应划分成哪几个字段?要求说明每个字段的位数及在物理地址中的位置。

(3) 虚拟地址 001C60H 所在的页面是否在主存中?若在主存中,则该虚拟地址对应的物理地址是什么?访问该地址时是否 Cache 命中?要求说明理由。

(4) 假定为该机配置一个 4 路组相连的 TLB,该 TLB 共可存放 8 个页表项,若其当前内容(十六进制)如题 44-c 图所示,则此时虚拟地址 024BACH 所在的页面是否在主存中?要求说明理由。

0
1
013
2D
1
0
001
15
0
1
008
7E
1
0
012
1F
有效位
标记
页框号
有效位
标记
页框号
有效位
标记
页框号
有效位
标记
页框号
组号
0
1
44-c 图  TLB 的部分内容

操作系统

45

某银行提供 1 个服务窗口和 10 个顾客等待座位。顾客到达银行时,若有空座位,则到取号机领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:


cobegin
process 顾客 i {
    从取号机获得一个号码;
    等待叫号;
    获得服务;
}

process 营业员 {
    while (TRUE) {
        叫号;
        为顾客服务;
    }
}
coend

请添加必要的信号量和 P、V(或 wait( )、signal( ))操作实现上述过程的互斥和同步。要求写出完整的过程,说明信号量的含义并赋初值。

46

某文件系统为一级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次创建新文件。请回答如下问题∶

(1) 在连续、链式、索引二种文件的数据块组织方式中。哪种更合适?要求说明理由。为定位文件数据块,需要在 FCB 中设计哪些相关描述字段?

(2) 为快速找到文件,对于 FCB,是集中存储好,还是与对应的文件数据块连续存储好?要求说明理由。

计算机网络

47

某主机的 MAC 地址为 00-15-C5-C1-5E-28,IP 地址为 10.2.128.100(私有地址)。题 47-a 图是网络拓扑,题 47-b 图是该主机进行 Web 请求的 1 个以太网数据帧前 80 个字节的十六进制及 ASCII 码内容。

确认号
头部长度
服务类型
总长度
标识
标志
片偏移
生存时间(TTL)
协议
头部校验和
源 IP 地址
目的 IP 地址
47-d 图  IP 分组头结构
0
8
16
24
32
目的 MAC 地址
源 MAC 地址
类型
数  据
CRC
6B
6B
2B
46~1500B
4B
47-c 图  以太网帧结构
00
21
27
21
51
ee
00
15
c5
c1
5e
28
08
00
45
00
01
ef
11
3b
40
00
80
06
ba
9d
0a
02
80
64
40
aa
62
20
04
ff
00
50
e0
e2
00
fa
7b
f9
f8
05
50
18
fa
f0
1a
c4
00
00
47
45
54
20
2f
72
66
63
2e
68
74
6d
6c
20
48
54
54
50
2f
31
2e
31
0d
0a
41
63
0000
0010
0020
0030
0040
.!!Q.. ..^(..E.
...:@... .....d@.
b ...P.. ..{...P.
......GET /rfc.h
tmI HTTP /1.1..Ac
47-b 图  以太网数据帧(前 80B)
Internet
10.2.128.100
10.2.128.1
101.12.123.15
MTU = 1500B
47-a 图 网络拓扑

请参考图中的数据回答以下问题。

(1) Web 服务器的 IP 地址是什么?该主机的默认网关的 MAC 地址是什么?

(2) 该主机在构造题 47-b 图的数据帧时,使用什么协议确定目的 MAC 地址?封装该协议请求报文的以太网帧的目的 MAC 地址是什么?

(3) 假设 HTTP/1.1 协议以持续的非流水线方式工作,一次请求-响应时间为 RTT,rfc.html 页面引用了 5 个 JPEG 小图像,则从发出题 47-b 图中的 Web 请求开始到浏览器收到全部内容为止,需要多少个 RTT?

(4) 该帧所封装的 IP 分组经过路由器 R 转发时,需修改 IP 分组头中的哪些字段?

注意:以太网数据帧结构和 IP 分组头结构分别如题 47-c 图、题 47-d 图所示。