前言
本书(简称CS:APP)的主要读者是计算机科学家、计算机工程师,以及那些想通过学习计算机系统的内在运作而能够写出更好程序的人。
我们的目的是解释所有计算机系统的本质概念,并向你展示这些概念是如何实实在在地影响应用程序的正确性、性能和实用性的。其他的系统类书籍都是从构建者的角度来写的,讲述如何实现硬件或系统软件,包括操作系统、编译器和网络接口。而本书是从程序员的角度来写的,讲述应用程序员如何能够利用系统知识来编写出更好的程序。当然,学习一个计算机系统应该做些什么,是学习如何构建一个计算机系统的很好的出发点,所以,对于希望继续学习系统软硬件实现的人来说,本书也是一本很有价值的介绍性读物。大多数系统书籍还倾向于重点关注系统的某一个方面,比如:硬件架构、操作系统、编译器或者网络。本书则以程序员的视角统一覆盖了上述所有方面的内容。
如果你研究和领会了这本书里的概念,你将开始成为极少数的“牛人”,这些“牛人”知道事情是如何运作的,也知道当事情出现故障时如何修复。你写的程序将能够更好地利用操作系统和系统软件提供的功能,对各种操作条件和运行时参数都能正确操作,运行起来更快,并能避免出现使程序容易受到网络攻击的缺陷。同时,你也要做好更深入探究的准备,研究像编译器、计算机体系结构、操作系统、嵌入式系统、网络互联和网络安全这样的高级题目。
如何阅读此书
从程序员的角度学习计算机系统是如何工作的会非常有趣,主要是因为你可以主动地做这件事情。无论何时你学到一些新的东西,都可以马上试验并且直接看到运行结果。事实上,我们相信学习系统的唯-方法就是做(do)系统,即在真正的系统上解决具体的问题,或是编写和运行程序。
这个主题观念贯穿全书。当引入一个新概念时,将会有一个或多个练习题紧随其后,你应该马上做一做来检验你的理解。这些练习题的解答在每章的末尾。当你阅读时,尝试自己来解答每个问题,然后再查阅答案,看自己的答案是否正确。除第1章外,每章后面都有难度不同的家庭作业。
对每个家庭作业题,我们标注了难度级别:
本书概述
本书由12章组成,旨在阐述计算机系统的核心概念。内容概述如下:
第1章 计算机系统漫游
这一章通过研究“hello, world” 这个简单程序的生命周期,介绍计算机系统的主要概念和主题。
第一部分:程序结构和执行
第2章 信息的表示和处理
第3章 程序的机器级表示
第4章 处理器体系结构
第5章 优化程序性能
第6章 存储器层次结构
第二部分 在系统上运行程序
第7章 链接
第8章 异常控制流
第9章 虚拟内存
第三部分 程序间的交流和通信
第10章 系统级I/O
第11章 网络编程
第12章 并发编程
这份计算机系统文档总计775页,篇幅有限就不给大家一一展示了,需要获取的小伙伴可以以下方式即可获取!
最后
本书的前几章揭示了C语言程序和它们相对应的机器语言程序之间的交互作用。机器语言示例都是用运行在x86-64处理器.上的GNUGCC编译器生成的。我们不需要你以前有任何硬件、机器语言或是汇编语言编程的经验。不要有顾虑,赶紧来提升自己吧。