CSAPP学习笔记

来源:互联网 发布:美工每天工作内容 编辑:程序博客网 时间:2024/04/30 06:04
        在看到前言里如此诱惑的字符串:“如果你学习和研究这本书里的概念,你将步入稀缺的“权威程序员”的行列。。。”,决定买下《深入理解计算机系统》这本书。经过一段时间的学习后,我已爱不释手,只想说相见恨晚。。。
    
        个人感觉,《深》书第一章“计算机系统漫游”是整本书的概述,精华(其实大多数书籍都是如此),她总结了深入理解计算机系统的各方面内容。实在惭愧,直到读了这本书,我才理解了一个程序的执行过程。这在第一章有详细的粗略叙述,我再来画蛇添足一下,总结一下一个程序的执行过程,以加深对计算机系统理解。
   
        首先,从软件角度来看,第一步工作是用高级语言编写完成一个源程序文件。接着,开始4个翻译过程。
        1.预处理:处理源程序中#开头的命令,扩展源文件(主要执行包含文件代码插入、条件编译及宏替换操作);
        2.编译:将扩展的源文件翻译成汇编源程序;
        3.汇编:将汇编源程序翻译成可重定位的目标程序文件;
        4.链接:将所需的目标程序文件合并成一个可执行文件。
        至此,得到了可加载运行的可执行文件。这里,感觉编译和链接较为重要。编译产生汇编源码,汇编代码和机器指令一一对应的,便于分析程序性能。理解链接也很重要,个人感觉程序错误主要有三类:编译时的语法错误、链接时的错误、运行时的内存错误。以前的我,连对预处理的了解都不全面的(BS自己)。
   
       接着,开始可执行程序在硬件上的执行过程。开始,通过键盘/鼠标等设备发出加载可执行文件命令,通过寄存器,加载命令被存放到内存中。接着,根据内存中的命令,从磁盘复制可执行文件的代码和数据到主存。接着,CPU执行代码段中的机器指令序列,并操作数据段,期间,会通过寄存器与其他I/O设备交互,直到运行结束。由于计算机硬件的性价比问题,引入了金字塔型的存储设备结构;由于硬件设备使用的复杂性和合理性,引入了操作系统。由于与其他计算机通信,引入了网络系统。
   
       硬件部分是基于PC结构的,个人感觉,如果理解了PC结构的计算机系统,则对深入理解复杂度小于PC级别的系统,应该很有帮助。很多嵌入式系统资源有限,没有硬盘、没有缓存、甚至没有操作系统,无法使用系统调用,更别说中间平台的库函数啦,多数都要手动设置寄存器。不更加深入地理解计算机系统,是搞不定的。正如前言里言简意赅的字符串“。。。你也将做好学习其他具体系统主题的准备,比如编译器、计算机体系结构、操作系统、嵌入式系统和网络互联”。
   
       总结道,如果把其他计算机基础书籍比作一颗颗璀璨夺目的珍珠,《深入理解计算机系统》就是串接珍珠的朴实丝线,通过她,能将珍珠结合成魅力四射的珍珠项链。尽管是800页的大部头,但读到很多地方都意犹未尽,不过她玩的就是仙人指路,修行还在个人!

   
原创粉丝点击