我读过linux内核包含许多调度类,每个类都有自己的优先级。若要选择要运行的新进程,进程调度程序将从最高优先级类迭代到最低优先级类。如果在类中找到可运行的进程,则选择要从该类中运行的最高优先级进程。
从Robert的Linux内核开发中提取:
进程调度的主要入口点是函数schedule(),它是内核/ .This中定义的函数,它是内核的其余部分用来调用进程调度器、决定运行哪个进程并运行它的函数。schedule()对于调度程序classes.That是通用的,它查找具有可运行进程的最高优先级调度器类,并询问它接下来要运行什么。考虑到schedule()是simple.The函数中唯一重要的部分--在这里不太有趣--它对pick_next_task()的调用也定义在内核/ .The pick_next_task()函数中,从最高优先级开始,通过每个调度器类选择最高优先级类中的最高优先级进程,这一点不足为奇。
让我们想象一下下面的场景。在低优先级类中有一些进程在等待,并且进程被不断地添加到高优先级类中。低优先级类中的进程不会饿死吗?
发布于 2016-10-02 17:27:02
它确实会饿死。处理这种情况的方法有很多。
https://stackoverflow.com/questions/39725102
复制相似问题