0.1 电脑:辅助人脑的好工具
电脑本质是一台「接受输入 → 运算处理 → 产生输出」的机器,替人脑做大量、重复、精确的计算。
0.1.1 计算机硬件的五大单元
冯·诺依曼架构把计算机拆成五大单元:
| 单元 | 角色 | 例子 |
|---|---|---|
| 输入单元 | 把外部信号送进计算机 | 键盘、鼠标、麦克风 |
| 输出单元 | 把计算结果展示给人看 | 显示器、打印机、音箱 |
| CPU(控制+运算) | 大脑:控制单元指挥、运算单元算数 | Intel Core、Apple M 系列 |
| 内存 | 所有数据的”中间人”,CPU 只跟内存打交道 | DRAM、SRAM |
| 存储 | 永久保存数据 | 硬盘、SSD、U 盘 |
数据流动:输入设备 → CPU 中转 → 内存 → CPU 处理 → 写回内存 → 输出设备读取内存 → 显示。
关键认知:CPU 不直接跟输入/输出设备打交道,所有数据必须经过内存中转。
💡 之前只知道”键盘输入→电脑处理→屏幕显示”,现在清楚中间必须经过内存这个中间人。CPU 从来不直接跟键盘或显示器说话——它只读写内存。输入设备把数据写到内存,CPU 去读;CPU 算完写回内存,输出设备再去读。理解了这个,后面学 Linux 的 I/O 模型会轻松很多。
0.1.2 一切设计的起点:CPU 的架构
CPU 内部就是控制单元 + 运算单元(ALU)。CPU 能懂哪些指令、怎么执行,取决于它的指令集架构,分两大流派:
| RISC(精简指令集) | CISC(复杂指令集) | |
|---|---|---|
| 指令特点 | 短小简单,一条做一件事 | 复杂强大,一条做多件事 |
| 执行速度 | 快,大部分 1 个时钟周期 | 慢,复杂指令需多个周期 |
| 编程难度 | 麻烦——做一件事要多条指令 | 方便——一条指令搞定 |
| 硬件设计 | 简单,晶体管少,省电 | 复杂,晶体管多,费电 |
| 代表 | ARM(手机)、Apple Silicon | x86(Intel/AMD 电脑) |
比喻:RISC 是乐高积木(小块灵活但拼起来费劲),CISC 是成品模型(大块直接装但重)。
💡 本质是用硬件复杂度换软件复杂度(反过来也行)。x86 把复杂性放在 CPU 里,写程序少写几行;ARM 把复杂性放在编译器里,CPU 简单省电。手机上用 ARM 不是因为 ARM 更强,是因为省电——同一个逻辑在不同场景下,最优解不同。
衡量 CPU 快慢的两个关键指标:
- 工作频率(主频):CPU 心跳速度。如 3.0 GHz = 每秒 30 亿次。频率越高 → 同一时间做更多操作 → 但发热越大。
- 总线宽度:CPU 一次能搬运的数据位数。32 位一次搬 32 bits,64 位一次搬 64 bits。宽度越大 → 每次吞吐量越大,能访问的内存也越大(32 位最多 4GB,64 位几乎无限)。
为什么不能只看主频:CPU A 3.0GHz×32bit = 96Gbps,CPU B 2.0GHz×64bit = 128Gbps。B 心跳慢但每次搬得多,总吞吐反而更大。
💡 主频 = 卡车跑多快(趟/秒),总线宽度 = 卡车能装多少货(bit/趟),总吞吐量 = 速度 × 宽度。评价 CPU 要看两者的乘积,不是单看频率。这跟评价一个人不能只看工作时长、不看效率是一个道理。
0.1.3 其他单元的设备
- 系统单元:主板、CPU、内存——核心运算区。
- 输入设备:键盘、鼠标、麦克风、摄像头。
- 输出设备:显示器、打印机、音箱。
- 存储设备:硬盘、SSD、U 盘、光盘——CPU 的”外部记忆”,断电不丢。
0.1.4 运行流程
以处理一份数据为例:CPU 从内存取指令 → 解码 → 执行 → 把结果写回内存,如此循环。所有设备都围绕内存转,内存是数据的中转站。
0.1.5 电脑按用途分类
- 超级电脑:科学计算、气象/核模拟,追求极致算力。
- 大型电脑 / 服务器:企业后台、数据库、网站,追求稳定与并发。
- 个人电脑:桌上型、笔电,日常办公娱乐。
- 嵌入式系统:手机、路由器、智能家电、车载,藏在设备里的专用电脑。
0.1.6 电脑上面常用的计算单位
- 容量单位:bit(位,最小单位,0 或 1)→ Byte(字节,1 Byte = 8 bits)→ KB → MB → GB → TB,每级 ×1024。
- 速度单位:CPU 频率用 Hz(MHz / GHz);网络/总线带宽常用 bps(bit/秒),注意区分 Byte(大写 B)和 bit(小写 b)。
0.2 个人电脑架构与相关设备元件
我们平时说的”电脑”通常指 x86 个人电脑(Intel/AMD)。所有元件都插在主板上,靠主板的芯片组和总线互相通信。早期芯片组分南北桥两颗:北桥连高速设备(CPU、内存、显卡),南桥连低速设备(硬盘、USB、网卡)。现代架构已把北桥的内存控制器整合进 CPU,CPU 直接跟内存/显卡对话,速度更快、也不再瓜分带宽——所以新主板图上看不到北桥了。
0.2.1 执行脑袋运算与判断的 CPU
CPU 负责大量运算,发热高,所以上面都要压一颗散热风扇。选购和理解 CPU 抓这几个点:
- 多核心:一颗 CPU 封装里塞进两个以上运算核心,能真正同时干多件事。
- 脚位(socket):不同型号脚位不同,换 CPU 必须先确认主板支持的脚位,否则插不上(如 i7-2600 用 LGA1155、i7-4790 用 FCLGA1150)。
- 频率(主频):每秒能做的工作次数,如 3.6GHz = 每秒 36 亿次。但频率只能比同款 CPU,不同架构/指令集/缓存的 CPU 不能只看频率论快慢。
- 外频 × 倍频:早期频率 = 外频(对外传输速度)× 倍频(CPU 内部加速倍数)。玩家”超频”多是调外频(倍频出厂锁死)。现代 Intel 用 Turbo 自动超频(忙时冲高、闲时降到 1.xGHz 省电),所以 cpu-z 里看到频率一直跳很正常。
- 字组大小(word size)= 32 位 / 64 位:CPU 一次能处理的数据宽度。32 位最多只能用到 4GB 内存,64 位则几乎无上限——这就是”32/64 位电脑”的由来。
- CPU 等级:i386 / i586 / i686 是 32 位分级,现在 64 位统称 x86_64。软件向下兼容:x86_64 机器能跑 386 的软件,反过来不行。
- 超线程(Hyper-Threading, HT):Intel 的招牌功能。把一个物理核心的寄存器分两组,让两个程序”抢”同一个运算单元,操作系统就误以为核心数翻倍(4 核当 8 核用)。多数情况能提速,但极端满载时反而可能变慢——case by case。
0.2.2 内存
内存(main memory)是 CPU 的数据来源,软件和数据都得先读进内存,CPU 才能用。
- DRAM(动态随机存取内存):主内存用的就是它,断电即失(挥发性)。技术迭代为 SDRAM → DDR → DDR2 → DDR3 → DDR4,DDR 是”双倍数据率”,一个周期传两次数据。DDR3 是标准 1.5V,DDR3L 低压 1.35V(省电、笔电用),但插到不支持的主板上可能烧毁,代数/电压必须匹配主板。
- 容量比什么都重要:内存不够,暂时没用的数据就得先被换出去,腾空间给新数据,系统就变卡。容量越大 → 越少换来换去 → 系统越快,服务器上内存容量有时比 CPU 还关键。
- 双通道 / 多通道:单条总线宽度约 64 位,把两条内存合起来跑就是 128 位(双通道),带宽翻倍。要启用得插成对、同容量、最好同型号的内存,且插在主板上同色的插槽里(那两两配色就是为双通道设计的)。服务器还有三通道、四通道。
- SRAM(静态随机存取内存):做 CPU 内部的 L2 高速缓存。常用数据放进 CPU 里,就不用每次跑去内存拿,提速明显。SRAM 快但贵、做不大,所以只用作缓存。
- ROM / BIOS / CMOS / 固件:
- ROM(只读存储器):非挥发,断电不丢,用来存写死的程序。
- BIOS:开机第一个运行的小程序,写在主板的 flash/EEPROM 里(所以能刷新升级),负责读取参数、找到开机设备、进入操作系统。
- CMOS:记录系统时间、CPU 电压频率、各设备 I/O 位址等参数,靠主板电池供电才能一直记住。
- 固件(firmware):绑在硬件上的控制软件(BIOS 就是一种固件),磁盘阵列卡、网卡等硬件里都有。
0.2.3 显卡
显卡(VGA)负责图形影像输出,靠 PCIe 插槽接到主板。
- 显存:显卡自带的内存,影响能撑的分辨率和色彩深度(每个像素都要占显存,如 1024×768 全彩至少要 2.25MB)。
- GPU:3D 游戏/动画的运算早期靠 CPU,太吃力,于是显卡直接内置 3D 加速芯片,这就是 GPU 的由来。
- 接口演进:PCI → AGP → PCI-Express(PCIe)。PCIe 用”管线”概念,管线越多带宽越高(常见 x16),版本越新越快(PCIe 3.0 的 x16 接近 32GB/s)。
- 视频输出口:D-Sub(VGA,老式模拟)、DVI(数字,液晶屏常用)、HDMI(影像+声音,电视主流)、DisplayPort(也是影音一起传)。
0.2.4 硬盘与储存设备
硬盘是最常见的储存设备,用来永久保存数据。
- 物理构造:盘片 + 机械手臂 + 磁头 + 主轴马达。马达转盘片,磁头在磁性盘面上读写。
- 盘面结构:最小物理单位是扇区(sector),同心圆一圈是磁道(track),多盘片上同一磁道叠起来是柱面(cylinder)。外圈面积大、扇区多,所以数据默认从外圈往内写(外圈转一圈读得更多)。
- 扇区大小:老硬盘 512Byte,大容量新盘用 4KByte。对应分区表也从旧的 MBR/MSDOS(按柱面) 演进到 GPT(按扇区号)。
- 传输接口:主流是 SATA(一线一盘、免跳线,已到 SATA3 = 600MB/s,且向下兼容);高端服务器用 SAS(更快更稳但贵,个人主板一般要外接卡);外接则有 USB、eSATA。
- HDD vs SSD:机械硬盘受物理转速限制,极限约 150~200MB/s;SSD(固态,闪存) 更快、抗震、无噪音——这也是厂商力推固态的原因。
0.2.5 扩展卡与接口
- 扩展卡插在 PCIe 插槽上(独立显卡、网卡、磁盘阵列卡等)。插哪个槽很影响性能:跟 CPU 直连的槽最快;接在南桥的槽,数据要先进南桥抢带宽,再经 DMI 通道传给 CPU,DMI 2.0 只有约 2GB/s,容易成为瓶颈。插卡前要看主板逻辑图。
- I/O 位址与 IRQ 中断:I/O 位址像每个设备的门牌号(不能重复,否则系统分不清);IRQ 则是设备通往 CPU 的专用通道,设备靠它通知 CPU 自己的工作状态。老主板 IRQ 只有 15 个,不够时可关掉没用的接口腾出来,也有共享 IRQ 技术。
0.2.6 主板
主板是所有元件的连接枢纽,芯片组决定各部件怎么沟通、性能高低。CPU、内存、显卡、硬盘全插在它上面,通过总线互连(南北桥的历史见 0.2 开头)。机箱后方的对外接口也在主板上:PS/2(老式键鼠,渐被淘汰)、USB(3.0 是蓝色口)、音频三孔、RJ-45 网口、HDMI 等——有没有这些口取决于主板是否内置对应芯片。选主板看芯片组、CPU 脚位、内存类型代数、扩展槽数量够不够。
0.2.7 电源供应器
给全机供电,相当于电脑的”心脏”,稳定性差会直接导致死机。两个关键:
- 瓦数:要覆盖全机功耗并留余量。电源自己也耗电,若系统需 300W,最好选 400W 以上。
- 能源转换率 = 输出功率 / 输入功率,越高越省电、发热越少(对应 80 PLUS 认证)。用料好坏价差极大,别图便宜用劣质电源。
0.2.8 选购须知
- 木桶效应:整机速度由最慢的那个设备决定。再快的 CPU 配个过时显卡,3D 性能就卡在显卡上。升级时要整体考虑接口和搭配,旧设备未必都能接着用。
- 常见死机元凶:超频、电源不稳、内存质量差、系统过热(夏天易死机多半是散热问题,加风扇往往就好)。
- 想查某硬件的厂商/型号,看硬件上印的信息(主板、显卡芯片上都有),据此找驱动。
0.3 数据表示方式
电脑只认 0 和 1,但人用十进制数字、还要显示各国文字,所以中间都要靠”编码转换”。
0.3.1 数字系统
- 二进制(binary):只有 0/1,逢二进一,源于电路”通电=1、断电=0”。
- 进制转换:十进制看权位,如 3456 = 3×10³+4×10²+5×10¹+6×10⁰;二进制同理,如 1101010 = 64+32+8+2 = 106(十进制→二进制则用连续除 2 取余)。八进制、十六进制依此类推。这些转换是电脑做加减乘除的底层机制。
0.3.2 文字编码系统
文字也是存成 0/1,读出来要靠编码对照表(字↔数字)。写入时字转成数字存盘,读出时数字查表还原成字。
- ASCII:英文编码,1 个字符占 1 Byte,共 256 种。
- Big5:早期中文编码,1 个中文占 2 Byte,但只定义了一万三千多字,还有”许、盖、功”等字容易被数据库误判成引号变乱码。
- UTF-8(万国码 / Unicode):ISO 制定,打破各国编码壁垒,涵盖全球文字,现代网络主流。
编码对不上就乱码——存盘用一种编码、打开用另一种,字就花了(Git Bash 中文乱码同理)。
0.4 软件程序运行
没有软件的电脑只是一堆废铁。软件分系统软件和应用程序两大类。
0.4.1 机器程序与编译程序
CPU 只懂机器码(0/1)。直接写机器码有四大痛点:
- 要懂机器语言——直接写给机器看,极难。
- 要吃透所有硬件的功能函数——想放个 DVD 都得翻光驱的技术手册。
- 不可移植——为 A 机器写的程序在 B 机器跑不了,每个 CPU 微指令集不同。
- 不可复用——写完浏览器再写文件管理器,又得从头对着硬件重写。
解法:发明高级语言(C、C++、Java、Fortran…)+ 编译器,让人写易读的代码,编译器再翻译成机器码。写程序从此容易多了。
0.4.2 操作系统
即便有了编译器,程序员还得自己管内存地址等硬件细节,太麻烦。于是有了操作系统(OS):把硬件都驱动好,再提供一套开发接口给程序员,写软件就简单了。
- 核心(Kernel):OS 的本体,也是一组程序,负责管理所有硬件和资源分配——让 CPU 运算、内存读写、硬盘存取、网卡传输等。核心不支持的功能,电脑就做不到(如核心没有 TCP/IP,再好的网卡也上不了网)。核心常驻内存且受保护,防止被误停/破坏导致系统崩溃。核心直接对着硬件规格写,所以换硬件架构(x86↔ARM)核心就得改。
- 系统调用(System Call):核心对上提供的一整套开发接口。程序员只按这套接口写程序,核心自动把请求翻译成对硬件的操作——不用再直接碰硬件。
- 核心至少要有的五大功能:① 系统调用接口 ② 程序管理(多任务下的 CPU 调度)③ 内存管理(含虚拟内存、swap 交换)④ 文件系统管理(I/O、各种文件格式支持)⑤ 设备驱动(现代用”可加载模块”,加驱动不用重编核心)。
- 驱动程序:由硬件厂商按 OS 的接口开发(不是 OS 作者写的)。新硬件出来,装上厂商提供的对应驱动,OS 才能驱动它。
严格说,能让硬件正确运行的核心+接口就算操作系统;但日常说的”操作系统”通常连带上层的应用软件一起。
0.4.3 应用程序
跑在 OS 之上、供用户使用的软件(浏览器、Office、游戏等),基于 OS 提供的接口开发。因此应用程序只能在它所针对的 OS 上运行——这就是为什么游戏光盘会标明适用的操作系统、某些游戏装不到 Linux 上的原因。
关键命令
(本章为计算机基础理论,无实操命令)