2014 年 408 真题
本节正在编写中,敬请期待。
选择题
数据结构
1
下列程序段的时间复杂度是( )。
count =0;
for(k = 1; k <= n; k *= 2)
for(j = 1; j <= n; j++)
count++;
内层循环条件 $j \le n$ 与外层循环的变量无关,每次循环 $j$ 自增 1, 每次内层循环都执行 $n$ 次。 外层循环条件为 $k \le n$, 增量定义为 $k$ *= 2, 可知循环次数为 $2k \le n$, 即 $k \le log_{2}(n)$ 。所以内层循环 的时间复杂度是 $O(n)$, 外层循环的时间复杂度是 $O(log2n)$ 。对于嵌套循环,根据乘法规则可知, 该段程序的时间复杂度 $T(n) = T_1(n)T_2(n) = O(n)O(log_{2}(n))= O(nlog2n)$, 选 C 。
2
假设栈初始为空,将中缀表达式 a/b+(c∗d−e∗f)/g 转换为等价的后缀表达式的过程中,当扫描到 f 时,栈中的元素依次是( )。
中序转后序的过程详见 此节。
3
循环队列放在一维数组 A[0..M-1] 中,end1 指向队头元素,end2 指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳 M-1 个元素。初始时为空。下列判断队空和队满的条件中,正确的是( )。
end1 指向队头元素,那么可知出队的操作是先从 A[end1]读数,然后 end1 再加 1。end2 指向队尾元素的后一个位置,那么可知入队操作是先存数到 A[end2],然后 end2 再加 1。若把 A[0]储存第一个元素,当队列初始时,入队操作是先把数据放到 A[0],然后 end2 自增,即可知 end2 初值为 0;end1 指向的是队头元素,队头元素的在数组 A 中的下标为 0,所以得知 end1 初值也为 0,可知队空条件为 end1-end2。然后考虑队列满时,因为队列最多能容纳 M-1 个元素,假设队列存储在下标为 0 到下标为 M-2 的 M-1 个区域,队头为 A[0],队尾为 A[M-2],此时队列满,考虑在这种情况下 end1 和 end2 的状态,end1 指向队头元素,可知 end1-0,end2 指向队尾元素的后一个位置,可知 end2=M-2+1=M-1,所以可知队满的条件为 end1-(end2+1)modM,选 A。
4
若对如下的二叉树进行中序线索化,则结点 x 的左、右线索指向的结点分别是( )。
线索二叉树的线索实际上指向的是相应遍历序列特定结点的前驱结点和后继结点,所以先 写出二叉树的中序遍历序列 debxac, 中序遍历中在 x 左边和右边的字符,就是它在中序线索化 的左、 右线索, 即 b、a, 选 D。
5
将森林 F 转换为对应的二叉树 T,F 中叶子的个数等于( )。
将森林转化为二叉树即相当于用孩子兄弟表示法表示森林。 在变化过程中,原森林某结点 的第一 个孩子结点作为它的左子树,它的兄弟作为它的右子树。 那么森林中的叶结点由千没有 孩子结点,那么转化为二叉树时,该结点就没有左结点,所以 F 中叶结点的个数就等于 T 中左 孩子指针为空的结点个数,选 C。 此题还可以通过一 些特例来排除 A、 B、 D 选项。
6
5 个字符有如下 4 种编码方案,不是前缀编码的是( )。
前缀编码的定义是在一个字符集中, 任何一个字符的编码都不是另一个字符 编码的前缀。 选项 D 中编码 110 是编码 1100 的前缀, 违反了前缀编码的规则,所以 D 不是前缀编码。
7
对如下所示的有向图进行拓扑排序,得到的拓扑序列可能是()
按照拓扑 排序的算法,每次都 选择入度为 0 的结点从图中删去 , 此图中一 开始只有结点 3 的入度为 0; 删掉结点 3 后, 只有结点 1 的入度为 0; 删掉结点 1 后, 只有结点 4 的入度为 O; 删掉结点 4 后, 结点 2 和结点 6 的入度 都为 o, 此时选择删去不同的结点, 会得出不同的拓扑 序列 , 分别处理完毕后 可知可能的拓扑序列为 3,1, 4,2,6,5 和 3,1,4,6,2,5, 选 D。
8
用哈希(散列)方法处理冲突(碰撞)时可能出现堆积(聚集)现象,下列选项中, 会受堆积现象直接影响的是()
产生堆积现象,即产生了冲突,它对存储效率、散列函数和装填因子均 不会有影响,而平 均查找长度 会因为堆积现象而增大, 选 D。
9
在一棵具有 15 个关键字的 4 阶 B 树中,含关键字的结点个数最多是()
关键字数量 不变,要求结点数量 最多, 那么 即每个结点中含关键字的数最最少。根据 4 阶 B 树的定义,根 结点最少含 l 个关键字,非根结点中最少含⌈4/2⌉-1=1 个关键字 ,所以每个结 点中,关键字数量最少都为 1 个,即每个结点都 有 2 个分支,类似于排序 二叉树,而 15 个结点 正好可以构造一个 4 层的 4 阶 B 树, 使得叶结点全在第四层 ,符合 B 树定义, 因此选 D。
10
用希尔排序方法对一个数据序列进行排序时,若第 1 趟排序结果为 9,1,4,13,7,8,20,23,15,则该趟排序采用的增量(间隔)可能是()
首先,第二个元素为 1,是整个序列中的最小元素,所以可知该希尔排序为从小到大排序然后考虑增量问题,若增量为 2,第 1+2 个元素 4 明显比第 1 个元素 9 要大,A 排除;若增量为 3,第 i、i+3、i+6 个元素都为有序序列(i=1,2.3),符合希尔排序的定义;若增量为 4,第 1 个元素 9 比第 1+4 个元素 7 要大,C 排除;若增量为 5,第 1 个元素 9 比第 1+5 个元素 8 要大,D 排除,选 B。
11
下列选项中,不可能是快速排序第 2 趟排序结果的是()
快排的阶段性排序 结果的特点是,第 i 趟完成时, 会有 l 个以上的数出现在它最终将要出 现的位置,即它左边的数 都比它小,它右边的数 都比它大。题目问第二趟 排序的结果,即要找 不存在两个这样的数的选项。A 选项中 2、3、6、7、9 均符合,所以 A 排除;B 选项中,2、9 均符合,所以 B 排除;D 选项中 5、9 均符合,所以 D 选项排除;最后看 C 选项, 只有 9 一 个数符合,所以 C 不可能 是快速排序 第二趟的结果。
组成原理
12
程序 P 在机器 M 上的执行时间是 20 秒,编译优化后,P 执行的指令数减少到原来的 70%,而 CPI 增加到原来的 1.2 倍,则 P 在 M 上的执行时间是( )。
不妨设原来指令条数为 X, 那么原 CPI 就为 20/x, 经过编译优化后, 指令条数减少到原来 的 70%, 即指令条数为 0.7x, 而 CPI 增加到原来的 1.2 倍,即 24/x, 那么 现在 P 在 M 上的执行 时间就为指令条数 xCPI= 0.7x x 24/x = 24x0.7 = 16.8s, 选 D。
13
若 x=103,y=-25,则下列表达式采用 8 位定点补码运算实现时,会发生溢出的是( )。
8 位定点补码表示的数据范围为-128~127,若运算结果超出这个范围则会溢出,A 选项 x+y=103-25=78,符合范围,A 排除;B 选项-x+y=-103-25=-128,符合范围,B 排除;D 选项-x-y=-103+25=-78,符合范围,D 排除;C 选项 x-y=103+25=128,超过了 127,选 C.
14
float 型数据常用 IEEE754 单精度浮点格式表示。假设两个 float 型变量 x 和 y 分别存放在 32 位寄存器 f1 和 f2 中,若(f1)=CC90 0000H,(f2)=B0C0 0000H,则 x 和 y 之间的关系为( )。
(fl)和(f2)对应的二进制分别是 $(110011001001 \cdots)_2$ 和 $(101100001100 \cdots)_2$, 根据 IEEE754 浮点 数标准,可知(fl)的数符为 1, 阶码为 10011001, 尾数为 1.001,而(f2)的数符为 1, 阶码为 01100001, 尾数为 $1.1$, 则可知两数均为负数, 符号相同, B、 D 排除。 (fl)的绝对值为 $1.001 \times 2^{26}$, (f2)的绝 对值为 $1.1 \times 2^{-30}$, 则 (fl)的绝对值比 (f2)的绝对值大, 而符号为负, 真值大小相反, 即 (fl)的真值 比(f2)的真值小, 即 x<y, 选 A。
此题还有更为简便的算法, (fl)与(f2)的前 4 位为 1100 与 1011, 可以看出两数均为负数, 而阶码用移码表示, 两数的阶码头三位分别为 100 和 011, 可知(fl)的阶码大于 (f2)的阶码, 又 因为是 IEEE754 规格化的数, 尾数部分均为 l.xxx, 则阶码大的数, 真值的绝对值必然大, 可 知(fl)真值的绝对值大于 (f2)真值的绝对值, 因为都为负数, 则(fl)<(f2), 即 x<y。
15
某容量为 256MB 的存储器由若干 4M×8 位的 DRAM 芯片构成,该 DRAM 芯片的地址引脚和数据引脚总数是( )。
4Mx8 位的芯片数据线应为 8 根, 地址线应为 log24M = 22 根, 而 DRAM 采用地址复用技 术, 地址线是原来的 1/2, 且地址信号分行、 列两次传送。 地址线数为 22/2 = 11 根, 所以地址 引脚与数据引脚的总数为 11+ 8=19 根, 选 A。
16
采用指令 Cache 与数据 Cache 分离的主要目的是( )。
把指令 Cache 与数据 Cache 分离后, 取指和取数分别到不同的 Cache 中寻找, 那么指令流 水线中取指部分和取数部分就可以很好地避免冲突, 即减少了指令流水线的冲突, 选 D。
17
某计算机有 16 个通用寄存器,采用 32 位定长指令字,操作码字段(含寻址方式位)为 8 位,Store 指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式。若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则 Store 指令中偏移量的取值范围是( )。
采用 32 位定长指令字,其中操作码为 8 位,两个地址码一共占用 32-8=24 位,而 Store 指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址,机器中共有 16 个通用寄存器,则寻址一个寄存器需要 logz16 =4 位,源操作数中的寄存器直接寻址用掉 4 位,而目的操作数采用基址寻址也要指定一个寄存器,同样用掉 4 位,则留给偏移址的位数为 24-4-4=16 位,而偏移址用补码表示,16 位补码的表示范围为-32768~+32767,选 A。
18
某计算机采用微程序控制器,共有 32 条指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下地址字段法)确定下条微指令地址,则微指令中下地址字段的位数至少是( )。
计算机共有 32 条指令,各个指令对应的微程序平均为 4 条,则指令对应的微指令为 32x4=128 条, 而公共微指令还有 2 条, 整个系统中微指令的条数一共为 128+ 2 = 130 条, 所以需要 $log_2{130} = 8$ 位才能寻址到 130 条微指令, 答案选 C。
19
某同步总线采用数据线和地址线复用方式,其中地址/数据线有 32 根,总线时钟频率为 66MHz,每个时钟周期传送两次数据(上升沿和下降沿各传送一次数据),该总线的最大数据传输率(总线带宽)是( )。
数据线有 32 根, 也就是一次可以传送 32bit/8 = 4B 的数据, 66MHz 意味着有 66M 个时钟 周期,而每个时钟周期传送两次数据, 可知总线每秒传送的最大数据量为 66Mx2x4B=528MB, 所以总线的最大数据传输率为 528MB/s, 选 C。
20
一次总线事务中,主设备只需给出一个首地址,从设备就能从首地址开始的若干连续单元读出或写入多个数据。这种总线事务方式称为( )。
猝发(突发)传输是在一个总线周期中, 可以传输多个存储地址连续的数据, 即 一次传输 一个地址和一批地址连续的数据, 并行传输是在传输中有多个数据位同时在设备之间进行的传 输,串行传输是指数据的二进制代码在一条物理信道上以位为单位按时间顺序逐位传输的方式, 同步传输是指传输过程由统一的时钟控制, 选 C。
21
下列有关 I/O 接口的叙述中,错误的是( )。
采用统一编址时,CPU 访存和访问 1/0 端口用的是一样的指令,所以访存指令可以访问 I/0 端口,D 选项错误, 其他三个选项均为正确陈述, 选 D。
22
若某设备中断请求的响应和处理时间为 100ns,每 400ns 发出一次中断请求,中断响应所允许的最长延迟时间为 50ns,则在该设备持续工作过程中,CPU 用于该设备的 I/O 时间占整个 CPU 时间的百分比至少是( )。
每 400ns 发出 一 次中断请求, 而响应和处理时间为 lOOns, 其中允许的延迟为干扰信息, 因为在 50ns 内, 无论怎么延迟, 每 400ns 还是要花费 lOOns 处理中断的, 所以该设备的 I/0 时 间占整个 CPU 时间的百分比为 100ns/400ns = 25%, 选 B。
操作系统
23
下列调度算法中,不可能导致饥饿现象的是( )。
采用静态优先级调度时, 当系统总是出现优先级高的任务时, 优先级低的任务会总是得不 到处理机而产生饥饿现象;短任务优先调度不管是抢占式或是非抢占的, 当系统总是出现新来 的短任务时, 长任务会总是得不到处理机, 产生饥饿现象, 因此 B、C、D 都错误, 选 A。
24
某系统有 n 台互斥使用的同类设备,三个并发进程分别需要 3、4、5 台设备,可确保系统不发生死锁的设备数 n 最小为( )。
三个并发进程分别需要 3 、4 、5 台设备, 当系统只有(3-1) + (4-1) + (5-1) =9 台设备时, 第一个进程分配 2 台,第二个进程分配 3 台,第三个进程分配 4 台。这种情况下, 三个进程 均无法继续执行下去, 发生死锁。 当系统中再增加 1 台设备, 也就是总共 10 台设备时, 这 最后 1 台设备分配给任意 一个进程都可以顺利执行完成,因此保证系统不发生死锁的最小设备数为 10 。
25
下列指令中,不能在用户态执行的是( )。
trap 指令、跳转指令和压栈指令均可以在用户态执行, 其中 trap 指令负责由用户态转换成 为内核态, 而关中断指令为特权指令, 必须在核心态才能执行, 选 D。
26
一个进程的读磁盘操作完成后,操作系统针对该进程必做的是( )。
进程申请读磁盘操作的时候, 因为要等待 I/0 操作完成, 会把自身阻塞, 此时进程就变为 了阻塞状态, 当 I/0 操作完成后, 进程得到了想要的资源, 就会从阻塞态转换到就绪态(这是 操作系统的行为)。而降低进程优先级、分配用户内存空间和增加进程的时间片大小都不一定会 发生, 选 A。
27
现有一个容量为 10GB 的磁盘分区,磁盘空间以簇 (Cluster) 为单位进行分配,簇的大小为 4KB,若采用位图法管理该分区的空闲空间,即用一位 (bit) 标识一个簇是否被分配,则存放该位图所需簇的个数为( )。
簇的总数为 10GB/4KB = 2.5M, 用 一 位标识一 簇是否被分配, 则整个磁盘共需要 2.5M 位, 即需要 2.5M/8 =320KB, 因此共需要 320KB/4KB = 80 个簇, 选 A。
28
下列措施中,能加快虚实地址转换的是( )。
I. 增大快表 (TLB) 容量
II. 让页表常驻内存
III. 增大交换区 (swap)
虚实地址转换是指逻辑地址和物理地址的转换。增大快表容量能把更多的表项装入快表 中, 会加快虚实地址转换的平均速率;让页表常驻内存可以省去一 些不在内存中的页表从磁盘 上调入的过程, 也能加快虚实地址转换;增大交换区对虚实地址转换速度无影响, 因此 I、 II 正确, 选 C。
29
在一个文件被用户进程首次打开的过程中,操作系统需要做的是( )。
一个文件被用户进程首次打开即被执行了 Open 操作, 会把文件的 FCB 调入内存, 而不会 把文件内容读到内存中, 只有进程希望获取文件内容的时候才会读入文件内容; C、D 明显错 误, 选 B。
30
在页式虚拟存储管理系统中,采用某些页面置换算法,会出现 Belady 异常现象,即进程的缺页次数会随着分配给该进程的页框个数的增加而增加。下列算法中,可能出现 Belady 异常现象的是( )。
I. LRU 算法
II. FIFO 算法
III. OPT 算法
只有 F IFO 算法才会导致 Belady 异常, 选 A。
31
下列关于管道(Pipe)通信的叙述中,正确的是( )。
管道实际上是一种固定大小的缓冲区, 管道对于管道两端的进程而言, 就是一 个文件, 但 它不是普通的文件, 它不属于某种文件系统, 而是自立门户, 单独构成一种文件系统, 并且只 存在于内存中。 它类似于通信中半双工信道的进程通信机制, 一 个管道可以实现双向的数据传 输, 而同一 个时刻只能最多有一 个方向的传输, 不能两个方向同时进行。 管道的容量大小通常 为内存上 的一页, 它的大小并不是受磁盘容量大小的限制。 当管道满时, 进程在写管道会被阻 塞, 而当管道空时, 进程在读管道会被阻塞, 因此选 C。
32
下列选项中,属于多级页表优点的是( )。
多级页表不仅不会加快地址的变换速度, 而且会因为增加更多的查表过程, 使地址变 换速 度减慢;也不会减少缺页中断的次数, 反而如果访问过程中多级的页表都不在内存中, 会大大 增加缺页的次数, 也并不会减少页表项所占的字节数, 而多级页表能够减少页表所占的连续内 存空间, 即当页表太大时, 将页表再分级, 可以把每张页表控制在一页之内, 减少页表所占的 连续内存空间, 因此选 D。
计算机网络
33
在 OSI 参考模型中,直接为会话层提供服务的是( )。
直接为会话层提供服务的是会话层的下一层, 即传输层, 选 C。
34
某以太网拓扑及交换机当前转发表如下图所示,主机 00-e1-d5-00-23-a1 向主机 00-e1-d5-00-23-c1 发送 1 个数据帧,主机 00-e1-d5-00-23-c1 收到该帧后,向主机 00-e1-d5-00-23-a1 发送 1 个确认帧,交换机对这两个帧的转发端口分别是( )。
主机 00-el-d5-00-23-a1 向 00-el-d5-00-23-c1 发送数据帧时,交换机转发表中没有 00-el-d5-00-23-c1 这项,所以向除 1 接口外的所有接口广播这帧,即 2、3 端口会转发这帧,同时因为转发表中并没有 00-e1-d5-00-23-a1 这项,所以转发表会把(目的地址 00-el-d5-00-23-a1,端口 1)这项加入转发表。而当 00-el-d5-00-23-c1 向 00-e1-d5-00-23-a1 发送确认帧时,由于转发表已经有 00-el-d5-00-23-a1 这项,所以交换机只向 1 端口转发,选 B。
35
下列因素中,不会影响信道数据传输速率的是( )。
由香农定理可知, 信噪比和频率带宽都可以限制信道的极限传输速率, 所以信噪比和频率 带宽对信道的数据传输速率是有影响的,A、B 错误;信道的传输速率实际上就是信号的发送 速率, 而调制速度也会直接限制数据的传输速率, C 错误;信号的传播速度是信号在信道上传 播的速度, 与信道的发送速率无关, 选 D。
36
主机甲与主机乙之间使用后退 N 帧协议 (GBN) 传输数据,甲的发送窗口尺寸为 1000,数据帧长为 1000 字节,信道带宽为 100 Mbps,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲乙之间的单向传播延迟是 50ms,则甲可以达到的最大平均数据传输速率约为( )。
考虑制约甲的数据传输速率的因素,首先,信道带宽能直接制约数据的传输速率,传输速率一定是小于等于信道带宽的;其次,主机甲、乙之间采用后退 N 帧协议,那么因为甲、乙主机之间采用后退 N 帧协议传输数据,要考虑发送一个数据到接收到它的确认之前,最多能发送多少数据,甲的最大传输速率受这两个条件的约束,所以甲的最大传输速率是这两个值中小的那一个。甲的发送窗口的尺寸为 1000,即收到第一个数据的确认之前,最多能发送 1000 个数据帧,也就是发送 1000x1000B =1MB 的内容,而从发送第一个帧到接收到它的确认的时间是一个往返时延,也就是 50+50=100ms=0.1s,即在 100ms 中,最多能传输 1MB 的数据,因此,此时的最大传输速率为 1MB/0.1s=10MB/s=80Mbps。信道带宽为 100Mbps,所以答案为 min{80Mbps,100bps}=80Mbps,选 C.
37
站点 A、B、C 通过 CDMA 共享链路,A、B、C 的码片序列 (chipping sequence) 分别是 (1,1,1,1)、(1,-1,1,-1) 和 (1,1,-1,-1) 。若 C 从链路上收到的序列是 (2,0,2,0,0,-2,0,-2,0,2,0,2),则 C 收到 A 发送的数据是( )。
把收到的序列分成每 4 个数字一组,即为(2,0,2,0)、(0,-2,0,-2)、(0,2,0,2),因为题目求的是 A 发送的数据,因此把这三组数据与 A 站的码片序列(1,1,1,1)做内积运算,结果分别是(20, 2, 0)’ (1, 1, 1, 1)/4=1、(0, -2,0, -2)’(1,1,1,1)/4=-1、(0,2,0,2)·(1,1,1,1)/4=1,所以 C 接收到的 A 发送的数据是 101,选 B。
38
主机甲和主机乙已建立了 TCP 连接,甲始终以 MSS=1KB 大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段。若甲在 t 时刻发生超时时拥塞窗口为 8KB,则从 t 时刻起,不再发生超时的情况下,经过 10 个 RTT 后,甲的发送窗口是( )。
当 t 时刻发生超时时,把 ssthresh 设为 8 的一半,即为 4,且拥塞窗口设为 1KB。然后经历 10 个 RTT 后,拥塞窗口的大小依次为 2,45,6,7,8,9,10,11,12,而发送窗口取当时的拥塞窗口和接收窗口的最小值,而接收窗口始终为 10KB,所以此时的发送窗口为 10KB,选 A。
39
下列关于 UDP 协议的叙述中,正确的是( )。
I. 提供无连接服务
II. 提供复用/分用服务
III. 通过差错校验,保障可靠数据传输
UDP 提供的是无连接的服务,I 正确;同时 UDP 也提供复用/分用服务,I 正确;UDP 虽然有差错校验机制,但是 UDP 的差错校验只是检査数据在传输的过程中有没有出错,出错的数据直接丢弃,并没有重传等机制,不能保证可靠传输,使用 UDP 协议时,可靠传输必须由应用层实现,II 错误。答案选 B。
40
使用浏览器访问某大学 Web 网站主页时,不可能使用到的协议是( )。
当接入网络时可能会用到 PPP 协议,A 可能用到;当计算机不知道某主机的 MAC 地址时用 IP 地址查询相应的 MAC 地址时会用到 ARP 协议,B 可能用到;当访问 Web 网站时,若 DNS 缓冲没有存储相应域名的 IP 地址,用域名査询相应的 IP 地址时要使用 DNS 协议,而 DNS 是基于 UDP 协议的,所以 C 可能用到;SMTP 只有使用邮件客户端发送邮件,或是邮件服务器向别的邮件服务器发送邮件时才会用到,单纯的访问 Web 网页不可能用到,选 D。
解答题
数据结构
41
二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树 T,采用二叉链表存储,结点结构为:
其中叶结点的 weight 域保存该结点的非负权值。设 root 为指向 T 的根结点的指针,请设计求 T 的 WPL 的算法,要求:
(1) 给出算法的基本设计思想;
(2) 使用 C 或 C++语言,给出二叉树结点的数据类型定义;
(3) 根据设计思想,采用 C 或 C++语言描述算法,关键之处给出注释。
42
某网络中的路由器运行 OSPF 路由协议,题 42 表是路由器 R1 维护的主要链路状态信息(LSI),题 42 图是根据题 42 表的接口名构造出来的网络拓扑。
请回答下列问题。
⑴ 本题中的网络可抽象为数据结构中的哪种结构?
⑵ 针对题 42 表中的内容,设计合理的链式存储结构,以保存题 42 表中的链路状态信息(LSI)。要求给出链式存储结构的数据定义,并画出对应题 42 表的链式存储结构示意图(示意图中仅以 ID 标识结点)。
⑶ 按照迪杰斯特拉(Dijkstra)算法的策略,依次给出 R1 到达题 42 图中子网 192.1.x.x 的最短路径及费用。
组成原理
43
请根据题 42 描述的网络,继续回答下列问题。
(1) 假设路由表结构如下表所示,请给出题 42 图中 R1 的路由表,要求包括到达题 42 图中子网 192.1.x.x 的路由,且路由表中的路由项尽可能少。
(2) 当主机 192.1.1.130 向主机 192.1.7.211 发送一个 TTL=64 的 IP 分组时,R1 通过哪个接口转发该 IP 分组?主机 192.1.7.211 收到的 IP 分组 TTL 是多少?
(3) 若 R1 增加一条 Metric 为 10 的链路连接 Internet,则题 42 表中 R1 的 LSI 需要增加哪些信息?
44
某程序中有如下循环代码段 P:“for (int i=0; i<N; i++) sum += A[i];”。假设编译时变量 sum 和 i 分别分配在寄存器 R1 和 R2 中。常量 N 在寄存器 R6 中,数组 A 的首地址在寄存器 R3 中。程序段 P 起始地址为 08048100H,对应的汇编代码和机器代码如下表所示。
编号 | 地址 | 机器代码 | 汇编代码 | 注释 |
---|---|---|---|---|
I | 08048100H | 00022080H | loop: sll R4, R2, 2 | (R2)«2 → R4 |
2 | 08048104H | 00083020H | add R4, R4, R3 | (R4) + (R3) → R4 |
3 | 08048108H | 8C850000H | load R5, 0(R4) | ((R4) + 0) → R5 |
4 | 0804810CH | 00250820H | add R1, R1, R5 | (R1) + (R5) → R1 |
5 | 08048110H | 20420001H | add R2, R2, 1 | (R2) + 1 → R2 |
6 | 08048114H | 1446FFFAH | bne R2, R6, loop | if (R2)≠(R6) goto loop |
执行上述代码的计算机 M 采用 32 位定长指令字, 其中分支指令 bne 采用如下格式:
Op 为操作码,Rs 和 Rd 为寄存器编号,OFFSET 为偏移量,用补码表示。请回答下列问题,并说明理由。
(1) M 的存储器编址单位是什么?
(2) 已知 sll 指令实现左移功能,数组 A 中每个元素占多少位?
(3) 题 44 表中 bne 指令的 OFFSET 字段的值是多少?已知 bne 指令采用相对寻址方式,当前 PC 内容为 bne 指令地址,通过分析题 44 表中指令地址和 bne 指令内容,推断出 bne 指令的转移目标地址计算公式。
(4) 若 M 采用如下“按序发射、按序完成”的 5 级指令流水线:IF(取指)、ID(译码及取数)、EXE(执行)、MEM(访存)、WB(写回寄存器),且硬件不采取任何转发措施,分支指令的执行均引起 3 个时钟周期阻塞,则 P 中那些指令的执行会由于数据相关而发生流水线阻塞?哪条指令的执行会发生控制冒险?为什么指令 1 的执行不会因为与指令 5 的数据相关而发生阻塞?
操作系统
45
假设对于题 44 中的计算机 M 和程序段 P 的机器代码,M 采用页式虚拟存储管理;P 开始执行时,(R1)=(R2)=0,(R6)=1000,其机器代码已调入主存但不在 Cache 中;数组 A 未调入主存,且所有数组元素在同一页,并存储在磁盘同一个扇区。请回答下列问题并说明理由。
(1) P 执行结束时,R2 的内容是多少?
(2) M 的指令 Cache 和数据 Cache 分离。若指令 Cache 共有 16 行,Cache 和主存交换的块大小为 32 字节,则其数据区的容量是多少?若仅考虑程序段 P 的执行,则指令 Cache 的命中率为多少?
(3) P 在执行过程中,哪条指令的执行可能发生溢出异常?哪条指令的执行可能产生缺页异常?对于数组 A 的访问,需要读磁盘和 TLB 至少各多少次?
46
文件 F 由 200 条记录组成,记录从 1 开始编号。用户打开文件后,欲将内存中的一条记录插入文件 F 中,作为其第 30 条记录。请回答下列问题,并说明理由。
(1) 若文件系统采用连续分配方式,每个磁盘块存放一条记录,文件 F 存储区域前后均有足够的空闲磁盘空间,则完成上述插入操作最少需要访问多少次磁盘块?F 的文件控制块内容会发生哪些改变?
(2) 若文件系统采用链接分配方式,每个磁盘块存放一条记录和一个链接指针,则完成上述插入操作需要访问多少次磁盘块?若每个存储块大小为 1KB,其中 4B 存放链接指针,则该文件系统支持的文件最大长度是多少?
计算机网络
47
系统中有多个生产者进程和多个消费者进程,共享一个能存放 1000 件产品的环形缓冲区(初始为空)。当缓冲区未满时,生产者进程可以放入其生产的一件产品,否则等待;当缓冲区未空时,消费者进程可以从缓冲区取走一件产品,否则等待。要求一个消费者进程从缓冲区连续取出 10 件产品后,其他消费者进程才可以取产品。请使用信号量 P、V(wait(),signal())操作实现进程间的互斥与同步,要求写出完整的过程,并说明所用信号量的含义和初值。