linux 进程调度类型 总结


进程按照调度类型可以分为:


SCHED_FIFO先进先出的实时进程,如果没有其它更高优先级的可运行实时进程,就可以一直使用cpu运行。对于这种进程,时间片长度是没有意义的。


SCHED_RR时间片轮转的实时进程,所具有相同优先级(且都是当前情况下优先级最高)的SCHED_RR以时间片轮转的方式公平使用cpu


SCHED_NORMAL时间片轮转的普通进程,时间片用完之后变成过期进程,所有进程都成为过期进程之后,再统一把过期进程转变为活动进程。


时间片轮转的普通进程SCHED_NORMAL)优先级分为静态优先级动态优先级。内核用从100(最高优先级)到139(最低优先级)表示普通进程的静态优先级。新进程总是继承父进程的静态优先级。通过nice()setpriority(),用户可以改变自己拥有的进程静态优先级。静态优先级决定了进程的基本时间片,如下:


Linux操作系统中动态优先级是指:调度程序跟踪监测进程,对于较长没使用cpu的进程动态提升优先级,对于较长时间使用cpu的进程动态的降低优先级。动态优先级范围是100(最高优先级)~139(最低优先级),经验公式为:



Bonus范围0~10,值小于5表示降低动态优先级,值大于5表示增加动态优先级。


时间片轮转的实时进程(SCHED_RR的优先级分为静态优先级实时优先级。静态优先级初始值从父进程继承而得,决定了时间片的基本长度,值越小,基本时间片越长,与SCHED_NORMAL的静态优先级相似。实时优先级范围为1(最高优先级)~99(最低优先级)。调度程序总是让优先级高的进程运行,用户可以通过sched_setparam()sched_setscheduler()改变进程的实时优先级。实时优先级决定其在运行队列中的位置,即调度选择哪一个进程是由它决定。


先进先出的实时进程(SCHED_FIFO的优先级只有实时优先级。




发布了40 篇原创文章 · 获赞 42 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章