跳到内容

第 0 卷 / 第 1 章 / 第 1 课

1.1 计算机的基本构造 ​

前置知识:会打开系统终端

预计时间:8–12 分钟

完成标志:能说明 CPU、内存和持久存储各自承担什么工作,并用当前平台查看它们

运行程序至少涉及三件事:保存指令、提供运行时空间、执行指令。CPU、内存和持久存储分别承担这些工作;加大 SSD 容量并不能直接解决内存不足,采购单也要遵守这个分工。

这三件东西不是计算机的全部,却足够搭起第一层模型。后面遇到进程、文件和网络时,我们会不断回来修正它。

先抓住三类部件 ​

部件主要职责断电后容易混淆的边界
CPU执行指令;包含核心、寄存器和缓存等部件状态不保留CPU 不直接等于“整个计算机的大脑”,设备和操作系统也参与工作
内存(RAM)保存正在使用的代码和数据通常丢失进程看到虚拟地址,未直接看到物理内存
持久存储在文件系统中保存程序和数据通常保留SSD、机械硬盘和网络存储的性能与可靠性不同

最小模型是:CPU 执行指令,内存保存当前使用的代码与数据,持久存储通过文件系统长期保存字节。这个模型仍解释不了 CPU 缓存、虚拟内存、DMA 或持久化时机,后续章节会分别补上这些机制。

数据怎样流动 ​

text
持久存储中的文件
        │ 读取或内存映射
        ▼
内存中的代码与数据
        │ CPU 取指、读写;设备也可能通过 DMA 传输
        ▼
计算结果留在内存,应用按需要写回文件或发送到设备

保存不是自动发生的。程序崩溃、缓存未刷盘或存储设备故障都可能让尚未持久化的数据丢失。

在自己的机器上核对 ​

模型不能只停在表格里。按平台选择一组命令;输出会随硬件、操作系统、虚拟化和容器限制变化。

平台CPU内存文件系统容量
Linuxlscpufree -hdf -h /
macOSsysctl -n machdep.cpu.brand_stringvm_statdf -h /
Windows PowerShellGet-CimInstance Win32_ProcessorGet-CimInstance Win32_OperatingSystemGet-Volume

Linux 可以运行:

bash
lscpu | sed -n '1,12p'
free -h
df -h /

类型: runnable环境: Linux 观察: lscpu 区分物理核心、逻辑 CPU 和架构;free 显示内存概况;df 显示根文件系统容量。虚拟机通常报告来宾配置;容器内的 lscpu、free 仍可能显示宿主机信息,不能据此认定容器获准使用全部资源。

关于速度 ​

访问 CPU 缓存通常比访问 DRAM 更快;需要真正读取存储设备时,等待往往更长。不过,一次文件读取可能已命中操作系统缓存,不能直接算作一次 SSD 访问。比较速度时,要注明访问大小、顺序或随机模式、缓存是否预热,以及是否计入排队时间;本页的容量命令并不测量延迟。

继续前先检查边界 ​

先用自己的输出回答三个问题:系统报告了多少逻辑 CPU,它为什么未必等于物理核心数;free 与 available 为什么不同;df -h / 描述的是哪个文件系统。答不出时回看命令输出,不必背表格。

下一页是程序与文件。持久存储里已经有许多字节,接下来要分清哪些是数据,哪些能让机器开始工作。

参考资料 ​

Built with VitePress | Software Systems Atlas