1

我在这里阅读了有关调用调度程序的情况。但是当一个高优先级任务到来时会发生什么呢?

4

3 回答 3

1

高优先级任务比低优先级任务更频繁地调度,但是当高优先级任务到来时,它仍然必须等到正在运行的任务的时间片结束。

于 2013-08-26T17:25:42.980 回答
0

优先级更改并根据过去的 CPU 使用情况进行调整。

更长的版本

在 Linux 中,进程优先级是动态的。调度器跟踪进程正在做什么并定期调整它们的优先级;通过这种方式,通过动态增加它们的优先级来提升长时间被拒绝使用 CPU 的进程。相应地,长时间运行的进程会通过降低其优先级来受到惩罚。

于 2013-08-26T17:20:48.160 回答
0

调度程序维护一组准备在系统中运行的所有任务。在多优先级系统中,任务集通常支持优先级的概念。当一个高优先级任务到达系统时,它被放入按优先级排序的任务集合中。

与当前运行的进程相比,内核中的某些点我们检查是否有更好的进程可供运行。这可能发生在时间片到期或 ISR 完成或锁定解锁等时。查找对 switch() 或 _switch() 或类似的调用...这是检查任务集的例程并确定当前任务是否是最高优先级。

如果当前任务不是最高优先级的任务,则切换出当前任务,从任务集中获取最高优先级的任务并调度运行。

于 2013-08-26T17:33:39.800 回答