Dive Into Systems

电子书《Dive Into Systems》深入系统

本书的目的是为读者提供一个温和而易于理解的计算机系统入门。为了编写有效的程序,程序员必须理解计算机的底层子系统和架构。然而,现代教科书的高昂费用常常限制了它们的普及,只有那些负担得起的学生才能接触到。这本免费的在线教科书旨在使计算机系统的概念对每个人都可获取。它面向那些对计算机科学有入门级知识并熟悉Python的学生。

章节介绍:

第0章,引言:介绍计算机系统和阅读本书的一些提示。

第1章,C编程简介:涵盖C编程基础,包括编译和运行C程序。我们假设阅读本书的读者已经对某种编程语言有过编程介绍。我们将C语法示例与Python语法进行比较,以便熟悉Python的读者可以看到它们如何转换。然而,阅读或理解本章并不需要Python编程经验。

第2章,深入C:涵盖C语言的大部分内容,特别是指针和动态内存。我们还详细阐述了第1章中的主题,并讨论了一些高级C特性。

第3章,C调试工具:介绍了常见的C调试工具(GDB和Valgrind),并说明了如何使用它们来调试各种应用程序。

第4章,二进制和数据表示:涵盖将数据编码为二进制,C类型的二进制表示,二进制数据上的算术运算以及算术溢出。

第5章,门、电路和计算机架构:从逻辑门到构建基本CPU的冯·诺依曼架构。我们描述了时钟驱动的执行和通过算术、存储和控制电路的指令执行阶段。我们还简要介绍了流水线、一些现代架构特性和计算机架构的简短历史。

第6-10章,汇编编程:涵盖从基本算术表达式到函数、栈以及数组和结构体访问的C到汇编代码的转换。在三个独立的章节中,我们涵盖了来自三种不同指令集架构的汇编:32位x86、64位x86和64位ARM。

第11章,存储和内存层次结构:涵盖存储设备、内存层次结构及其对程序性能的影响、局部性、缓存以及Cachegrind分析工具。

第12章,代码优化:涵盖编译器优化、以性能为考虑设计程序、代码优化技巧以及定量衡量程序性能。

第13章,操作系统:涵盖核心操作系统抽象和背后的机制。我们主要关注进程、虚拟内存和进程间通信(IPC)。

第14章,共享内存并行性:涵盖多核处理器、线程和Pthreads编程、同步、竞态条件和死锁。本章还包括一些关于衡量并行性能(加速比、效率、阿姆达尔定律)、线程安全和缓存一致性的高级主题。

第15章,高级并行系统和编程模型:介绍了分布式内存系统的基础知识和消息传递接口(MPI)、硬件加速器和CUDA,以及云计算和MapReduce。

地址:
https://diveintosystems.org/book/preface.html