【发布时间】:2017-07-29 04:28:04
【问题描述】:
我已经阅读了有关用户空间和内核空间以及程序的执行路径如何将其从用户空间带到内核空间的信息,我想一个例子是如果我的程序像这样运行
Poco::Net::SocketAddress sender;
char buffer[64000];
.
.
.
socket.receiveFrom(buffer, sizeof(buffer), sender);
由于这个调用需要访问网卡,我认为它应该进入内核空间。
我的问题是: 当程序调用 socket.receivefrom(...) 时会发生什么
- 线程是否进入睡眠状态并放弃其核心,因为它正在运行 到内核空间,并且只有在 char 缓冲区被唤醒时才会被唤醒 写了
- 写入字符缓冲区后线程是否直接进入内核空间并返回用户空间
【问题讨论】:
标签: linux-kernel