码上敲享录 > Linux面试题 > Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?

Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?

上一章章节目录下一章 2023-07-14已有248人阅读 评论(0)

Linux调度程序是根据进程的动态优先级来进行进程调度的。


Linux中使用了CFS(Completely Fair Scheduler)调度算法,默认情况下,每个进程都有一个动态优先级,即vruntime(虚拟运行时间)值。该值表示进程已经消耗的虚拟运行时间。根据vruntime的大小,调度程序将选择具有最小vruntime值的进程来运行。


CFS调度程序将CPU时间以一种公平的方式分配给进程。每个进程都有一个和实际运行时间相关的虚拟运行时间,进程的vruntime被用于计算其权重(等分配的因子)和优先级。较少运行的进程被分配较多的CPU时间,而较多运行的进程则有较少的CPU时间。这样可以实现公平性和资源平衡。


动态优先级调度不仅基于vruntime,还涉及进程的调度类别(如实时、普通等),以及进程的静态优先级。静态优先级由进程的nice值决定,nice值越低(即越负),优先级越高。但静态优先级只用于决定进程在进入CPU调度队列时的初始位置,并不直接用于进程的调度。


通过使用动态优先级,Linux调度程序能够根据进程的实际运行情况进行动态调整,并在资源共享方面提供公平性。这使得Linux系统能够更好地适应不同类型和负载的任务。


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交