Linux系统进程调度
主要参考:Linuxmanualpage-sched
自从linux内核2.6.23以来,默认的进程调度器就被设置为完全公平调度器(CFS,completefairscheduler),取代了之前的O(1)调度器。
每个线程都有一个静态调度优先级,即sched_priority字段。
一个线程的调度策略决定了线程会被插入到同级静态优先级的线程队列的位置,以及它在队列中会怎样移动。
所有的调度都是可插入的,如果一个更高静态优先级的线程准备好了,现在运行中的线程就会被插入。而调度策略则仅仅影响了同样静态优先级的线程。
进程(线程)可以通过系统调用设置自身或者其他进程(线程)的调度策略。
其中pid为0时,设置自身的调度策略和参数。结构体sched_attr包含以下字段:size、sched_policy(即调度策略,具体会在下一节介绍)、sched_flags、sched_nice、sched_runtime、sched_deadline、sched_period(最后三个为SCHED_DEADLINE相关的参数)。当设置成功系统调用返回0;否则返回-1,并会设置errno。
普通进程:SCHED_OTHER/SCHED_BATCH/SCHED_IDLE实时进程:SCHED_FIFO/SCHED_RR特殊实时进程:SCHED_DEADLINE静态优先级:Static_priority:对于普通进程,静态优先级为0;对于实时进程,静态优先级为1-99,99为最高优先级。动态优先级:Dynamic_priority:仅对普通进程有用,取决于nice和一个动态调整的量(比如进程ready却没被调度,则增加)。
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇