导航

时间轴

2025 年 3 月 30 日
2025 年 3 月 28 日

看的还是太慢了……怎么说也要在四月前把第二章看完!

2025 年 3 月 27 日

看完 2.1 信息存储

本文中需重点理解寻址和字节顺序

2025 年 3 月 25 日

看完 第一章 计算机系统漫游

这个章节从 hello world开始,带着读者从一个新的视角真正理解这一个简单语句背后的故事。

2025 年 3 月 25 日

要不说人家是神作呢,读完第一章就已经满满的都是相见恨晚。

2025 年 3 月 24 日

在通过中科创达的面试并了解到入职后主要从事BSP驱动开发后,内心总觉得有些不安,希望在正式入职前学习一些相关的知识。于是找了一本《Linux 驱动开发入门与实战》进行阅读,然而在进行简要的阅读之后,发现由于自己在操作系统、计算机组成原理方面的知识过于薄弱,很难理解书中的知识。

巧合之下,在和腾讯元宝的交流中,得知了《深入理解计算机系统》这本书,并了解到这是被誉为计算机神作的一本经典。欣喜若狂,便开始读了起来。

很喜欢豆瓣某用户对这本书的评价,“恭喜你,迈出了成为优秀程序员的第一步!”

章节概述

《深入理解计算机系统》(CS:APP)是一本系统讲解计算机硬件与软件协同工作的经典教材,其内容涵盖从底层硬件到上层软件的完整知识体系。以下是各章节的详细介绍及核心内容:


​第一章:计算机系统漫游

以一个简单的“Hello World”程序为主线,串联起从源代码编写到程序执行的完整流程,包括编译、汇编、链接、加载到内存、CPU执行指令等环节。最后引入Amdahl定律,分析系统性能优化的理论极限。


​第二章:信息的表示和处理

讲解计算机中数据的二进制表示,重点包括:

  • 整数:原码、反码、补码的转换规则,以及溢出问题。
  • 浮点数:IEEE 754标准,单精度与双精度浮点数的存储结构(符号位、指数、尾数)。
  • 字符与字符串:ASCII与Unicode编码的差异。

​第三章:程序的机器级表示

深入汇编语言与机器指令,涵盖:

  • x86-64指令集:寄存器(如RAX、RBX)、操作数(立即数、寄存器、内存)、寻址方式(基址+偏移、间接寻址)。
  • 汇编代码示例:通过反汇编工具分析C程序的机器级代码,理解编译器如何生成指令。

​第四章:处理器体系结构

解析CPU的工作原理,包括:

  • 指令流水线:取指、译码、执行、访存、写回的并行执行机制。
  • 动态调度:乱序执行与分支预测技术,提升指令级并行性。
  • 性能优化:如何通过编译器指令(如#pragma unroll)或硬件特性优化程序。

​第五章:优化程序性能

从代码层面到系统层面探讨性能优化策略:

  • 编译器优化:常量折叠、循环展开、死代码消除。
  • CPU缓存优化:数据局部性(空间局部性、时间局部性),循环嵌套顺序对缓存命中率的影响。
  • 算法与数据结构:时间复杂度与空间复杂度的权衡。

​第六章:存储器层次结构

详细剖析存储系统的层级设计:

  • 存储层次:寄存器(最快)→ 高速缓存(Cache)→ 主存(DRAM)→ 磁盘/SSD(最慢)。
  • Cache机制:直接映射、组相联、全相联的差异,以及替换策略(LRU、FIFO)。
  • 虚拟内存:页表、页错误处理、内存分页与分段。

​第七章:链接

解释程序链接的原理与实现:

  • 静态链接:将目标文件与库合并为可执行文件。
  • 动态链接:运行时加载共享库(如.so文件),节省内存空间。
  • 链接错误:符号未定义、重复定义等问题的解决方法。

​第八章:异常控制流

涵盖操作系统与硬件交互的核心机制:

  • 中断与异常:硬件中断(如I/O设备)、软件异常(如除零错误)。
  • 进程与线程:进程控制块(PCB)、上下文切换、信号处理。
  • 系统调用:用户态与内核态的切换,以及sysenter指令的使用。

第九章:虚拟内存

深入虚拟内存管理:

  • 页表结构:多级页表(如4级页表)、TLB(快表)的作用。
  • 内存映射文件:将文件直接映射到虚拟地址空间,提升I/O效率。
  • 页面置换算法:最佳置换(OPT)、先进先出(FIFO)、最近最少使用(LRU)。

第十章:系统级I/O

讨论输入/输出设备的实现:

  • 磁盘结构:扇区、磁道、柱面,以及磁盘调度算法(如SCAN、C-SCAN)。
  • 文件系统:inode表、目录结构、日志结构文件系统(JFS)。
  • 网络编程:套接字(Socket)API、TCP/IP协议栈。

​第十一章:并发编程

多线程与并行计算的核心概念:

  • 线程同步:互斥锁(Mutex)、信号量(Semaphore)、条件变量。
  • 死锁预防:银行家算法、资源分级分配。
  • 并行计算模型:共享内存(OpenMP)、消息传递(MPI)。

第十二章:网络与分布式系统

现代计算机网络的基础:

  • OSI七层模型:物理层到应用层的分工。
  • TCP/IP协议:三次握手、四次挥手、滑动窗口机制。
  • 分布式系统:CAP定理、一致性哈希、Paxos算法。

​总结

本书通过​“从上到下”​​“从下到上”​的双重视角,将计算机系统的各个组件(硬件、操作系统、编译器、网络)有机串联,帮助读者建立​“系统级思维”​。建议结合实验(如编写汇编代码、分析Cache性能)加深理解。

相关


© 2024 Montee | Powered by Hexo | Theme stellar


Static Badge