0
我已经读过关于用户空间和内核空间以及程序的执行路径如何从用户空间到内核空间的内容,我想这是一个例子,如果我的程序像这样运行程序访问内核空间时会发生什么
Poco::Net::SocketAddress sender;
char buffer[64000];
.
.
.
socket.receiveFrom(buffer, sizeof(buffer), sender);
由于这次调用需要访问网卡,我认为它应该进入内核空间。
我的问题是: 因为程序会发生什么事让socket.receivefrom(...)调用
- 是否线程进入睡眠状态,并放弃它的核心,因为它会 到内核空间只有被唤醒时,字符缓冲区已经 书面
- 是否线程直接到内核空间,然后回来给用户空间写入的字符缓冲区
查看https://unix.stackexchange.com/questions/370975/does-a-context-switch-occurs-when-an-interrupt-is-fired –