加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux线程

发布时间:2020-12-14 02:04:02 所属栏目:Linux 来源:网络整理
导读:Linux内核的三种调度策略 1,SCHED_OTHER:分时调度策略。 a.它是默认的线程分时调度策略 b.所有的线程的优先级别都是0,线程的调度是通过分时来完成的。 c.如果系统使用这种调度策略,程序将无法设置线程的优先级。 d.这种调度策略也是抢占式的,当高优先级

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.这样做的好处是其他具有相同级别的线程能在“自私“线程下执行。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读