Linux包括一些称为内核线程的特权进程。有没有可以运行/挂起它们的调度程序?如果是,这个调度器是否与系统调度器(我指的是调度整个系统进程的调度器)相同?
发布于 2014-10-24 06:57:05
Linux调度程序正在调度任务。这些可以是
kswapd)、orbash)或多线程进程的许多线程是共享公共地址空间(以及其他内容,例如文件描述符)的任务。
AFAIK,调度程序不会将内核线程与其他任务分开。但是调度器确实会考虑调度策略(sched_setscheduler(2))和优先级(setpriority(2)) (对于大多数内核线程,优先级通常非常高)。请参阅sched(7)
发布于 2014-10-27 01:26:11
是的!让我在这里澄清系统调度器部分。
每个任务都与一个task_struct相关联,其中包含每个任务的详细信息,如pid、名称、最近启动的时间、优先级等。http://lxr.free-electrons.com/source/include/linux/sched.h#L1224
通常,根据任务的优先级,公平调度器或实时调度器开始工作,并且它们共存。为了简单起见,不详细介绍,这些都是不同的调度算法,以迎合不同类型的任务。
现在内核线程也有了相关的task_struct,正如@Basile Starynkevitch指出的几个sched_setparam,我们可以使用KPI来修改调度参数,并根据任务将要做的事情来更改任务所属的调度程序。
https://stackoverflow.com/questions/26537024
复制相似问题