计算机系统
#系统 · #总览
涵盖从硬件到软件的完整体系,帮助建立对计算机系统"自底向上"的完整认知。
什么是计算机系统
计算机系统是硬件和系统软件的有机整体,它们共同协作来运行应用程序。一个完整的计算机系统包含:
- 处理器(CPU):执行指令的核心,包括算术逻辑单元、寄存器、控制单元,通过流水线和分支预测提升吞吐
- 存储层次:从寄存器 → L1/L2/L3 Cache → 主存(DRAM)→ 磁盘/SSD,逐级容量增大、速度递减,利用局部性原理加速访问
- 操作系统:管理硬件资源,提供进程、虚拟内存、文件系统等抽象,让程序无需关心底层细节
- 链接与加载:将多个目标文件组合成可执行程序,处理符号解析和重定位
- 异常控制流:中断、陷阱、故障、信号——系统响应外部事件和错误的机制
- I/O 与网络:程序与外部世界交互的通道,从系统调用到套接字编程
理解计算机系统,就是理解"程序是如何在硬件上真正运行的"——从源代码编译为机器码,到 CPU 取指执行,再到操作系统调度和内存管理,每一层都在协同工作。
专题深入
- CSAPP 全书笔记 — 按 CSAPP 三大部分 12 章系统梳理
- CPU 微架构与 TLB/Cache — 处理器微架构、流水线、分支预测、TLB、Cache 一致性
- 中断与异常 — 硬件中断、软件中断、系统调用、信号处理、上下文切换
- 系统调用机制 — syscall/int80指令、vDSO加速、Go runtime entersyscall/exitsyscall、strace实战
- I/O 模型 — 阻塞/非阻塞/多路复用(select/poll/epoll)、Go netpoller、io_uring
- 进程、线程与协程 — 进程模型、线程实现(1:1/1:N/M:N)、协程对比
- 并发编程与同步原语 — Mutex/RWLock/futex/CAS、内存屏障与内存序、无锁数据结构、死锁
- 虚拟内存 — 地址翻译、页表、MMU、缺页处理、内存映射、写时复制
- 堆/栈/数据段/代码段 — 进程地址空间布局、栈帧结构、动态内存分配、ELF 文件格式
- 文件系统 — VFS、ext4/xfs/btrfs 对比、inode、日志
- 内核调度与容器基础 — CFS调度器、cgroup、namespace、Docker/K8s底层原理
- 编译原理、链接与加载 — 编译全流程(词法/语法/语义分析、IR、代码生成)、Go编译器完整流程(Token→AST→SSA→机器码、50+优化Pass、逃逸分析、BCE、寄存器分配)、静态/动态链接、ELF格式、GOT/PLT、程序加载、二进制工具
- 性能分析与调优 — USE/TSA方法论、pprof/perf/strace、火焰图、GC调优
- Linux Shell 实战 — 三剑客、性能诊断、网络工具、加密与压缩
参考教材
- CSAPP(深入理解计算机系统):https://hansimov.gitbook.io/csapp
- 英文官网(CMU):csapp.cs.cmu.edu
登录后即可发表评论 👇