【Linux 系列·第 01 篇】全景图:从 Unix 到 Linux——操作系统的前世今生与核心哲学

系列前言:2024 年,Linux 统治了服务器(96%+)、超算(100%)、智能手机(Android,72%+)、云计算(99%+)和深度学习(99%+)。但回到 1991 年,Linux 只是芬兰大学生 Linus Torvalds 的一个业余项目——“只是个爱好,不会像 GNU 那样大而专业”。33 年后,这个"爱好"改变了世界。为什么?因为 Linux 站在了 Unix 的肩膀上(哲学),借了 GNU 的东风(自由),乘了互联网的浪潮(协作)。Linux 的三大哲学——一切皆文件、管道组合、一事一工具——不仅是操作系统的设计原则,更是一种思维方式:简单×组合=无限可能。本系列将从全景图出发,用六篇文章覆盖 Linux 的操作系统原理、常用命令、进阶技能、深度学习环境、生产实践。这是第一篇:全景图——从 Unix 到 Linux 的前世今生与核心哲学。


📑 文章目录


📜 一、四代演进:从 Multics 到 Linux

在这里插入图片描述

1.1 第一代:Multics(1964-1970)——"大而全"的失败

1964 年,MIT、贝尔实验室和通用电气联合启动了 Multics(Multiplexed Information and Computing Service)项目——试图构建一个"大而全"的分时操作系统,支持多用户、多任务、多级存储。Multics 的设计目标是宏大的:一个能满足所有人需求的操作系统。

但 Multics 失败了。项目过于庞大复杂,开发进度严重滞后,性能远低于预期。1969 年,贝尔实验室退出了 Multics 项目。但 Multics 留下了宝贵的遗产:分时系统(多用户共享一台计算机)、层级文件系统(目录树结构)、动态链接(运行时加载共享库)。这些概念成为了后来 Unix 的基石。

Multics 的教训:大而全的系统容易失败。这个教训直接影响了 Unix 的设计哲学——小而美,一事一工具。

1.2 第二代:Unix(1969-1980s)——"小而美"的革命

1969 年,贝尔实验室的 Ken Thompson 在退出 Multics 项目后,在一台废弃的 DEC PDP-7 小型机上写了一个简单的操作系统——这就是 Unix 的起源。1970 年,Dennis Ritchie 加入了开发,用他发明的 C 语言重写了 Unix——这是第一个用高级语言编写的操作系统,使 Unix 可以轻松移植到不同硬件。

Unix 的三大创新:管道(Pipe,1973)——让程序的输出成为另一个程序的输入,实现程序间的灵活组合;Shell(1975)——命令行解释器,让用户可以用文本命令控制计算机;C 语言重写(1973)——使 Unix 不再绑定特定硬件,可以运行在任何机器上。

Unix 的哲学在发展中逐渐清晰:一切皆文件——所有资源(设备、管道、Socket)统一为文件接口;管道组合——小程序通过管道组合完成复杂任务;一事一工具——每个程序只做一件事,做到最好。这三大哲学至今仍是 Linux 的核心。

1.3 第三代:GNU(1983-1991)——"自由"的运动

1983 年,MIT 的 Richard Stallman 发起了 GNU(GNU’s Not Unix)项目——目标是创建一个完全自由的类 Unix 操作系统。Stallman 认为,软件应该是自由的——用户有权使用、修改、分发软件。1985 年,他创立了自由软件基金会(FSF),1989 年发布了 GPL(GNU General Public License)——第一个"版权左派"(Copyleft)许可证,要求所有衍生作品也必须开源。

到 1991 年,GNU 项目已经开发了几乎所有操作系统的组件:GCC(编译器)、glibc(C 库)、Bash(Shell)、Coreutils(基础工具)、Emacs(编辑器)。但 GNU 缺少一个关键组件:内核。GNU 自己的内核 Hurd 开发进度缓慢,迟迟无法完成。

GNU 的贡献:自由软件运动——软件应该是自由的;GPL 许可证——保障自由的制度工具;完整工具链——GCC/Bash/Coreutils 至今仍是 Linux 的基础。没有 GNU,就没有 Linux 的自由。

1.4 第四代:Linux(1991-至今)——"协作"的奇迹

1991 年 8 月 25 日,芬兰赫尔辛基大学的学生 Linus Torvalds 在 comp.os.minix 新闻组发了一条消息:“我正在写一个免费的操作系统(只是个爱好,不会像 GNU 那样大而专业)”。这就是 Linux 的诞生。

Linux 的关键决策:1992 年采用 GPL 许可证——这意味着 Linux 内核与 GNU 工具链完美结合,形成了完整的 GNU/Linux 操作系统。互联网协作开发——Linus 不是一个人在写代码,而是通过互联网汇聚了全球开发者的贡献。模块化设计——Linux 内核采用模块化架构,允许动态加载驱动和功能模块。

Linux 的里程碑:1994 年 Linux 1.0 发布;1996 年 Linux 2.0 支持对称多处理(SMP);2005 年 Linus 创建了 Git 版本控制系统来管理 Linux 内核开发;2007 年 Android 发布,基于 Linux 内核;2011 年 Linux 3.0;2024 年 Linux 6.x,代码量超过 3000 万行。

今天,Linux 的统治力:服务器 96%+(AWS/Azure/GCP 几乎全是 Linux)、超算 100%(全球 Top500 超算全部运行 Linux)、智能手机 72%+(Android 基于 Linux 内核)、云计算 99%+(Docker/Kubernetes 运行在 Linux 上)、深度学习 99%+(PyTorch/TensorFlow 首选 Linux)。


🏗️ 二、Linux 架构与三大哲学

在这里插入图片描述

2.1 三层架构:用户空间·内核空间·硬件层

Linux 采用经典的分层架构:用户空间(Ring 3)→ 内核空间(Ring 0)→ 硬件层。用户空间的应用程序通过系统调用(System Call)请求内核服务——比如读写文件(open/read/write)、创建进程(fork/exec)、网络通信(socket/connect)。

用户空间运行应用程序、系统库(glibc)和 Shell。应用程序不直接访问硬件,而是通过系统调用请求内核服务。这种隔离保证了安全性——一个程序的错误不会导致整个系统崩溃。

内核空间是操作系统的核心,拥有对硬件的完全控制权。Linux 内核包含五大子系统:进程调度器(CFS,完全公平调度器)、内存管理器(页表、SLAB 分配器、虚拟内存)、虚拟文件系统(VFS,统一不同文件系统的接口)、网络协议栈(TCP/IP)、设备驱动(块设备、字符设备、网络设备)。

系统调用是用户空间和内核空间的桥梁——大约 400 个系统调用构成了 Linux 的 API。strace 命令可以追踪程序的系统调用,是调试的利器。

2.2 Unix 三大哲学

一切皆文件(Everything is a File)。Linux 将所有资源统一为文件接口——普通文件、目录、设备(/dev/sda)、管道(|)、Socket、/proc(进程信息)、/sys(内核参数)都可以用 read/write/open/close 操作。这意味着你不需要为每种资源学习不同的 API——文件 API 就是通用 API。

一切皆文件的威力:cat /proc/cpuinfo 查看 CPU 信息,echo 1 > /proc/sys/net/ipv4/ip_forward 开启 IP 转发,dd if=/dev/zero of=file bs=1M count=100 创建 100MB 空文件——所有操作都是文件操作。

管道组合(Pipes and Filters)。Unix 管道(|)让一个程序的输出成为另一个程序的输入——每个程序是一个过滤器(Filter),管道将过滤器串联成处理流水线。经典示例:cat access.log | grep "404" | awk '{print $7}' | sort | uniq -c | sort -rn | head -10——6 个简单命令组合,完成"统计 404 错误最多的 10 个 URL"这个复杂任务。

管道组合的哲学意义:不需要写一个复杂的程序来完成复杂任务,而是组合简单的程序。这就像乐高积木——每个积木很简单,但组合起来可以构建任何东西。

一事一工具(Do One Thing Well)。每个 Unix/Linux 工具只做一件事,做到最好:grep 只搜索文本、sort 只排序、awk 只处理文本、sed 只编辑流、find 只查找文件、xargs 只构建参数。这些工具各自简单,但通过管道组合可以完成几乎任何文本处理任务。

一事一工具的反面是"大而全"——Windows 的注册表、Office 的宏、IDE 的内置终端。大而全的工具看似方便,但难以组合、难以自动化、难以替换。


📦 三、发行版与系列路线图

在这里插入图片描述

3.1 三大发行版家族

Ubuntu/Debian 系。Ubuntu 是最流行的 Linux 发行版,基于 Debian。apt 包管理器简单易用,LTS(长期支持)版本提供 5 年安全更新,PPA 提供第三方软件源。Ubuntu 是深度学习的首选——NVIDIA 官方驱动、CUDA、PyTorch 都优先支持 Ubuntu。Docker 最常用的基础镜像也是 Ubuntu。

CentOS/RHEL 系。RHEL(Red Hat Enterprise Linux)是企业级服务器标准,提供 10 年支持周期和商业支持。CentOS 曾经是 RHEL 的免费版本,2020 年 Red Hat 改变了 CentOS 的发布策略后,Rocky Linux 和 AlmaLinux 接棒成为社区版 RHEL。yum/dnf 包管理器,SELinux 安全增强。

Arch Linux 系。Arch Linux 是最灵活的发行版——滚动更新(始终是最新软件)、极简安装(只安装基础系统)、AUR(Arch User Repository,海量用户贡献的软件包)、Arch Wiki(最全的 Linux 文档)。Manjaro 是 Arch 的友好版,降低了安装和使用门槛。

3.2 系列路线图

本系列六篇文章的规划:

第 01 篇:全景图(本文)——Linux 的前世今生与核心哲学。从 Multics 的失败到 Unix 的革命,从 GNU 的自由运动到 Linux 的协作奇迹。三大哲学:一切皆文件、管道组合、一事一工具。

第 02 篇:操作系统原理——Linux 怎么工作?进程管理(创建/调度/通信/终止)、内存管理(虚拟内存/页表/SLAB/交换)、文件系统(VFS/ext4/挂载/索引节点)、I/O 系统(块设备/字符设备/缓冲区)。理解原理是高效使用 Linux 的基础。

第 03 篇:常用命令——怎么用 Linux?文件操作(ls/cp/mv/rm/find/grep)、进程管理(ps/top/htop/kill/nice)、网络工具(ip/ss/curl/wget/tcpdump)、系统管理(systemd/journalctl/crontab/ssh)。命令行是 Linux 最强大的接口。

第 04 篇:Linux 进阶——怎么用好 Linux?Shell 脚本编程(变量/条件/循环/函数)、权限与安全(用户/组/权限/sudo/SELinux)、包管理(apt/yum/dnf/编译安装)、服务管理(systemd/定时任务/日志)。

第 05 篇:Linux 与深度学习——怎么在 Linux 上炼模型?GPU 驱动与 CUDA、Python 环境管理(conda/venv)、Docker 容器化、分布式训练(SSH/NCCL/Slurm)。Linux 是深度学习的基石。

第 06 篇:生产实践——怎么把 Linux 用在生产环境?服务器部署(Nginx/数据库/应用)、监控与告警(Prometheus/Grafana)、性能调优(CPU/内存/磁盘/网络)、安全加固(防火墙/SSH/审计)。


📊 总结对比

操作系统演进

维度 Multics Unix GNU Linux
年代 1964-70 1969-80s 1983-91 1991-至今
核心理念 大而全 小而美 自由 协作
结果 失败 成功 缺内核 统治世界

Linux vs Unix vs Windows

维度 Unix Windows Linux
开源 闭源 闭源 开源
成本 昂贵 免费
定制性 极高
服务器 统治
超算 100%
深度学习 极少 统治

一句话总结

Linux 的前世今生:四代演进——Multics(1964-70,大而全的失败,教训:复杂系统容易崩溃)→ Unix(1969-80s,小而美的革命,三大哲学:一切皆文件/管道组合/一事一工具,C语言重写可移植)→ GNU(1983-91,自由软件运动,GPL许可证保障自由,完整工具链GCC/Bash/Coreutils,缺内核)→ Linux(1991-至今,协作的奇迹,Linus的爱好+GPL+互联网协作=统治世界,服务器96%+/超算100%/手机72%+/深度学习99%+)。Linux 三层架构:用户空间(Ring 3,应用程序/系统库/Shell,受限访问)→ 内核空间(Ring 0,进程调度/内存管理/VFS/网络/驱动,完全控制)→ 硬件层(CPU/内存/磁盘/网卡),系统调用是桥梁约400个。三大哲学:一切皆文件(统一接口read/write/open/close)、管道组合(简单程序×管道=复杂任务)、一事一工具(每个程序做到极致可组合)。三大发行版:Ubuntu/Debian(最友好,深度学习首选)、CentOS/RHEL(最稳定,企业服务器标准)、Arch Linux(最灵活,滚动更新AUR)。系列六篇:全景图→OS原理→常用命令→进阶→深度学习→生产实践。Linux 的力量 = Unix哲学 + GNU自由 + 互联网协作。


参考链接

系列预告:第 02 篇将深入操作系统原理——进程管理·内存管理·文件系统·I/O 系统,理解 Linux 怎么工作。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐