一、单项选择题在每小题给出的四个选项中,请选出一项最符合题目要求的。
16. 某计算机的存储系统由Cache-主存系统构成,Cache的存取周期为10ns,主存的存取周期为50ns。在CPU执行一段程序时,Cache完成存取的次数为4800次,主存完成的存取次数为200次,该Cache-主存系统的效率是______。
- A.0.856
- B.0.862
- C.0.958
- D.0.960
A B C D
B
[解析] 命中率=4800/(4800+200)=0.96,平均访问时间=0.96×10+(1-0.96)×50=11.6ns,效率=10/11.6=0.862。
命中率H定义为CPU产生的逻辑地址能在M
1中访问到的概率。在一个程序执行期间,设N
1为访问M
1的命中次数,N
2为访问M
2的次数。

两级存储层次的等效访问时间T
A根据主存的启动时间有:
假设Cache访问和主存访问是同时启动的,T
A=H×T
A1+(1-H)×T
A2 假设Cache不命中时才启动主存,T
A=H×T
A1+(1-H)×(T
A1+T
A2)=T
A1+(1-H)×T
A2 存储层次的访问效率

先求出命中率,接着求出平均访问时间,最后求出Cache-主存系统的效率。
20. 某CPU主频为1.04GHz,采用5级指令流水线,每个流水线的执行需要1个时钟周期。假定CPU执行了100条指令,在其执行过程中,没有发生任何流水线阻塞,此时流水线的吞吐率为______。
- A.0.25×109条指令/秒
- B.0.97×109条指令/秒
- C.1.0×109条指令/秒
- D.1.04×109条指令/秒
A B C D
C
[解析] 时钟周期为主频的倒数。对于CPU主频为1.04GHz的5级指令流水线,CPU执行100条指令的时间为

,实际吞吐率为1.0×10
9条指令/秒。
流水线的实际吞吐率TP一般明显低于最大吞吐率TP
max。设一m段流水线的各段经过时间均为Δt
0,则需要T
0=mΔt
0的流水建立时间,之后每隔Δt
0就可流出一条指令,完成n个任务的解释共需时间T=mΔt
0+(n-1)Δt
0,流水线的实际吞吐率为

38. 一台主机的IP地址为11.1.1.100,子网掩码为255.0.0.0。现在用户需要配置该主机的默认路由。经过观察发现,与该主机直接相连的路由器具有如下4个IP地址和子网掩码:
Ⅰ IP地址:11.1.1.1,子网掩码:255.0.0.0
Ⅱ IP地址:11.1.2.1,子网掩码:255.0.0.0
Ⅲ IP地址:12.1.1.1,子网掩码:255.0.0.0
Ⅳ IP地址:13.1.2.1,子网掩码:255.0.0.0
请问IP地址和子网掩码可能是该主机的默认路由的是______。
A B C D
A
[解析] 本题考查默认路由的配置,路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的。本题中主机地址是一个标准的A类地址,其网络地址为11.0.0.0。选项Ⅰ的网络地址为11.0.0.0,选项Ⅱ的网络地址为11.0.0.0,选项Ⅲ的网络地址为12.0.0.0,选项Ⅳ的网络地址为13.0.0.0,因此和主机在同一个网络是选项Ⅰ和Ⅱ,因此答案为A。
二、综合应用题1. 已知AOE网中顶点v
1,v
2,v
3,…v
7分别表示7个时间,有向线段a
1,a
2,a
3,…a
10分别表示10个活动,线段旁的数值表示每个活动花费的天数,如下图所示。请填写表1、表2两个表格,并用顶点序列表示出关键路径,给出关键活动。

表 1
|
事件 | V1 | V2 | V3 | V4 | V5 | V6 | V7 |
最早发生时间 | | | | | | | |
最晚发生时间 | | | | | | | |
表 2
|
活动 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 |
最早开始时间 | | | | | | | | | | |
最晚开始时间 | | | | | | | | | | |
时间余量 | | | | | | | | | | |
关键路径:v
1 v
2 v
5 v
7;v
1 v
4 v
5 v
7。见表1。
表1
|
事件 |
V1 |
V2 |
V3 |
V4 |
V5 |
V6 |
V7 |
最早发生时间 |
0 |
3 |
2 |
6 |
7 |
5 |
10 |
最晚发生时间 |
0 |
3 |
3 |
6 |
7 |
6 |
10 |
关键活动:a
1 a
2 a
4 a
8 a
9,见表2。
表2
|
活动 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
a8 |
a9 |
a10 |
最早开始时间 |
0 |
0 |
0 |
3 |
3 |
2 |
2 |
6 |
7 |
5 |
最晚开始时间 |
0 |
0 |
1 |
3 |
4 |
5 |
3 |
6 |
7 |
6 |
时间余量 |
0 |
0 |
1 |
0 |
1 |
3 |
1 |
0 |
0 |
1 |
[解析] AOE网中从源点到终点的最大路径长度(这里的路径长度是指该路径上的各个活动所需时间之和)的路径称为关键路径。关键路径长度是整个工程所需的最短工期。关键路径上的活动称为关键活动。要缩短整个工期,必须加快关键活动的进度。
寻找关键活动时所用到的几个参量的定义。
假设第i条弧为<j,k>,dut(<j,k>)为弧<j,k>上的权值。
(1)事件的最早发生时间ve[k]=从源点到顶点悬的最长路径长度。
ve(源点)=0;
ve(k)=Max{ve(j)+dut(<j,k>)}
(2)事件的最迟发生时间v1[j]=从顶点j到汇点的最短路径长度。
vl(汇点)=ve(汇点);
vl(j)=Min{vl(k)-dut(<j,k>)}
(3)活动i的最早开始时间e(i)=ve(j)。
(4)活动i的最晚开始时间l(i)=vl(k)-dut(<j,k>)。
e[i]=l[i]的活动就是关键活动,关键活动所在的路径就是关键路径。
2. 已知在二叉树中,T为根结点,*p和*q为二叉树中两个结点,试编写求距离它们最近的共同祖先的算法。
int found=FALSE;
Bitree*Find_Near_Ancient(Bitree T, Bitree p, Bitree q) {
//求二叉树T中结点p和q的最近共同祖先
Bitree pathp[100], pathq[100]; //设立两个辅助数组暂存从根到p,q的路径
Findpath(T, p, pathp, 0);
found=FALSE;
Findpath(T, q, pathq, 0); //求从根到p,q的路径放在pathp和pathq中
for(i=0; pathp[i]= =pathq[i]&&pathp[i]; i++) ;
//查找两条路径上最后一个相同结点
return pathp[--i];
}
void Findpath(Bitree T, Bitree p, Bitree path[], int i) { //求从T到P路径的递归算法
if(T= =p) {
found=TRUE; //找到
return;
}
path[i]=T; //当前结点存入路径
if(T-> lchild)
Findpath(T-> lchild, p, path, i+1); //在左子树中继续寻找
if(T-> rchild && ! found)
Findpath(T-> rchild, p, path, i+1); //在右子树中继续寻找
if(! found)
path[i]=NULL; //回溯
}
[解析] 本题也可叙述为求*p和*q两个结点的最小子树。
遍历访问到*p时,将*p结点的祖先保存到数组pathp中,再遍历访问到*q时,将*q结点的祖先保存到数组pathq中,将数组pathp与数组pathq的结点依次(从0开始)比较,找到最近的共同祖先。
已知两个实数x=-68,y=-8.25,它们在C语言中定义为float型变量,分别存放在寄存器A和B中。另外,还有两个寄存器C和D。A、B、C、D都是32位的寄存器。请回答下列问题(要求用十六进制表示二进制序列):3. 寄存器A和B的内容分别是什么?
x=1.0001×26,符号位-1,阶码为127+6=133=(10000101)2,尾数为1.0001,所以寄存器A的内容为1 10000101 00010000000000000000000,写出十六进制为C2880000H。
y=-1.00001×23,符号位=1,阶码为127+3=130=(10000010)2,尾数为1.00001,所以寄存器B的内容为1 10000010 00001000000000000000000,写出十六进制为C1040000H。
4. x和y相加后的结果存放在C寄存器中,寄存器C中的内容是什么?
两浮点数相加,首先对阶,小阶向大阶看齐,然后尾数相加,结果规格化。X和Y相加后的结果为-1.0011001×26。其中:符号位=1,阶码为127+6=133=(10000101)2,尾数为1.00110001,所以存放结果的寄存器C的内容为1 10000101 00110001000000000000000,写出十六进制为C2988000H。
5. x和y相减后的结果存放在D寄存器中,寄存器D中的内容是什么?
两浮点数相减的步骤与相加相同,只是改为尾数相减。X和Y相减后的结果为-0.11101111×26=-1.1101111×25,其中:符号位=1,阶码为127+5=132=(10000100)2,尾数为1.1101111,所以存放结果的寄存器D的内容为1 100001001101111000000000000000,写出十六进制为C26F0000H。
[解析] float型变量在计算机中被表示为IEEE754单精度浮点数。X=-68=-(1000100)2=-1.0001×26,y=-8.25=-(1000.01)2=-1.00001×23。
一个字节多路通道连接D1、D2、D3、D4、D5共5台设备,这些设备分别每10μs、30μs、30μs、50μs和75μs向通道发出一次数据传送的服务请求,请回答下列问题:6. 计算这个字节多路通道的实际流量和工作周期。
这个字节多路通道的实际流量为

通道的工作周期为:

包括设备选择时间T
S和传送一个字节的时间T
D。
7. 如果设计字节多路通道的最大流量正好等于通道实际流量,并假设对数据传输率高的设备,通道响应它的数据传送请求的优先级也高。5台设备在0时刻同时向通道发出第一次传送数据的请求,并在以后的时间里按照各自的数据传输率连续工作。画出通道分时为每台设备服务的时间关系图,并计算这个字节多路通道处理完各台设备的第一次数据传送请求的时刻。
5台设备向通道请求传送和通道为它们服务的时间关系下图所示,向上的箭头表示设备的数据传送请求,有阴影的长方形表示通道响应设备的请求并为设备服务所用的工作周期。
在下图中,5台设备在0时刻同时向字节多路通道发出第一次传送时间的请求,通道处理完各设备第一次请求的时间分别为:
处理完设备D
1的第一次请求的时刻为5μs;
处理完设备D
2的第一次请求的时刻为10μs;
处理完设备D
3的第一次请求的时刻为20μs;
处理完设备D
4的第一次请求的时刻为30μs;
设备D
5的第一次请求没有得到通道的响应,直到第85μs通道才开始响应设备D
5的服务请求,这时,设备已经发出了两个传送数据的服务请求,因此第一次传送的数据有可能丢失。

8. 从时间关系图上可以发现什么问题?如何解决这个问题?
当字节多路通道的最大流量与连接在这个通道上的所有设备的数据流量之和非常接近时,虽然能够保证在宏观上通道不丢失设备的信息,但不能保证在某个局部时刻不丢失信息。由于高速设备在频繁地发出要求传送数据的请求时,总是被优先得到响应和处理,这就可能使低速设备的信息一时得不到处理而丢失,如本题中的设备D5。为了保证本题中的字节多路通道能正常工作,可以采取以下措施来解决:
①增加通道的最大流量,保证连接在通道上的所有设备的数据传送请求能够及时得到通道的响应。
②动态改变设备的优先级。例如,只要在30μs~70μs之间临时提高设备D5的优先级,就可使设备D5的第一次传送请求及时得到通道的响应,其他设备的数据传送请求也能正常得到通道的响应。
③增加一定数量的数据缓冲器,特别是对优先级比较低的设备。例如,只要为设备D5增加一个数据缓冲器,它的第一次数据传送请求可在85μs处得到通道的响应,第二次数据传送请求可以在145μs处得到通道的响应,所有设备的数据都不会丢失。
[解析] 通道流量是指通道在数据传送期内,单位时间里传送的字节数。它能达到的最大流量称为通道极限流量。
假设通道选择一次设备的时间为T
S,每传送一个字节的时间为T
D,字节多路通道工作时的极限流量分别为:

每选择一台设备只传送一个字节。
若通道上接P台设备,则通道要求的实际流量分别为:
字节多路通道

为使通道所接外部设备在满负荷工作时仍不丢失信息,应使通道的实际最大流量不能超过通道的极限流量。
如果在I/O系统中有多个通道,各个通道是并行工作的,则I/O系统的极限流量应当是各通道或各子通道工作时的极限流量之和。
设某多道程序系统中有用户使用的内存1000M,打印机1台。系统采用可变分区动态分配算法管理内存,而对打印机采用静态分配。假设输入输出操作时间忽略不计,采用最短剩余时间优先的进程调度算法,进程最短剩余时间相同时采用先来先服务的算法,进程调度时机选择在进程执行结束或新进程创建时,现有进程如下表: 表
|
进程 | 创建时间 | 要求执行时间 | 要求内存 | 申请打印机 |
0 | 0 | 8 | 150M | 1 |
1 | 4 | 4 | 300M | 1 |
2 | 10 | 1 | 600M | 0 |
3 | 11 | 20 | 200M | 1 |
4 | 16 | 14 | 100M | 0 |
假设系统优先分配内存低地址区域,且不允许移动,那么,求:9. 给出进程调度算法选中进程的次序,并说明理由。
进程运行的顺序是,进程0,进程1,进程3,进程4,进程3,进程2,原因见上述分析。
10. 全部进程执行结束所用的时间是多少?
总共运行了47个时间片见下表。原因见下述分析。
表
|
进程 |
创建时间 |
要求执行时间 |
要求内存 |
申请打印机 |
0 |
0 |
8 |
150M |
1 |
1 |
4 |
4 |
300M |
1 |
2 |
10 |
1 |
600M |
0 |
3 |
11 |
20 |
200M |
1 |
4 |
16 |
14 |
100M |
0 |
[解析] 本题考查调度算法的理解和计算。最简单的方法就是画出其甘特图。下面分析:时刻0,进程0到达,投入运行,占用150M内存,并占用打印机;运行到时刻4,进程1到达,占用内存300M,申请使用打印机,此时进程0和进程1均剩余4,但是进程0先到,故继续运行;运行到时刻8,进程0退出,释放150M内存,进程1运行,占用打印机;运行到时刻10,进程2到达,但是,剩余内存不足,不可创建到内存,在外存后备;时刻11,进程3到达,占用200M内存,申请打印机,其运行时间20远远大于此时进程1的1,故进程1保持运行;运行到时刻12,进程1退出,进程3运行,运行到时刻16,进程4到达,内存空间450M和350M均满足使用,创建到内存,由于它不需要打印机,它的剩余时间14小于进程3的16,故进程4抢夺进程3运行,进程3带着打印机阻塞了;运行到30,进程4退出,进程2还是不能参加到内存,进程3继续运行;到时刻46,进程3退出,内存足够进程2创建了,进程2创建并运行,到时刻47退出,运行结束。
假定某采用页式虚拟存储管理的计算机系统中,主存储器容量为1GB,被分为262144块物理块,物理块号为0,1,2,…,262143。某进程的地址空间占4页,逻辑页号为0,1,2,3,被分配到主存储器的第20,45,101,58号物理块中。回答:12. 进程每一页的长度为多少字节?逻辑地址中的页内地址应占用多少位字长?
进程每一页的长度为4096字节,逻辑地址中的页内地址占用12位字长。
13. 把进程中每一页在分到的主存物理块中的起始地址和结束地址填入下表:
表
|
逻辑页号 | 物理起始地址 | 物理结束地址 |
0 | | |
1 | | |
2 | | |
3 | | |
根据题意,计算逻辑地址对应的物理地址如下表所列:
表
|
逻辑页号 |
物理起始地址 |
物理结束地址 |
0 |
20*4096=81920 |
21*4096-1=86015 |
1 |
45*4096=184320 |
46*4096-1=188415 |
2 |
101*4096=413696 |
102*4096-1=417791 |
3 |
58*4096=237568 |
59*4096-1=241663 |
[解析] 本题考查对逻辑地址和物理地址转换之间的关系。内存为1GB,表示实际内存为1024*1024*1024=1073741824字节,需要地址线30位才能访问全。分隔成266144块,则每块大小为4096字节,所以,页内地址线要求12位宽。根据页面的映射关系,容易计算出逻辑地址对应的物理地址,见下表。所有地址均从0开始计址。
某路由器的IP地址是125.45.23.12,它在以太网上的物理地址为23-45-AB-4F-67-CD,它收到了一个分组,分组中的目的IP地址是125.11.78.10。14. 试给出这个路由器发出的ARP请求分组中的各项目。假定不划分子网。(不包含硬件类型,协议类型,操作类型)
路由器发出的ARP请求分组如图1所示:

图1
15. 假定目的主机在以太网上的物理地址为AA-BB-A2-4F-67-CD,试给出目的主机发送的ARP响应分组中的各项目。(不包含硬件类型,协议类型,操作类型)
目的主机发送的ARP响应分组,如图2所示:

图2
16. 将问题1的结果封装成数据链路层的帧,试填充所有的字段。将问题2的结果封装成数据链路层的帧,试填充所有的字段。
问题1的结果封装成数据链路层的帧,如图3所示:

图3
问题2的结果封装成数据链路层的帧,如图4所示:

图4
17. 如果路由器的路由表如下表:
表
|
网络前缀 | 掩码 | 下一跳地址 | 接口 |
125.45.23.0 | 255.255.255.0 | — | E1 |
126.45.23.0 | 255.255.255.0 | — | E2 |
125.11.78.0 | 255.255.255.240 | 125.45.23.2 | E1 |
125.11.78.8 | 255.255.255.252 | 126.45.23.2 | E2 |
0.0.0.0 | 0.0.0.0 | 125.45.23.2 | E1 |
请问这个数据分组从那个接口进行转发?注:ARP和以太网结构分别如图(a)与图(b)所示:

10的二进制0000 1010,我们首先排除直连路由,240的二进制是1111 0000,252的二进制是1111 1100,都是匹配的,根据最长前缀匹配原则,正确是路由接口是E2,下一跳地址是126.45.23.2。
[解析] 本题考查ARP协议的协议分析。ARP工作过程:一台计算机能够解析另一台计算机地址的条件是这两台计算机都连在同一物理网络中,否则将解析计算机的网关地址。如主机1向主机3发送数据报。主机1以主机3的IP地址为目的IP地址,以自己的IP地址为源IP地址封装了一个IP数据报;在数据报发送以前,主机1通过将子网掩码和源IP地址及目的IP地址进行求“与”操作判断源和目的在同一网络中;则主机1以广播帧形式向同一网络中的所有结点发送一个ARP请求(ARP request),在该广播帧中48位的目的MAC地址以全“1”即“ff—ff—ff—ff—ff—ff”表示,并在数据部分发出关于“谁的IP地址是192.168.1.4”的询问,这里192.168.1.4代表主机3的IP地址。网络1中的所有主机都会收到该广播帧,并且所有收到该广播帧的主机都会检查一下自己的IP地址,但只有主机3会以自己的MAC地址信息为内容给主机1发出一个ARP回应(ARP reply)。主机1收到该回应后,首先将其中的MAC地址信息加入到本地ARP缓存中,然后启动相应帧的封装和发送过程。
其次分析ARP协议协议报文部分。其中各个字段的含义如下:
硬件类型:表明ARP协议实现在何种类型的网络上。
协议类型:代表解析协议(上层协议)。一般的十六进制是0800,即IP。
硬件地址长度:MAC地址长度,此处为6个字节。
协议地址长度:IP地址长度,此处为4个字节。
操作类型:代表ARP协议数据包类型。0表示ARP协议请求数据包,1表示ARP协议应答数据包。
源MAC地址:发送端MAC地址。
源IP地址:代表发送端协议地址(IP地址)。
目标MAC地址:目的端MAC地址(待填充)。
目标IP地址:代表目的端协议地址(IP地址)。
ARP协议应答协议报文和ARP协议请求协议报文类似。不同的是,此时,以太网帧头部的目标MAC地址为发送ARP协议地址解析请求的主机的MAC地址,而源MAC地址为被解析的主机的MAC地址。同时,操作类型字段为1,表示ARP协议应答数据包,目标MAC地址字段被填充以目标MAC地址。
目的地址(DA)表示帧准备发往目的站的地址,共6个字节。
源地址(SA)它说明发送该帧站的地址,与DA一样占6个字节。