内核线程和用户线程优先级

ran*_*nsh 5 linux multithreading kernel

我们尝试评估在用户或内核中执行一些与硬件相关的任务是否更好。该任务必须响应中断并执行一些将数据复制到物理(映射)内存空间的任务。

根据我的理解,相同的任务可以在用户空间或内核中完成。

唯一未解决的问题是内核线程优先级是否高于用户线程优先级。

我们将用于pthread用户空间或kthread内核线程。

所以,我的问题是:

当两个线程就绪时,内核线程是否比用户线程具有更高的优先级?

编辑: 如果kthread_create是使用SCHED_FIFO创建的并给定优先级x,并且pthread_create是使用SCHED_FIFO创建并给定优先级y,并且pthread的优先级高于kthread,那么kthread是否仍会在用户线程之前进入调度程序?

谢谢你!

Sum*_*ini 4

用户线程必须始终可被内核模式线程抢占,因为内核模式线程需要响应硬件事件。这是由于操作系统设计而发生的。

内核线程比用户线程具有更高的优先级,因为内核线程用于向应用程序提供特权服务。

除此之外,内核还使用它们来跟踪系统上正在运行的所有内容、为哪些进程分配了多少资源以及对它们进行调度。

如您所知,用户空间中存在的每个线程都有一个相应的内核线程,因此如果系统范围(内核)中的进程的线程具有足够高的优先级,它们将同时被调度到多个 CPU 上。意味着其他内核线程将被代表用户空间运行的该内核线程抢占。