One process. One byte requested. We follow it from libc to the spinning disk and back.
Your program calls read(fd, buf, n). glibc wraps it: arguments are placed in registers, and the SYSCALL instruction is issued.