为什么用户程序要弄乱内核空间?

phu*_*ehe 9 kernel

我什至不确定问题是什么,但我说的是这里描述的内核攻击。在此评论列表中,有人询问了重新调整流程的问题。这个技巧并没有改善这种情况(机器仍然以非常缓慢的方式运行)并且回复评论说了一些关于内核空间与用户空间的问题。

首先,回复评论是否正确?如果是这样,为什么 renice 对用户空间中的东西有效,而不对内核空间中的东西有效?另外,根据我阅读的内容,用户自己启动的所有程序都应该在用户空间中,我错过了什么?

如果它是不正确的,那么为什么 renice 不改善这种情况呢?

Sha*_*off 9

内核为用户空间提供了一些服务(例如打开套接字)。有一个定义良好的接口 (API),用户空间程序可以通过它与内核进行交互。

在这种情况下,用户空间程序反复打开套接字并通过它们发送文件描述符,然后关闭套接字。这些操作由内核执行。它将文件描述符保存在缓冲区中,直到套接字的另一端读取它。特定的错误是垃圾收集器最终应该释放文件描述符,但它没有 - fd 被泄露。泄漏的 fds 加起来并坐在那里消耗资源。终止程序不会释放资源,因为它们不归程序所有。

  • 并且 renice 没有帮助的原因是它只影响进程获得的用户 CPU 时间份额有多大。为此,不计算在内核模式下花费的时间。一般来说,nice 只影响 CPU-bound 的程序,而不影响 IO-bound 的程序。这里的失控进程是纯 IO,它甚至没有执行那么多系统调用,因为错误是每个系统调用花费的时间太长。 (6认同)