《深入理解计算机系统》1-4章总结

《深入理解计算机系统》1-4章总结 ##

经过1个月断断续续的学习,已学习完《深入理解计算机系统》第四章,不得不说这本书确实无愧经典之名,能带给自己更深层次对编程的理解,现总结下现阶段的学习与体会:
第一章主要为后面个章节做了铺垫,其中讲述了一个C语言程序是如何转变为机器可以理解的语言,即可执行的目标代码,其过程如下
《深入理解计算机系统》1-4章总结_第1张图片
在系统的硬件组成中,计算机通过总线传递数据,要Cpu处理在磁盘的数据必须先将数据保存到RAM中,再由Cpu执行,将结果再通过IO桥传输到外部设备。所以减少对磁盘数据的读取可以提高程序效率。计算机系统的抽象表示如下
《深入理解计算机系统》1-4章总结_第2张图片
操作系统通过这些抽象来向应用程序简单一致的机制来控制硬件系统。
第二章是信息的表示与处理,intel处理器对数据的储存方式为小端法,即最低有效字节储存在最前面。当signed与unsigned在等式两侧时,signed会自动转换成unsigned。可能产生想不到的错误,也要小心防止数据的溢出,单精度与双精度的表示如下
《深入理解计算机系统》1-4章总结_第3张图片
其分类如下
《深入理解计算机系统》1-4章总结_第4张图片
这是浮点数的规范表示,其精度据有一定的限制。
第三章讲述了汇编的过程,即C语言都被汇编成一条或多条汇编语言,其中IA32的堆栈用了%esp作为栈指针与%ebp作为帧指针,可以从栈中相对于ebp的偏移量对参数进行调用,可通过pop指令与push指令来向栈顶来弹出与推入内容, 函数在过程调用时也会用到栈,call指令会将原先的返回地址,旧的%ebp,以及被调用寄存器,其中调用函数的帧指针指向保存的ebp地址,当碰到ret指令时,栈会返还旧的%ebp以及被调用寄存器值,并让eip指向旧的地址进行操作,在64位中只使用%esp作者栈指针,用其偏移来调用参数,大多数系统要求数据对齐,可以提高系统表现,即某种类型对象的地址必须是某个K值的倍数,最后介绍了缓冲区攻击以及一些防御措施,利用较小的数组大小来写入超出其限量的元素,从而改写返回地址,来实现自己的程序,防御方法主要有栈随机化,栈破坏检测以及限制可读代码。64位能提供更多的RAM,添加的寄存器能减少栈的使用,提高速度。
在第四章中可以看到处理器架构的实现,RISC与SISC是两种不同的指令集,RISC为精简指令,SISC为复杂指令,处理器的架构由取指阶段,解码阶段,执行阶段,访存阶段,写回阶段以及更新PC阶段,流水线方法大大提高了执行指令的速度,可以通过HCL语言描述来控制逻辑。
想到哪就写到哪,也没怎么整理逻辑,花了好多时间才写了这么些,希望以后能够坚持,能提高自己的表达能力。

你可能感兴趣的:(学习总结)