首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些任务对应于Linux内核调度程序?

哪些任务对应于Linux内核调度程序?
EN

Stack Overflow用户
提问于 2013-12-17 17:07:46
回答 2查看 969关注 0票数 2

在Linux的内核级别,我们有线程/任务(属于内核和用户),例如,

swapper:是一个内核线程(进程0),它是所有进程的祖先,在Linux的初始化阶段由start_kernel()函数从头开始创建。也是

init:一个额外的内核线程,进程1 (init进程)

HelloWorld:用户程序的线程

我的问题是关于内核调度器,它执行以下任务:

固定时间内的-Schedule任务(即上下文切换)

动态-Calculate时间片(基于短/长vs优先级)

-Assigns动态处理优先级(在需要时)

将进程-Monitoring到它的作业中(这还包括其他的吗?)

更具体地说,我的问题变成:内核级别的哪些线程/任务对应于调度器?它应该是“调度器”之类的,还是内核中的任何其他任务都能完成它的工作?

附言:

内核中的"swapper“是一个具有最低优先级的空闲线程/任务(halt) 1。除了"step-down”,这还能做什么吗?

Linux是否为多核系统中的每个核创建了一个专用的调度器实例?如果不是,那么它在多核上的表现如何?

1

EN

回答 2

Stack Overflow用户

发布于 2014-06-11 22:11:14

Linux计划程序没有与之对应的任务或线程。Linux调度程序代码,主要是schedule()函数,在用于调度的定时器发出中断或在内核代码中显式调用它时运行(例如,作为系统调用的一部分)。

在多核上,调度程序代码在每个核上独立运行。在内核0上接收到的定时器中断通常通过使用IPI(处理器间中断)广播到其他内核。如果平台有每个CPU的计时器,那么Linux通常使用这些计时器来发出调度所需的中断,而不是使用IPIs。

票数 4
EN

Stack Overflow用户

发布于 2013-12-17 18:04:55

我不认为有一个单独的线程来运行调度程序。schedule()是执行调度的函数。可以从以下位置调用schedule()函数的一些地方:

代码语言:javascript
复制
  1) A process(A user space or kernel space) which is executing the kernel code wants to wait for some event (calls any of the wait functions)
  2) A process which calls schedule() function to yield the processor for itself for sometime.
  3) Every time when a timer interrupt is generated.

像这样,可能有很多地方可以调用schedule()函数。

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

https://stackoverflow.com/questions/20629964

复制
相关文章

相似问题

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