Linux包含一些称为内核线程的特权进程。是否有任何调度程序运行/挂起它们?如果是,该调度程序是否与系统调度程序相同(我是指调度整个系统进程的调度程序)?
答案 0 :(得分:1)
Linux调度程序正在调度任务。这些可以是
kswapd
)或bash
)或多线程进程的许多线程是共享公共地址空间的任务(以及其他东西,例如文件描述符)。
AFAIK,调度程序不会将内核线程与其他任务分开。但调度程序确实考虑了调度策略(sched_setscheduler(2))和优先级(setpriority(2))(对于大多数内核线程,优先级通常非常高)。见sched(7)
答案 1 :(得分:1)
是的!让我在这里澄清系统调度程序部分。
每个任务都与一个task_struct相关联,其中包含每个任务的详细信息,例如它的pid,它的名称,最近启动的时间,优先级等等。http://lxr.free-electrons.com/source/include/linux/sched.h#L1224
通常根据任务的优先级,公平调度程序或实时调度程序启动并且这些共存。为了保持简单而不详细,这些是不同的调度算法,可以满足不同类型的任务。
现在内核线程也有一个关联的task_struct,而@Basile Starynkevitch指出了几个KPI,我们可以使用sched_setparam KPI修改sched params并更改任务所属的调度程序取决于他们将要做什么。