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 Siliconx86(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)。直接写机器码有四大痛点:

  1. 要懂机器语言——直接写给机器看,极难。
  2. 要吃透所有硬件的功能函数——想放个 DVD 都得翻光驱的技术手册。
  3. 不可移植——为 A 机器写的程序在 B 机器跑不了,每个 CPU 微指令集不同。
  4. 不可复用——写完浏览器再写文件管理器,又得从头对着硬件重写。

解法:发明高级语言(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 上的原因。

关键命令

(本章为计算机基础理论,无实操命令)