• linux线程


    Linux内核的三种调度策略

    1,SCHED_OTHER:分时调度策略。

      a.它是默认的线程分时调度策略

      b.所有的线程的优先级别都是0,线程的调度是通过分时来完成的。

      c.如果系统使用这种调度策略,程序将无法设置线程的优先级。

      d.这种调度策略也是抢占式的,当高优先级的线程准备运行的时候,当前线程将被抢占并进入等待队列。

      e.这种调度策略仅仅决定线程在可运行线程队列中的具有相同优先级的线程的运行次序。

    2,SCHED_FIFO:实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。

      a.它是一种实时的先进先出调用策略,且只能在超级用户下运行。

      b.这种调用策略仅仅被使用于优先级大于0的线程。

      c.使用SCHED_FIFO的可运行线程将一直抢占使用SCHED_OTHER的运行线程J。

      d.此外SCHED_FIFO是一个非分时的简单调度策略,当一个线程变成可运行状态,它将被追加到对应优先级队列的尾部。

      e.当所有高优先级的线程终止或者阻塞时,它将被运行。

      f.对于相同优先级别的线程,按照简单的先进先运行的规则运行。

      g.如果有若干相同优先级的线程等待执行,然而最早执行的线程无终止或者阻塞动作,那么其他线程是无法执行的,除非当前线程调用如pthread_yield之类的函数。

      h.在使用SCHED_FIFO的时候要小心处理相同级别线程的动作。

    3,SCHED_RR:实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。

      a.鉴于SCHED_FIFO调度策略的一些缺点,SCHED_RR对SCHED_FIFO做出了一些增强功能。

      b.从实质上看,它还是SCHED_FIFO调用策略。

      c.它使用最大运行时间来限制当前进程的运行,当运行时间大于等于最大运行时间的时候,当前线程将被切换并放置于相同优先级队列的最后。

      d.这样做的好处是其他具有相同级别的线程能在“自私“线程下执行。

     
  • 相关阅读:
    kube-apiserver
    深度学习三:卷积神经网络
    深度学习二:概率和反向传播的变种
    深度学习一:深度前馈网络和反向传播
    Knowledge 1:Propositional Logic 命题逻辑基础及符号
    评估方法:留出法、交叉验证法、自助法、调参与最终模型
    你曾这样问过
    套路总结
    NOI2020游记
    curl不是内部或外部命令,也不是可运行的程序或批处理文件
  • 原文地址:https://www.cnblogs.com/ppzhang/p/10505118.html
Copyright © 2020-2023  润新知