最初我认为要使代码更快,最好尝试减少内核和用户空间之间的转换——通过推动更多代码在内核中运行。然而,我在一些类似 SO 的论坛上读到,实际上相反的情况已经完成——更多的代码被推送到用户空间。为什么是这样?这似乎违反直觉?将更多代码放入用户空间仍然需要内核-用户转换,而将代码放入内核并不需要内核-用户转换?
万一有人问-我正在考虑处理数据包数据的应用程序。
编辑
所以更多细节,我正在考虑数据包数据何时到达 - 我想重写网络堆栈并删除不适用于我的数据包处理并且零复制的代码 - 将数据包数据放在用户程序可以的地方尽快访问它。