Skip to content

Linux技术栈总览

一句话定位:Linux 是免费开源的类 Unix 多用户、多任务操作系统,核心设计「一切皆文件」+「用户态/内核态双模式」;以 inode 索引文件、以 runlevel 划分运行态、以管道/信号/共享内存等 IPC 串联进程,是服务器与云原生的底座。

体系结构(用户空间 vs 内核空间)

空间内容权限
用户空间应用程序、C 库受限,通过系统调用访问内核能力
内核空间系统调用接口、内核、架构相关代码无限制访问指令/内存/IO
  • 分为两态的原因:现代 CPU 有不同工作模式,指令与寄存器访问权限不同;为了保护内核安全
  • 用户态 → 内核态转移只有两条路:系统调用 / 硬件中断

核心机制

机制说明
一切皆文件硬件设备也是设备文件,用读写文件的方式访问硬件
inode存储文件元信息(大小/所有者/权限/磁盘地址表)的索引节点;文件数据存在 block 中,inode 是「找到 block 的索引」
硬链接指向同一 inode 的多个目录项;不能跨分区、不能链接目录;删除原文件不影响其他硬链接
软链接独立 inode 保存原文件路径;可跨分区/跨机器;原文件移动后失效
交换空间RAM 不足时临时保存并发程序的内存空间

inode 细节:inode 节点 64 字节,含磁盘地址表(13 个块号)——文件按块号顺序读,把分散的物理块组织成逻辑文件。

目录结构(FHS 常见目录)

目录用途
/bin /sbin常用命令 / root 才能用的系统管理命令
/etc系统管理与配置文件
/home /root普通用户主目录 / 超级用户主目录
/usr /opt系统应用程序 / 额外安装的可选应用(如 Tomcat)
/proc虚拟文件系统,系统内存映射,读它拿系统信息
/dev设备文件
/boot系统引导文件
/var运行时变化数据、服务日志
/tmp公共临时文件
/mnt临时挂载点
/lost+found非正常关机留下的孤儿文件

开机启动流程

加电自检(BIOS) → 读 MBR 引导文件(GRUB/LILO) → 引导内核 → 运行第一个进程 init(PID=1) → 进入对应运行级别 → 运行终端登录

运行级别(SysV):0=关机 · 1=单用户模式 · 2=字符多用户(无网络) · 3=字符多用户 · 4=未分配 · 5=图形多用户 · 6=重启。

进程状态(ps 符号)

状态含义备注
R运行中/就绪队列只有 R 状态能在 CPU 上运行
S可中断睡眠等待事件(socket/信号量)
D不可中断睡眠通常等 IO;无法终止,只能等资源恢复或重启
T暂停/被跟踪SIGSTOP 触发
Z僵尸进程已退出但父进程未 wait4() 回收

IPC 进程间通信(7 种)

管道(Pipe/命名管道 FIFO) · 信号(Signal) · 消息队列 · 共享内存(最快)· 信号量(同步)· 套接字(Socket,可跨机器) —— 详见 概念卡片:进程间通信与线程同步

内核知识(驱动开发向)

  • 内核锁:自旋锁(忙等,短临界区)vs 信号量(睡眠锁,长持有场景;中断上下文不能用信号量)。
  • 模块insmod 加载 / rmmod 卸载;模块运行在内核空间,不能链接用户态库函数
  • 设备:字符设备(cdev)与块设备;主设备号=驱动、次设备号=设备实例(dev_t 32 位:12 位主 + 20 位次)。
  • 软中断 vs 工作队列:软中断不能睡眠、处于中断上下文(上半部);工作队列在进程上下文、可睡眠(下半部)。
  • TLB:页表缓存,加速线性→物理地址转换。

常见误解

  • 以为硬链接/软链接删除行为一样 → 删除原文件:硬链接仍可访问,软链接失效
  • 以为 inode 存的是文件内容 → 存的是元信息 + 磁盘地址表,内容在 block。
  • 以为只有系统调用能进内核 → 硬件中断也可以(如网卡收包)。

关联

最近更新