title: The implementation of read: Is copying memory to kernel space firstly better than user space directly?
body: <p>When a process is blocked after the calling of "read", the kernel reads data from ios and coping it to the buffer, but where is the buffer, in the kernel or in the user space(which is the parameter of the "read" function).It saves coping from kernel space to user space for the later choice, furthermore, there is much more buffer in the user space. But it should change the cr3 every time when coping, which flushes all the TLB data. That is what I know for the two choices, Is there anything else?</p>