首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Syscalls:用户是如何将数据传递/接收到内核的?

Syscalls:用户是如何将数据传递/接收到内核的?
EN

Unix & Linux用户
提问于 2020-07-07 18:27:20
回答 1查看 1.1K关注 0票数 1

在前面的几个问题(下面的链接)中已经讨论了用户和内核虚拟地址之间的关系,但据我所知,用户进程不能读写内核地址。

那么,用户进程如何从内核共享和接收数据呢?

是通过记忆吗?如果是的话,内存布局在哪里?也许是CPU寄存器?

相关问题:

EN

回答 1

Unix & Linux用户

发布于 2020-07-07 20:46:10

用户进程无法读取或写入内核地址。

不是,但是内核可以读取和写入用户地址,如果/当它想要的时候。Linux系统调用在CPU寄存器中传递系统调用号和参数。(查找类似于"Linux系统调用约定“之类的内容。)

其中一些参数可能是指针,在这种情况下,内核知道如何在用户地址空间中查找指向位置中的数据。据我所知,在使用数据之前,内核实际上会将数据复制到内核空间。(否则,另一个用户空间线程可能在系统调用期间修改数据。)但是,根据程序的要求,数据的位置可以在用户地址空间中的任何位置。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/597241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档