虚拟文件系统:为什么这个抽象层统治了Linux文件访问三十年

一个看似简单的问题 当你在Linux终端输入cp /home/user/file.txt /mnt/usb/backup/时,系统在做什么?源文件位于ext4格式的SSD上,目标目录在FAT32格式的U盘里。这两种文件系统的数据结构完全不同——ext4使用extent树管理块分配,FAT32依靠链式的FAT表。然而,cp命令对这种差异一无所知。 ...

20 min · 9804 words

系统调用的完整旅程:一行代码如何跨越用户态和内核态的鸿沟

一行代码的千里之行 当你写下 write(1, "Hello, World!\n", 14) 这行代码时,你实际上正在发起一场跨越两个世界的旅行。这行代码将穿越CPU的特权级边界,从你熟悉的用户空间进入神秘的内核空间,完成一次完整的系统调用。 ...

15 min · 7243 words

从按下电源键到看见桌面:计算机启动的完整技术解析

按下电源键的那一刻,你可能正在思考早餐吃什么,或者今天的工作计划。而在这短短的几秒到几十秒内,你的计算机正在完成一场精密的接力赛:从电流涌入电路板,到操作系统完全接管控制权,数以百计的组件必须按特定顺序初始化,任何一步出错都会让屏幕保持黑色。 ...

21 min · 10278 words

网络协议栈:一个数据包的内核之旅

当一个网络数据包抵达服务器的网卡时,它需要在微秒级的时间内穿越数十个内核函数、跨越多个协议层、经过复杂的队列管理,最终才能被应用程序读取。这个过程的效率直接决定了服务器的网络吞吐量和延迟。理解这条路径,是解决网络性能问题、优化系统配置、甚至编写高性能网络程序的基础。 ...

20 min · 9912 words

io_uring如何让Linux I/O性能翻倍:从环形缓冲区到零拷贝的技术革命

2019年5月,Linux 5.1内核合并了一个名为io_uring的新子系统。三年后,这项技术已经成为高性能数据库、存储引擎和网络服务的标配。从Redis到PostgreSQL,从Nginx到Envoy,越来越多的系统开始迁移到这个新接口。 ...

18 min · 8651 words