家庭作业汇总

家庭作业3.70

C版本代码
long traverse(tree_ptr tp)
{
long v = MAX;//7:$922337206854775807
if(tp != NULL)
{
lv = traverse(tp->left);
rv = traverse(tp->right);
v = lv < rv ? lv : rv ; //16: if(r12 tp->v ? tp->v : v ; //18:if(rax>rbx) rax=rbx;
}
return v;
}

这个函数的作用:找出树中节点值最小的一个

家庭作业6.25

假设1mb=1000kb(为了好算)
3mb=310001024b
所以需要3*1000个扇区/500=6个磁道
1.最好情况

T_avg rotation=1/2*1/RPM*60/1min=1/2*(60secs)/12000RPM*1000ms/sec=2.5ms
T_avg transfer=1/RPM*1/(平均扇区数/磁道数)*60secs/1min
=60/12000RPM*1/500*1000ms/sec
=0.01ms

*这里两项跟着书上392,393算就好啦.

由题所示

第一个块的读写时间=T_avg seek+T_avg rotation
T_avg seek=3ms

最优情况是:当大家都在一个柱面上(这时只需要寻一次道即可),顺序存储

T_best= T_avg seek+T_avg rotation+3000*T_avg transfer
=3+2.5+3000*0.01=35.5ms

2.随机情况
我认为是在最短时间与最长时间的范围内,所以接下来计算最长的时间
在最混乱的情况里,每一个扇区与下一个存储的扇区都不在一起,即不管是想要存储时,每一次都要经历寻道,和作为第一个块的读写头时间

T_worst=3000*(T_avg seek+T_avg rotation+T_avg transfer)
       =3000*(3+2.5+0.01)
       =16530ms

家庭作业6.27

可以看书上410页的公式

家庭作业6.32

由题6.31可得:
块偏移位数量b=2 ==>CO
组索引位数量s=3 ==>CI
标记位数量t=8 ==>CT

接着把0x0718化成二进制得到0000011100011000,然后按顺序填入地址中:
索引位为6,高速缓存示记为38,所以可以看6.31的图索引位为6的那一行,有两个38的标记位,所以缓存示命中的。但是第一个的状态是0所以命中的是后面的FA

原文地址:https://www.cnblogs.com/javajy/p/4982609.html