第七周的问题总结
阅读完了52、53班所有同学的第七周学习总结(大部分同学都没怎么提问题),归纳如下:
5201
问题1:为什么用中间位做索引?
解答:参看415页习题6.12和416页旁注。高位的话,任何时刻高速缓存都只保存着一个块大小的数组内容。
问题2:在这一节中好几个概念很容易混淆,在做题时就会产生错误。区分如下:
5204
1.linux下移动文件。
复制文件cp [file_name] [destination]
剪切文件mv [file name] [destination]
如下图所示是将文件复制到20145204CSAPP/src文件中
5211
装好virtualbox后,十分想念之前的kali,于是将她的vdi多重载入;等到输账户密码的时候,忽然发现全忘了。 于是重新启动的Kali ,等出现GRUB引导菜单时,按向下方向键选择“恢复模式”,按E键进入编辑模式。
进入编辑模式后将ro改为rw,在后面添加init=/bin/bash
修改完成后,按F10键或Ctrl+X键继续启动。启动完成后,出现命令行界面
用过ubuntu后,可以知道,root即为我之前的账户,知道账户就好办了 这时输入passwd root,回车就可以直接设置新密码 回车以后,输入新密码,并再次输入确认,系统提示密码更新成功! 直接关机并重启,就可以用新密码直接登录了。KO.
5216
问题:
高速缓存行、组和块有什么区别?
解决方法:
通过总结知识点得出以下结论:
- 块是一个固定大小的信息包,在高速缓存和主存(或下一层高速缓存)之间来回传递
- 行是高速缓存中存储块以及其他信息(例如有效位和标记位)的容器
- 组是一个或多个行的集合。直接映射高速缓存中的组只由一行组成,组相联和全相联高速缓存中的组是由多个行组成的
- 在直接映射高速缓存中,组和行确实是等价的,不过,在相联高速缓存中,组和行是不一样的,这两个词不能互换使用
- 因为一行总是存储一个块,术语“行”和“块”总是互换使用
5308
P403例子为什么调换i,j的次序就会得到空间局部性不同的程序。
答:因为交换顺序后,它按照列顺序来扫描数组,而不是按照行顺序。C数组在存储器中是按照行顺序来存放的。
5324
1、使用compile.sh有什么问题?
答:在操作过程中我觉得使用compile.sh很方便编译,写好了几个代码,可以一起写脚本再编译,但是运行程序的时候就不是很好找到结果,如果有问题的话,修改起来也很麻烦
2、在运行教材p402的代码时出现下图情况
再教材给出的代码上加了main函数还是无法运行,说给的实参太少
仔细看上图自己写的代码,发现main函数里没有写参数,修改后即可编译通过
另外很多人安装tree的时候有问题,可以参考我的博客,里面写得很详细。
娄老师在第七周的博客评论中一直强调,结合代码来体现局部性!
以书上p403代码为例子来测试!!!以下是一个测试运行时间的函数。
gcc之后生成可执行文件,运行结果如下
由于书上的函数并不复杂,所以运行时间差距不大,但是sum2函数是使用了步长为N的模式来扫描存储器,空间局限性较差,且明显看出sum2的运行时间较长。