The relationship between user and kernel virtual addresses has been discussed in a few questions before (links below), but as far as I understand it, the user process cannot read nor write to the Kernel addresses.
So, how does a user process share and receive data from the kernel?
Is it through memory? If so, where in the memory layout? Maybe CPU registers?
Related questions: