深入理解计算机系统
个人理解
这部分内容主要从硬件层面介绍计算机是由哪几大部分组成的(CPU、内存、I/O设备、总线等),就像人体的各个部件。 软硬件接口层主要是软件如何操控硬件,指令系统架构(ISA)、内存管理和缓存机制、中断和异常处理。 系统软件层包括编译器如何将高级语言转换为机器代码、操作系统如何管理和调度硬件资源、程序的加载、链接和执行过程。 这部分内容国内大学一般是称呼为计算机组成原理,国外是根据csapp这本书来命名,也就是深入理解计算机系统。
学习目标
- 了解程序的完整生命周期: 即一行代码是如何从IO键盘输入存储到磁盘再经过编译器再执行从磁盘到主存再从主存一行一行执行指令最后呈现效果的
- 手动连接CPU: 从简单的多路复用器到半加器到寄存器、计数器再到ALU再到miniCPU再深入下去
- 汇编: 掌握汇编语言编程,理解内存管理和缓存优化
- 网络编程: 理解socket相关网络编程原理
学这门课说到底可以有很多目的,比如弥补对硬件的理解、学习系统级的编程、或者为更高级的课程打基础, 个人认为带着一些目标来学还是很有必要的。
推荐资源
- 教材:
- 《程序是怎样跑起来的》👍 小白先看这个
- 《深入理解计算机系统》(CSAPP) 👍 中阶神书
-
《计算机组成: 结构化方法》 👍 高阶神书 “硬件和软件在逻辑上是等同的”
-
在线资源:
- CMU 15-213 课程 中阶
- CS61C 课程 中阶
- MIT 6.004 课程