{"name":"Linux","id":"操作系统-linux-Linux","content":"# Linux\n\n## 一、设计哲学与第一性原理（Why Linux Exists）\n\n### 1. Unix / Linux 的核心哲学\n\n**第一性原理：操作系统是资源管理系统**\n\nLinux 的本质职责只有三件事：\n\n* 管理 **CPU（进程调度）**\n* 管理 **内存（地址空间）**\n* 管理 **I/O（文件与设备）**\n\n所有用户看到的命令、工具、Shell，都是围绕这三类资源的“访问接口”。\n\n#### Unix 哲学\n\n* 一切皆文件（Everything is a file）\n* 用文本作为通用接口\n* 程序只做好一件事\n* 通过组合而非复杂性解决问题\n\n这些哲学直接塑造了：文件系统、管道、Shell、工具链生态。\n\n---\n\n### 2. GNU 与自由软件思想\n\nGNU 并不是一个工具集合，而是一种 **制度设计**。\n\n四大自由定义了软件与人的关系：\n\n* 使用自由\n* 研究自由\n* 修改自由\n* 再分发自由\n\nLinux 内核 + GNU 工具链 = 现代 Linux 操作系统。\n\n> **结论**：Linux 是技术系统 + 社会协作系统的结合体。\n\n---\n\n## 二、Linux 的核心抽象模型（What Linux Is）\n\n### 1. 进程模型（Process as Resource Container）\n\n#### 进程的本质\n\n进程不是“程序运行”，而是：\n\n> **操作系统分配资源的最小管理单元**\n\n一个进程包含：\n\n* 地址空间\n* 打开的文件描述符\n* CPU 调度上下文\n* 信号处理状态\n\n#### 进程状态模型\n\n* R：可运行（正在或可被调度）\n* S：可中断等待\n* D：不可中断等待（I/O）\n* T：暂停/调试\n* Z：僵尸（仅保留退出信息）\n\n> 僵尸进程的存在是为了 **保证父进程可以获取子进程的退出信息**。\n\n---\n\n### 2. 父子进程与生命周期\n\n* Linux 使用 **fork + exec** 创建进程\n* 退出的子进程会向父进程发送 **SIGCHLD**\n* 父进程必须调用 **wait / waitpid** 回收资源\n\n#### 孤儿进程\n\n* 父进程退出\n* 被 PID 1（init / systemd）接管\n\n#### 僵尸进程\n\n* 子进程已退出\n* 父进程未回收\n\n> 这是 **进程一致性设计**，不是 Bug。\n\n---\n\n### 3. 文件模型（File as Universal Interface）\n\n#### inode / block 抽象\n\nLinux 文件由两部分构成：\n\n* inode：元数据（权限、时间、位置）\n* block：真实数据\n\n文件名 ≠ 文件本体，只是目录中的一个映射。\n\n#### 设计收益\n\n* 支持硬链接\n* 权限与数据解耦\n* 支持高效缓存与恢复\n\n---\n\n### 4. 文件系统类型与设计取舍\n\n| 文件系统   | 核心设计          | 取舍         |\n| ------ | ------------- | ---------- |\n| FAT    | 链表式 block     | 简单 / 易碎片   |\n| ext2   | inode + block | 高效 / 不安全   |\n| ext3/4 | 日志            | 一致性 / 恢复能力 |\n\n> 日志文件系统的本质是 **用时间换一致性**。\n\n---\n\n### 5. 权限与安全模型\n\n#### 权限的设计对象\n\n* 文件 ≠ 内容\n* 目录 = 文件列表\n\n#### 权限含义重解释\n\n* r：是否可读取列表或内容\n* w：是否可修改列表或内容\n* x：是否可进入 / 执行\n\n> **目录的 x 权限是一切操作的前提**。\n\n---\n\n## 三、系统机制与执行模型（How Linux Works）\n\n### 1. Shell 的系统位置\n\nShell 不是内核，而是：\n\n> **用户态的命令调度与文本处理引擎**\n\nShell 的职责：\n\n* 解析命令\n* 查找可执行文件\n* 建立进程\n* 连接数据流\n\n---\n\n### 2. 命令执行查找模型\n\n执行顺序：\n\n1. 路径执行（./cmd）\n2. alias\n3. Shell 内建\n4. PATH 搜索\n\nPATH 是 **策略变量**，不是技术细节。\n\n---\n\n### 3. 数据流模型（重定向与管道）\n\n#### 三种标准流\n\n* stdin (0)\n* stdout (1)\n* stderr (2)\n\n#### 管道的本质\n\n> **管道是进程间的内存缓冲区**\n\n它实现了：\n\n* 解耦\n* 组合\n* 并行处理\n\n---\n\n## 四、工具链作为抽象的映射（Tools as Projection）\n\n### 1. 文件与目录操作（文件模型映射）\n\n* ls / cd / mkdir / rm\n* cp / mv / ln\n\n它们都是对 inode / 目录表的不同操作方式。\n\n---\n\n### 2. 搜索与过滤（文本流算子）\n\n统一模型：\n\n```text\n数据源 → 过滤 → 转换 → 聚合\n```\n\n| 工具        | 能力 |\n| --------- | -- |\n| grep      | 过滤 |\n| cut / awk | 投影 |\n| sort      | 排序 |\n| uniq      | 聚合 |\n\n---\n\n### 3. 压缩与打包\n\n* 压缩：降低存储体积\n* 打包：保持结构一致性\n\n> tar 是 **结构工具**，gzip 是 **算法工具**。\n\n---\n\n## 五、稳定认知总结（What to Remember Long-term）\n\n* Linux 是 **资源管理系统**\n* 进程是资源容器\n* 文件是统一接口\n* Shell 是用户态调度器\n* 工具是抽象的投影，而非知识本体\n\n> 记住模型，而不是命令。\n\n## 关联内容（自动生成）\n\n- [/操作系统/操作系统.md](/操作系统/操作系统.md) 操作系统的核心概念与架构，与Linux作为操作系统实现的关联\n- [/操作系统/进程与线程.md](/操作系统/进程与线程.md) 进程与线程的详细概念，与Linux进程模型密切相关\n- [/操作系统/文件管理.md](/操作系统/文件管理.md) 文件系统管理原理，与Linux文件模型和文件系统类型设计取舍相关\n- [/操作系统/内存管理.md](/操作系统/内存管理.md) 内存管理机制，与Linux虚拟内存模型相关\n- [/操作系统/linux/内核.md](/操作系统/linux/内核.md) Linux内核的深入解析，与本文档内容高度相关\n- [/操作系统/虚拟化.md](/操作系统/虚拟化.md) 虚拟化技术，与Linux容器化和虚拟化相关\n- [/操作系统/容器化.md](/操作系统/容器化.md) 容器技术，与Linux命名空间和控制组相关\n- [/计算机网络/网络编程.md](/计算机网络/网络编程.md) 网络编程与Linux系统调用相关\n- [/计算机网络/Linux虚拟化.md](/计算机网络/Linux虚拟化.md) Linux网络虚拟化技术\n- [/编程语言/JAVA/JAVA并发编程/线程.md](/编程语言/JAVA/JAVA并发编程/线程.md) 线程概念在不同系统中的实现\n- [/软件工程/架构/系统设计/分布式/分布式系统.md](/软件工程/架构/系统设计/分布式/分布式系统.md) 分布式系统与操作系统资源管理的关系\n- [/中间件/数据库/数据库.md](/中间件/数据库/数据库.md) 数据库系统与操作系统资源管理的交互\n- [/运维/Docker.md](/运维/Docker.md) Docker容器技术基于Linux内核特性实现\n- [/运维/K8s.md](/运维/K8s.md) Kubernetes容器编排系统与Linux系统的关系\n","metadata":"tags: ['操作系统']","hasMoreCommit":false,"totalCommits":9,"commitList":[{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2026-01-06T18:05:23+08:00","author":"MY","message":"docs(os/linux): 重构Linux文档结构并更新核心概念","hash":"8dfafb6b8ecf59f212a8376c529747608ad67fb6"},{"date":"2024-11-14T14:48:33+08:00","author":"MY","message":"📦操作系统","hash":"ada70dc25cbecbc90a16ef8d80d8dbe99e348414"},{"date":"2024-01-23T20:03:12+08:00","author":"MY","message":"✏Linux","hash":"bd6efb875b074e56cf4e2edf9df33fb35ead36cc"},{"date":"2022-04-28T23:35:20+08:00","author":"MY","message":"✏️更新 文件管理","hash":"80c87cad8d41117e99623d9e8daa920f619abeb5"},{"date":"2020-09-14T10:49:04+08:00","author":"MY","message":"✏更新 Linux","hash":"c3a3d9ec0142babb4a7d1a51ae635420ca2c8fb4"},{"date":"2020-09-13T21:38:40+08:00","author":"MY","message":"✏更新 Linux","hash":"35003e7767d8d5c1ccd75cbe446a32d53591bde7"},{"date":"2020-03-05T10:50:58+08:00","author":"MY","message":"linux 简单复习","hash":"2da6c9ff5b36f32e3aa45721a6aec15b4269d19e"},{"date":"2020-03-03T20:17:37+08:00","author":"MY","message":"linux 增加 ...文件系统","hash":"d31ef46a74e081cfb14463dfe68c7d6e1c4a7f10"}],"createTime":"2020-03-03T20:17:37+08:00"}