首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux进程调度程序如何防止进程饥饿

问linux进程调度程序如何防止进程饥饿
EN

Stack Overflow用户
提问于 2016-09-27 12:46:39
回答 1查看 3.3K关注 0票数 3

我读过linux内核包含许多调度类,每个类都有自己的优先级。若要选择要运行的新进程,进程调度程序将从最高优先级类迭代到最低优先级类。如果在类中找到可运行的进程,则选择要从该类中运行的最高优先级进程。

从Robert的Linux内核开发中提取:

进程调度的主要入口点是函数schedule(),它是内核/ .This中定义的函数,它是内核的其余部分用来调用进程调度器、决定运行哪个进程并运行它的函数。schedule()对于调度程序classes.That是通用的,它查找具有可运行进程的最高优先级调度器类,并询问它接下来要运行什么。考虑到schedule()是simple.The函数中唯一重要的部分--在这里不太有趣--它对pick_next_task()的调用也定义在内核/ .The pick_next_task()函数中,从最高优先级开始,通过每个调度器类选择最高优先级类中的最高优先级进程,这一点不足为奇。

让我们想象一下下面的场景。在低优先级类中有一些进程在等待,并且进程被不断地添加到高优先级类中。低优先级类中的进程不会饿死吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-02 17:27:02

它确实会饿死。处理这种情况的方法有很多。

  1. 老化过程越长,在系统中的优先级就越高。
  2. 调度算法给每个进程一个使用CPU的时间量。时间-量子变化,通常情况下,交互过程被给予较低的时间-量子,因为他们花更多的时间做I/O,而时间消耗/计算过程被给予更大的时间量子。当进程运行其时间量程后,它将被放入一个过期队列中,直到系统中没有活动进程。然后,过期的队列变成活动队列,反之亦然。这是防止饥饿的两种方法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39725102

复制
相关文章

相似问题

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