【Linux 系列·第 01 篇】全景图:从 Unix 到 Linux——操作系统的前世今生与核心哲学
【Linux 系列·第 01 篇】全景图从 Unix 到 Linux——操作系统的前世今生与核心哲学系列前言2024 年Linux 统治了服务器96%、超算100%、智能手机Android72%、云计算99%和深度学习99%。但回到 1991 年Linux 只是芬兰大学生 Linus Torvalds 的一个业余项目——“只是个爱好不会像 GNU 那样大而专业”。33 年后这个爱好改变了世界。为什么因为 Linux 站在了 Unix 的肩膀上哲学借了 GNU 的东风自由乘了互联网的浪潮协作。Linux 的三大哲学——一切皆文件、管道组合、一事一工具——不仅是操作系统的设计原则更是一种思维方式简单×组合无限可能。本系列将从全景图出发用六篇文章覆盖 Linux 的操作系统原理、常用命令、进阶技能、深度学习环境、生产实践。这是第一篇全景图——从 Unix 到 Linux 的前世今生与核心哲学。 文章目录 一、四代演进从 Multics 到 Linux️ 二、Linux 架构与三大哲学 三、发行版与系列路线图 一、四代演进从 Multics 到 Linux1.1 第一代Multics1964-1970——大而全的失败1964 年MIT、贝尔实验室和通用电气联合启动了 MulticsMultiplexed Information and Computing Service项目——试图构建一个大而全的分时操作系统支持多用户、多任务、多级存储。Multics 的设计目标是宏大的一个能满足所有人需求的操作系统。但 Multics 失败了。项目过于庞大复杂开发进度严重滞后性能远低于预期。1969 年贝尔实验室退出了 Multics 项目。但 Multics 留下了宝贵的遗产分时系统多用户共享一台计算机、层级文件系统目录树结构、动态链接运行时加载共享库。这些概念成为了后来 Unix 的基石。Multics 的教训大而全的系统容易失败。这个教训直接影响了 Unix 的设计哲学——小而美一事一工具。1.2 第二代Unix1969-1980s——小而美的革命1969 年贝尔实验室的 Ken Thompson 在退出 Multics 项目后在一台废弃的 DEC PDP-7 小型机上写了一个简单的操作系统——这就是 Unix 的起源。1970 年Dennis Ritchie 加入了开发用他发明的 C 语言重写了 Unix——这是第一个用高级语言编写的操作系统使 Unix 可以轻松移植到不同硬件。Unix 的三大创新管道Pipe1973——让程序的输出成为另一个程序的输入实现程序间的灵活组合Shell1975——命令行解释器让用户可以用文本命令控制计算机C 语言重写1973——使 Unix 不再绑定特定硬件可以运行在任何机器上。Unix 的哲学在发展中逐渐清晰一切皆文件——所有资源设备、管道、Socket统一为文件接口管道组合——小程序通过管道组合完成复杂任务一事一工具——每个程序只做一件事做到最好。这三大哲学至今仍是 Linux 的核心。1.3 第三代GNU1983-1991——自由的运动1983 年MIT 的 Richard Stallman 发起了 GNUGNU’s Not Unix项目——目标是创建一个完全自由的类 Unix 操作系统。Stallman 认为软件应该是自由的——用户有权使用、修改、分发软件。1985 年他创立了自由软件基金会FSF1989 年发布了 GPLGNU General Public License——第一个版权左派Copyleft许可证要求所有衍生作品也必须开源。到 1991 年GNU 项目已经开发了几乎所有操作系统的组件GCC编译器、glibcC 库、BashShell、Coreutils基础工具、Emacs编辑器。但 GNU 缺少一个关键组件内核。GNU 自己的内核 Hurd 开发进度缓慢迟迟无法完成。GNU 的贡献自由软件运动——软件应该是自由的GPL 许可证——保障自由的制度工具完整工具链——GCC/Bash/Coreutils 至今仍是 Linux 的基础。没有 GNU就没有 Linux 的自由。1.4 第四代Linux1991-至今——协作的奇迹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 支持对称多处理SMP2005 年 Linus 创建了 Git 版本控制系统来管理 Linux 内核开发2007 年 Android 发布基于 Linux 内核2011 年 Linux 3.02024 年 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 offile bs1M count100创建 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 系。RHELRed Hat Enterprise Linux是企业级服务器标准提供 10 年支持周期和商业支持。CentOS 曾经是 RHEL 的免费版本2020 年 Red Hat 改变了 CentOS 的发布策略后Rocky Linux 和 AlmaLinux 接棒成为社区版 RHEL。yum/dnf 包管理器SELinux 安全增强。Arch Linux 系。Arch Linux 是最灵活的发行版——滚动更新始终是最新软件、极简安装只安装基础系统、AURArch 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 进阶——怎么用好 LinuxShell 脚本编程变量/条件/循环/函数、权限与安全用户/组/权限/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/审计。 总结对比操作系统演进维度MulticsUnixGNULinux年代1964-701969-80s1983-911991-至今核心理念大而全小而美自由协作结果失败成功缺内核统治世界Linux vs Unix vs Windows维度UnixWindowsLinux开源闭源闭源开源成本昂贵中免费定制性低低极高服务器中中统治超算少无100%深度学习少极少统治一句话总结Linux 的前世今生四代演进——Multics1964-70大而全的失败教训复杂系统容易崩溃→ Unix1969-80s小而美的革命三大哲学一切皆文件/管道组合/一事一工具C语言重写可移植→ GNU1983-91自由软件运动GPL许可证保障自由完整工具链GCC/Bash/Coreutils缺内核→ Linux1991-至今协作的奇迹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自由 互联网协作。参考链接The Linux Kernel ArchivesLinux Timeline (TuxCare)The Unix Philosophy (Eric Raymond)GNU ProjectUbuntuArch Wiki系列预告第 02 篇将深入操作系统原理——进程管理·内存管理·文件系统·I/O 系统理解 Linux 怎么工作。