计算机系统:程序员的视角
1120 页
Chinese
PDF
4.5

计算机系统:程序员的视角

计算机系统:程序员的视角

作者:

年份:

简介:

引言

《计算机系统:程序员的视角》(英文原名 Computer Systems: A Programmer's Perspective)是一部基础性著作,十多年来一直是所有想了解现代计算机实际工作原理的人的金标准。这本书由卡内基梅隆大学的教授兰德尔·布莱恩特(Randal Bryant)和大卫·奥哈拉伦(David O'Hallaron)撰写,不仅解释了理论,还赋予了程序员对硬件和软件如何相互作用的深刻实践理解。

尽管简介中提到了C++语言,但实际上这本书主要面向C语言和汇编语言(x86-64)。这不是一本关于特定语言的教科书,而是一本关于计算系统内部结构的指南。对于教育网站PythonLib来说,这本书尤其有价值,因为它能帮助任何语言(包括Python)的开发者编写更高效、更可靠的代码,理解“引擎盖下”发生的事情。

这本书是关于什么的?

这本书涵盖了计算机系统的所有关键方面,从位和字节开始,一直到网络编程。主要主题包括:

  • 数据表示:数字、文本和其他数据如何在内存中存储(二进制系统、补码、浮点数)。
  • 机器码和汇编:编译器如何将C代码翻译成处理器指令,寄存器、栈和函数调用如何工作。
  • 处理器架构:流水线、分支预测、超标量——为什么一段代码比另一段运行得更快。
  • 内存层次结构:缓存、RAM、磁盘——如何最小化延迟并最大化吞吐量。
  • 链接和加载:如何从目标文件构建可执行程序,动态链接如何工作。
  • 进程和线程管理:系统调用、并发、同步、死锁问题。
  • 性能测量:性能分析、基准测试、代码优化。
  • 网络和客户端-服务器应用程序:套接字基础、TCP/IP协议。

这本书适合谁?

这本书面向中高级程序员,他们希望从编写“仅仅能工作的代码”过渡到编写高效、可靠和安全的代码。它将有助于:

  • 希望了解其代码如何在真实硬件上执行的C和C++开发者。
  • 希望“深入引擎盖”了解性能瓶颈或内存泄漏原因的Python、Java或其他高级语言程序员。
  • 学习计算机体系结构、操作系统或编译器的技术专业学生。
  • 从事嵌入式系统、驱动程序或高负载服务工作的工程师。

读者将学到什么?

学习完这本书后,读者将能够:

  • 阅读和分析x86-64汇编代码。
  • 理解为什么某些操作(例如除法或浮点运算)比其他操作慢。
  • 根据内存层次结构优化程序(缓存未命中是性能的主要敌人)。
  • 避免与缓冲区溢出、内存泄漏和数据竞争相关的常见错误。
  • 使用性能分析工具(gprof、perf、Valgrind)查找瓶颈。
  • 使用互斥锁、信号量和条件变量编写安全的多线程代码。
  • 理解动态链接和库加载的工作原理。
  • 创建基于套接字的简单网络应用程序。

本书的优势

第一个也是最重要的优点是实践导向。每一章都包含

推荐