跳到内容
linux/internals
← 返回地图

read() —— 一次系统调用的完整旅程

一个进程,一个字节,我们跟随它从 libc 一路到磁盘并返回。

SYSCALL · ring 3 → ring 0HARDWAREYour programread(fd, buf, 4096)glibcsyscall(SYS_read, …) → SYSCALLSyscall entryentry_SYSCALL_64 → ksys_read()VFS / ext4f_op->read_iter → ext4_file_read_iterPage cachefilemap_get_pages()Block layersubmit_bio() → mq-deadlineNVMe deviceDMA → RAM
第 1 / 6