I think the current design comes from the fact that calling the kernel is expensive so it's best not to do it too often.
Maybe with the new ways of interacting with the kernel, like io_uring it can be cheaper.
Maybe with the new ways of interacting with the kernel, like io_uring it can be cheaper.