首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核线程的调度器

Linux内核线程的调度器
EN

Stack Overflow用户
提问于 2014-10-24 04:39:53
回答 2查看 693关注 0票数 0

Linux包括一些称为内核线程的特权进程。有没有可以运行/挂起它们的调度程序?如果是,这个调度器是否与系统调度器(我指的是调度整个系统进程的调度器)相同?

EN

回答 2

Stack Overflow用户

发布于 2014-10-24 06:57:05

Linux调度程序正在调度任务。这些可以是

  • 内核线程(如kswapd)、or
  • single-threaded进程(如bash)或
  • 多线程进程的单个线程(如某些浏览器或服务器)

多线程进程的许多线程是共享公共地址空间(以及其他内容,例如文件描述符)的任务。

AFAIK,调度程序不会将内核线程与其他任务分开。但是调度器确实会考虑调度策略(sched_setscheduler(2))和优先级(setpriority(2)) (对于大多数内核线程,优先级通常非常高)。请参阅sched(7)

票数 1
EN

Stack Overflow用户

发布于 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来修改调度参数,并根据任务将要做的事情来更改任务所属的调度程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26537024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档