linux进程/线程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)

这就是Linux的进程/线程调度策略。

SCHED_OTHER: 目的:分时过程。
规划依据:令人愉悦的价值和相对价值。
合适的值范围:-2 0 到 +1 9 执行方式:当时间间隔到期或CPU主动失效时,重新加入就绪队列尾部。

SCHED_FIFO: 目标:实时过程。
调度依据:实时优先级(1 ~9 9 )。
执行方式:执行直到更高优先级的任务到达或者直到处理器被主动使用。
任务管理:当某个CPU被主动放弃时,将其从就绪队列中移除,并添加到等待队列中。

SCHED_RR: 目标:实时过程。
调度依据:实时优先级(1 ~9 9 )和时间间隔。
执行方式:完成每个任务一定时间后,处理器关闭。
一个时间片用完后,会被重新分配,并放置在就绪队列的末尾。
任务管理:如果时间间隔为0,则根据nice值设置新的时间间隔。
当一个CPU被主动放弃时,它会从就绪队列中移除,并添加到等待队列中。

实用提醒:根据需要选择您的规划策略。

Linux内核设计与实现,Linux进程及进程调度

记得有一次,在实验室里,我和同事小张正在调试一个复杂的Linux程序。
该程序需要反复创建和销毁进程来模拟高并发的网络应用。
我们都盯着屏幕,看着进程信息在机器上移动,思考内核是如何调度和管理这些进程的。
突然,小张问道:“你有没有发现,有时这个过程似乎进行得很快,有时却又很慢?”我看着他,笑着说道:“这是因为Linux内核调度算法在运行,它根据进程的优先级和时间片来决定应该运行哪个进程。

我们两个继续调试,但脑海中总是出现那些进程的VRUNTIME值。
记得有一次我输入ps命令,看到一个PID为1 2 3 4 5 的进程,它的VRUNTIME值为1 2 3 4 5 6 7 8 9 我小声嘀咕:“哇,这个进程的优先级真高,难怪跑得这么快。

等等,我还记得一件事。
那天下午,我突然想到,如果Linux没有这么复杂的进程调度机制,我们的软件可能无法在高并发环境下稳定运行。
想到这里,我不禁笑了,然后继续和小张讨论如何改进我们的程序。