在前面的几个问题(下面的链接)中已经讨论了用户和内核虚拟地址之间的关系,但据我所知,用户进程不能读写内核地址。
那么,用户进程如何从内核共享和接收数据呢?
是通过记忆吗?如果是的话,内存布局在哪里?也许是CPU寄存器?
相关问题:

发布于 2020-07-07 20:46:10
用户进程无法读取或写入内核地址。
不是,但是内核可以读取和写入用户地址,如果/当它想要的时候。Linux系统调用在CPU寄存器中传递系统调用号和参数。(查找类似于"Linux系统调用约定“之类的内容。)
其中一些参数可能是指针,在这种情况下,内核知道如何在用户地址空间中查找指向位置中的数据。据我所知,在使用数据之前,内核实际上会将数据复制到内核空间。(否则,另一个用户空间线程可能在系统调用期间修改数据。)但是,根据程序的要求,数据的位置可以在用户地址空间中的任何位置。
https://unix.stackexchange.com/questions/597241
复制相似问题