细读《深入理解计算机系统(第三版)》第一章学习总结
细读《深入理解计算机系统(第三版)》第一章学习总结
教材学习内容总结
- 这个章节以一个hello.c的程序为例子,然后通过跟踪hello.c文件的生命周期来粗略地描述系统各个硬件的工作机制。从文件被GCC编译器读取出发,接着编译系统对该文件进行操作,最终将其转换成可执行文件,本书也作了详细描述。由此再引出与其相关的一些细节问题,并再对这些问题进行解释说明。以下有几点重要内容总结:
(1)在下图的过程中,需要注意的部分是当汇编程序的文本在汇编器的处理下,变成了由二进制组成的文本,在链接阶段与所用到的库函数生成的文件进行合并,最终才形成可执行文件,即可被系统执行的文件,最后被执行,切勿将其顺序弄混。
(2)下图这是一个典型的计算机硬件的组成
总线:负责在各个部件之间传递信息字节
I/O设备:负责系统与外部设备的联系
主存:在处理器执行程序时,负责临时存放程序和程序处理的数据
处理器:解释或执行在存储在主存中指令的引擎,CPU在指令的要求下会执行的常见操作有:加载、存储、操作、跳转
(3)每个计算机的存储设备都被组织成了一个存储器的层次结构,如下图
从上至下,设备的访问速度越来越慢,容量越来越大。
(4)操作系统是应用程序与计算机硬件之间的媒介。它提供了三个基本的抽象:文件是对I/O设备的抽象;虚拟内存是对主存和磁盘的抽象;进程是对处理器、主存、I/O设备的抽象。
(5)最后,将网络比作成一种I/O设备。
教材学习中的问题和解决过程
- 看了高速缓存这一小结,我想谈谈自己对“高速缓存为什么存在?”的理解之前的理解只是停留在提高计算机运行效率的层次,比较范,却忽视了对比研究,那思考为什么主存、磁盘不能代替其工作,不得不说前面作者所介绍的知识为后面知识层次的不断推进做了很好的铺垫。主存的单位造价比较低,主存的存储空间大,但是想提升CPU从主存读取数据的速度是很困难的,而且根据机器原理存储空间大的储存设备要比其小的储存设备运行慢,对于它们的工作中性能的平衡是一个很有学问的问题。因此,高速缓存便出现了,在一定程度上缓解了计算机运行中数据读取与写入上过慢的问题。在今天,于某种程度上来说,对于不同人群的需求不同,便出现了各式各样的不同配置的电脑去满足人们的需求。
代码调试中的问题和解决过程
- 问题1:在运行本章中的helloword输出小程序时,发现自己linux系统上没有c语言标准库,导致程序无法正常运行
- 问题1解决方案:具体流程可参见http://blog.sina.com.cn/s/blog_6dd71c3c0101mh3h.html
- 问题2:在编写c程序时,对vi的使用十分吃力,经常按错。
- 问题2解决方案:安装VIM,vim是vi的进阶版,它能依据文件的扩展名或者文件内的开头信息判断该文件的内容而自动调用该程序的语法判断式,它就相当于一个“程序编辑器”,使用起来也十分方便,编写记事本相似。
代码托管
由于暂时还未学习到脚本编写,故未使用老师编写的statistics.sh脚本,此处只有向码云上传c文件成功的初始状态的截图。
感悟
学习过程中碰到了大大小小的很多问题,通过网络解决了那些问题后不仅大大提高了自身学习兴趣,还增强了自信力。