Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Linux 核心概念

参考文档:

偏「体系化 + 运维/架构视角」 的Linux 系统 · 核心概念 / 基础理论总览。

覆盖 RHEL / AlmaLinux 与 Debian / Ubuntu 系列。

一、Linux 的整体架构(从下到上)

+----------------------------------------------------+
                   应用程序 / 服务
        Nginx / MySQL / Docker / Kubernetes
+----------------------------------------------------+
                  用户空间 (User Space)
           shell / libc / systemd / PAM / udev
+----------------------------------------------------+
                   内核空间 (Kernel)
   进程管理 / 内存管理 / 文件系统 / 网络子系统 / 设备与驱动
    cgroups / namespaces / 虚拟化 / NUMA / security
+----------------------------------------------------+
            硬件 (CPU / RAM / Disk / NIC / GPU)
+----------------------------------------------------+

👉 Linux ≠ 发行版

  • Linux:内核
  • RHEL / Ubuntu:内核 + 工具链 + 策略集合

二、内核核心子系统(所有发行版共通)

Linux 内核空间五大核心子系统总览

┌──────────┐
    进程        ← 谁在跑?什么时候跑?
├──────────┤
    内存        ← 用多少内存?怎么用?会不会 OOM?
├──────────┤
    网络        ← 数据怎么进出机器?
├──────────┤
   文件系统      ← 数据怎么存、怎么读?
├──────────┤
   设备驱动      ← 怎么跟硬件说话?
└──────────┘

一句话总结:

  • 进程管“时间”
  • 内存管“空间”
  • 文件系统管“持久”
  • 网络管“流动”
  • 设备驱动管“硬件抽象”

1️⃣ 进程管理(Process Management)

作用

负责处理进程的创建、调度、终止以及进程间通信(IPC)

决定“哪个程序在什么时候用 CPU 跑多久”

核心职责

职责 说明
进程/线程管理 fork / exec / exit / wait
CPU 调度 谁先跑、跑多久
上下文切换 进程/线程切换
信号机制 kill、SIGTERM、SIGKILL
进程间通信 pipe / socket / shm / futex

核心机制

  • 调度器(Scheduler)
  • CFS(Completely Fair Scheduler)
  • 调度单位:线程(task_struct)
  • 调度类
  • CFS(普通进程)
  • RT(实时进程)
  • 状态机
  • running / sleeping / zombie / stopped

典型问题

现象 根因
load 很高但 CPU 空闲 IO 阻塞
进程卡死 D 状态(不可中断睡眠)
CPU 抢占严重 调度不公平 / cgroups

核心概念

  • PID / PPID
  • fork / exec
  • 调度器(CFS)
  • 优先级(nice / prio)

常用工具

ps aux
top / htop
pstree

2️⃣ 内存管理(Memory Management)

作用

负责管理物理内存和虚拟内存,为每个进程提供独立的虚拟地址空间

决定“内存怎么分配、怎么回收、怎么映射”

核心职责

职责 | 说明 虚拟内存 | 每个进程都有独立地址空间 物理内存 | RAM 管理 页缓存 | 加速文件 IO 内存回收 | reclaim / swap OOM | 内存耗尽时杀进程

核心机制

  • 虚拟内存
  • VA -> PA 映射
  • 页表(page table)
  • 页(Page)
  • 4K / HugePage
  • 缓存
  • Page Cache
  • Buffer Cache
  • NUMA
  • 本地内存 / 远端内存

典型问题

现象 根因
free 看着有内存却 OOM 可回收内存不足
IO 慢 Page Cache 抖动
数据库性能不稳 NUMA 跨节点访问
swap 抖动 swappiness 不合理

关键点

  • 虚拟内存
  • 页(Page)
  • 缓存(Page Cache)
  • Swap
  • OOM Killer

重要概念

RSS / VSZ / SHMEM
Buffer / Cache

常用工具

free -m
vmstat
smem

3️⃣ 文件系统(VFS)

作用

提供对存储设备上数据的组织、存储和访问能力

统一“文件”这一抽象,让程序不关心底层存储

核心职责

职责 说明
文件抽象 一切皆文件
目录结构 树状结构
权限管理 UID / GID / mode
缓存 加速 IO
挂载 多文件系统统一

核心机制

  • VFS(虚拟文件系统)
  • 统一接口
  • inode
  • 文件元数据
  • dentry
  • 目录缓存
  • page cache
  • 文件读写性能核心

典型问题

现象 根因
小文件多 IO 慢 inode / dentry 压力
df 有空间却写不了 inode 用尽
数据丢失 writeback 未完成
Docker 层慢 overlayfs copy-on-write

核心抽象

  • VFS(虚拟文件系统)
  • inode
  • dentry
  • superblock

常见 FS

FS 场景
ext4 通用
xfs 大文件 / 高并发
overlayfs 容器

工具

df -Th
df -i
mount

4️⃣ 网络子系统(Networking)

作用

实现各种网络协议,使 Linux 能够进行网络通信

负责“数据包如何进入、处理、发送出系统”

核心职责

职责 说明
协议栈 TCP/IP/UDP/ICMP
Socket 抽象 应用统一接口
路由 数据包去哪
防火墙 netfilter / nftables
QoS 限速、队列调度

核心机制

  • 协议栈
  • L2 -> L7
  • Socket
  • 用户态 ↔ 内核态接口
  • 队列
  • tx_queue / rx_queue
  • 中断 & NAPI
  • 网络包处理性能关键

典型问题

现象 根因
高并发 TCP 连接慢 backlog / somaxconn
丢包 网卡队列满
网络抖动 中断绑核不合理
容器网络复杂 namespace + veth

核心概念

  • TCP/IP 栈
  • Socket
  • netfilter
  • 路由表

工具

ip a
ip r
ss -lntup

5️⃣ 设备与驱动(Devices)

作用

内核与硬件设备通信的桥梁

让内核“能和硬件说话”

Linux内核中数量最多的代码就是设备驱动

核心职责

职责 说明
硬件抽象 屏蔽硬件差异
驱动管理 加载/卸载
中断处理 IRQ
DMA 高效数据传输
设备模型 sysfs / udev

核心机制

  • 驱动模型
  • bus / device / driver
  • 中断
  • IRQ / MSI-X
  • DMA
  • 零拷贝
  • 字符 / 块设备
  • /dev/xxx

典型问题

现象 根因
IO 抖动 中断集中
网卡性能低 IRQ 未绑核
磁盘慢 I/O scheduler 不匹配
启动慢 驱动加载阻塞

关键点

  • 字符设备 / 块设备
  • udev
  • /dev

工具

lsblk
udevadm info

6️⃣ 五大子系统如何协同(非常重要)

以 MySQL 一次查询 为例:

MySQL 进程
进程调度(CPU 时间片)
内存管理(Buffer Pool / Page Cache)
文件系统(VFS -> ext4 / xfs)
块设备层
设备驱动(NVMe / SATA)
硬件

网络请求则会多走一条:

网卡 -> 驱动 -> 网络栈 -> Socket -> MySQL

7️⃣ 总结

  • 进程:谁跑、什么时候跑
  • 内存:用多少、放哪、回不回
  • 网络:包怎么进、怎么出
  • 文件系统:数据怎么存、怎么读
  • 设备驱动:硬件怎么用

三、用户空间核心组件

1️⃣ Shell 与环境

项目 说明
bash / sh 命令解释
PATH 命令查找
env 环境变量
echo $PATH
env

2️⃣ GNU 工具链(通用)

  • coreutils:ls、cp、mv
  • util-linux:mount、fdisk
  • procps:ps、top

四、systemd(现代 Linux 的“中枢神经”)

systemd 管什么?

模块 功能
systemd init
journald 日志
networkd 网络
resolved DNS
timedated 时间

target ≈ runlevel

target 含义
multi-user.target 服务器模式
graphical.target 桌面
rescue.target 单用户
emergency.target 紧急

五、软件包管理(发行版差异重点)

RHEL / AlmaLinux

项目 工具
包管理 rpm
前端 dnf
仓库 BaseOS / AppStream
第三方 EPEL
dnf install nginx
dnf update

Debian / Ubuntu

项目 工具
包管理 dpkg
前端 apt
仓库 main / universe
第三方 PPA
apt install nginx
apt upgrade

六、文件系统层级(FHS)

目录 含义
/
/etc 配置
/var 变化数据
/usr 程序
/bin /sbin 基础命令
/proc 进程
/sys 内核接口

七、权限与安全模型

1️⃣ 用户 / 组 / 权限

rwx rwx rwx
  • UID / GID
  • suid / sgid / sticky

2️⃣ PAM

  • 登录认证
  • sudo
  • ssh

3️⃣ MAC

系统 发行版
SELinux RHEL / AlmaLinux
AppArmor Ubuntu

八、启动流程(BIOS -> Shell)

BIOS/UEFI
GRUB
Kernel
initramfs
systemd
services

九、日志体系

系统 日志
journal systemd
rsyslog 传统
/var/log 文本
journalctl
journalctl -u sshd

十、网络配置差异

RHEL / AlmaLinux

  • NetworkManager
  • nmcli

Debian / Ubuntu

  • netplan
  • systemd-networkd

十一、容器与虚拟化基础

技术 核心
namespace 隔离
cgroup 资源
overlayfs 存储
KVM 虚拟化

十二、资源限制与调优

  • ulimit
  • cgroup
  • sysctl
ulimit -n
sysctl -a

十三、发行版设计哲学差异(很重要)

维度 RHEL / AlmaLinux Debian / Ubuntu
稳定性 极高
更新频率
默认安全 SELinux AppArmor
企业支持

十四、运维视角的 Linux 能力模型

可以把 Linux 能力分成 5 层:

  1. 系统结构
  2. 资源管理
  3. 服务管理
  4. 安全模型
  5. 故障排查

十五、总结

Linux 的本质是:内核负责“规则”,用户空间负责“使用规则”,发行版负责“默认策略”。