Skip to content
linux/internals
Back to map

read() — a syscall, end to end

One process. One byte requested. We follow it from libc to the spinning disk and back.

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
Step 1 of 6