【发布时间】:2014-10-23 20:39:52
【问题描述】:
Linux 包含一些称为内核线程的特权进程。是否有运行/暂停它们的调度程序?如果是,这个调度器是否与系统调度器相同(我的意思是调度整个系统进程的调度器)?
【问题讨论】:
标签: linux linux-kernel
Linux 包含一些称为内核线程的特权进程。是否有运行/暂停它们的调度程序?如果是,这个调度器是否与系统调度器相同(我的意思是调度整个系统进程的调度器)?
【问题讨论】:
标签: linux linux-kernel
Linux 调度程序正在调度任务。这些可以
kswapd),或bash),或多线程进程的许多线程是共享公共地址空间(和其他东西,例如文件描述符)的任务。
AFAIK,调度程序不会将内核线程与其他任务分开。但是调度程序确实考虑了调度策略(sched_setscheduler(2))和优先级(setpriority(2))(对于大多数内核线程,优先级通常非常高)。见sched(7)
【讨论】:
是的!让我在这里澄清一下系统调度程序部分。
每个任务都与一个 task_struct 相关联,其中包含每个任务的详细信息,例如它的 pid、它的名称、它最近启动的时间、优先级等。http://lxr.free-electrons.com/source/include/linux/sched.h#L1224
通常取决于任务的优先级,公平调度器或实时调度器会启动,并且这些都存在。只是为了保持简单而不是详细介绍,这些是满足不同类型任务的不同调度程序算法。
现在内核线程也有一个关联的 task_struct 并且正如@Basile Starynkevitch 指出的几个 KPI 一样,我们可以使用 sched_setparam KPI 来修改 sched 参数并更改任务所属的调度程序,具体取决于它们将要执行的操作.
【讨论】: