Linux内核中使用的三种优先级之间有什么区别?

Linux内核中使用的三种优先级之间有什么区别?,linux,linux-kernel,Linux,Linux Kernel,我是Linux内核的新手,现在我正在研究Linux内核中的进程调度。Linux中有三种类型的优先级: 静态优先级 动态优先级 实时优先级 现在我所理解的是: 静态优先级和动态优先级仅为常规流程定义,它们的值只能从100到139 静态优先级用于确定进程的基本时间片 动态优先级用于选择下一个要执行的进程 实时优先级仅为实时进程定义,其值范围为0到99 现在我的问题是: 如果我错了,请纠正我,并请告诉我为什么我们使用 Linux中的三种优先级类型及其区别是什么 在这些优先事项中 在优先级介于100

我是Linux内核的新手,现在我正在研究Linux内核中的进程调度。Linux中有三种类型的优先级:

  • 静态优先级
  • 动态优先级
  • 实时优先级
  • 现在我所理解的是:

    • 静态优先级和动态优先级仅为常规流程定义,它们的值只能从100到139
    • 静态优先级用于确定进程的基本时间片
    • 动态优先级用于选择下一个要执行的进程

    • 实时优先级仅为实时进程定义,其值范围为0到99

    现在我的问题是:

  • 如果我错了,请纠正我,并请告诉我为什么我们使用 Linux中的三种优先级类型及其区别是什么 在这些优先事项中
  • 在优先级介于100到139之间的情况下,根据优先级将流程区分为实时流程还是常规流程 然后进程是常规进程,否则是实时的 过程
  • 在Linux中优先级是如何变化的,我的意思是,我们知道进程的优先级在整个执行过程中并不保持不变

  • 免责声明:对于linux中的调度,以下是正确的(我不确定windows或其他操作系统)。线程和进程在这里可以互换使用,尽管它们之间有区别

    优先级和差异

    1.静态优先级:这些是在创建新线程时设置的默认优先级(对于传统进程或非实时进程,即不使用实时调度时的值0)。您可以使用以下方法更改它们:

    `pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param);`
    
    其中,sched_param包含优先级:

    struct sched_param 
    {
        int sched_priority;     /* Scheduling priority */
    };
    
    2动态优先级:当线程由于一直调度高优先级线程而开始耗尽时,需要使用s提高此类线程的优先级。这种提高/降低(是的,这种情况也会发生)的优先级称为动态优先级,因为它不断变化。在Linux中,即使是胖孩子也可以玩

    3.实时优先级:只有当线程(进程)在一个实时策略(SCHED_FIFO、SCHED_RR)下调度,并且SCHED_优先级值在1(低)到99(高)之间时,才会出现这种情况。与非实时流程的静态/动态优先级相比,这是最高的

    更多信息:

    现在,请回答您的问题:

    如果我错了,请纠正我,并请告诉我为什么我们在Linux中使用三种优先级,它们之间的区别是什么 这些优先事项

    因此,对于非实时调度策略,每个进程都有一些静态优先级,优先级越高,线程就会启动,之后为了避免不公平,优先级会被提升/降低,从而成为动态优先级

    在优先级介于100到139之间的情况下,根据优先级将流程区分为实时流程还是常规流程 然后进程是常规进程,否则是实时的 过程

    不完全如此,这取决于现有的调度机制

    在Linux中优先级是如何变化的,我的意思是,我们知道进程的优先级在整个过程中并不是保持不变的 处决

    这就是动态性进入画面的时候。阅读给定链接中的“良好价值”