Linux 线程优先级
一、调度策略
Linux线程调度策略有:SCHED_FIFO, SCHED_RR 和 SCHED_OTHER
- SCHED_FIFO: 先进先出算法(FIFO),按照进程进入就绪队列的先后次序来选择。即每当进入进程调度,总是把就绪队列的队首进程投入运行;
- SCHED_RR: 时间片轮转算法(RR),分时系统的一种调度算法,轮转的基本思想是,将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。
- SCHED_OTHER: 不能设置优先级。
FIFO与RR的不同:
- 当采用RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
- FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。
- 如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。
二、如何查看一个线程的优先级
通过top 命令可以快速查看一个进程的有优先级,PR为对应进程的优先级,如下:

2. 也可以在/proc目录下查看对应线程的优先级
其中policy 为调度策略
0: SCHED_OTHER
1:SCHED_FIFO
2:SCHED_RR
prio 为优先级,优先级越大,值越小

三、如何设置线程的优先级
参考: https://blog.youkuaiyun.com/m0_37329910/article/details/100765833
本文介绍了Linux中的三种线程调度策略:SCHED_FIFO、SCHED_RR和SCHED_OTHER,详细阐述了它们的工作原理和区别。SCHED_FIFO遵循先进先出原则,而SCHED_RR则采用时间片轮转方式。通过top命令和/proc目录可以查看线程优先级,设置线程优先级的方法也进行了简要说明。
2642

被折叠的 条评论
为什么被折叠?



