对下半部分有一些疑问。在这里,我只考虑小任务。另外,我只考虑非抢占式内核。
假设考虑一个以太网驱动程序,其中 rx 中断处理正在执行大约 10 个函数调用。(糟糕的编程:))
现在,从性能的角度来看,如果可以将 9 个函数调用移动到一个 tasklet 并且只需要在中断处理中调用 1 个,那么我真的可以在 tcp 读取应用程序中获得一些好的性能吗?
或者换句话说,当切换到用户空间应用程序时,所有调度的小任务的9个函数调用都会被调用,实际上用户空间应用程序只有在“所有已调度的任务”完成后才能获取数据包和数据完全的 ?正确的?
我知道通过设置 bottom half ,我们启用了所有中断 .. 但我怀疑依赖中断的应用程序是否真的通过在中断处理程序本身或下半部分中拥有整个 10 个函数来获得任何东西。
简而言之,通过使用 tasklet,我可以在用户空间应用程序中获得性能改进吗?