【Linux学习笔记44】线程的调度策略与优先级

【Linux学习笔记44】线程的调度策略与优先级Linux 中如何体现优先级 静态优先级 级别为 0 99 的 100 个优先级 0 级为普通 1 99 级为实时线程 动态优先级 当静态优先级为 0 时 就以动态优先级加以区分 级别为 19 20 nice 值

大家好,我是讯享网,很高兴认识大家。

Linux中如何体现优先级

  • 静态优先级:
    级别为0~99的100个优先级:0级为普通,1 ~ 99级为实时线程
  • 动态优先级:
    当静态优先级为0时,就以动态优先级加以区分,级别为==-19~20(nice值)==,Nice值越大,优先级越低

例如:
两个都为0级的静态优先级线程:p1,p2
p1的nice为20,p2的nice为-10。
则,p2比p1优先级更高。

动态优先级的用途例子2:

  • 如果进程或者线程是CPU消耗型的,系统会通过提高Nice值来降低该进程的动态优先级,使其响应速度变慢。例如:音视频解码
  • 如果进程或者线程是IO消耗型的,系统会通过降低Nice值来提高该进程的动态优先级,使其响应速度变快。例如:编辑器的使用(记事本,world)

调度策略:

静态优先级中:

  • 1~99级:FIFO/RR
  • 0级:其它
    在这里插入图片描述
    讯享网
  • 上图是1~99级中的调度策略
  • 假如在第5级中,FIFO先占用CPU运行,会一直占用着CPU,直到运行结束或者IO操作介入,睡眠等出现,FIFO才会放弃占用CPU
  • RR会运行一段时间后,放弃占用CPU重新排队等待。
  • 直到第5级运行结束,才到第4级的进程或者线程运行。

代码实现

设置线程是否继承创建者的调度策略

int pthread_attr_setinheritsched() 

讯享网

在这里插入图片描述
系统的默认优先级为:普通优先级0级,Nice=0

设置线程调度策略int pthread_attr_setschedpolicy()
在这里插入图片描述
设置线程静态和动态优先级:

讯享网int pthread_attr_setschedparam() 

在这里插入图片描述
在这里插入图片描述
代码运行结果:
在这里插入图片描述
A与B交错出现

如果将线程更改为RR,并且更改优先级:
在这里插入图片描述
在普通用户状态下运行:
在这里插入图片描述
在管理员root状态下运行:
在这里插入图片描述
是因为在非管理员情况下,只能执行普通线程。
只有管理员才可以,正常启动实时线程。


Nice值的使用:

int nice(int inc) 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小讯
上一篇 2025-01-05 12:43
下一篇 2025-03-29 07:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53292.html