- linux只支持scs调度策略,即1:1模型
调度策略的过程
- 在系统中,若同时存在实时(real time)和正常(normal)的线程时,系统优先处理real time;同理,real time的线程会抢占normal线程的CPU
- 在仅有real time的线程的情况下,会根据PR值决定线程的处理先后顺序;若PR值相同时,SCHED_FIFO会按照先来先服务原则,顺序执行,SCHED_RR则会给线程分配相同的时间片,交替执行
- 在仅有real time的线程的情况下,若有两个线程分别是SCHED_FIFO和SCHED_RR的调度策略,且这两个线程的优先级一样,那么系统怎么调度这两个线程:SCHED_FIFO 的优先级高于 SCHED_RR
- 仅有normal模式的线程时(这里只讨论SCHED_OTHER),会采用分时调度CFS策略和动态优先级调整的策略来完成线程调度。
(CFS 旨在公平地分配 CPU 时间给系统中运行的进程或线程,相比于传统的时间片轮转调度算法,CFS 不会固定分配时间片给每个进程,而是根据进程的优先级和历史运行时间动态调整,以确保每个进程都可以获得公平的 CPU 时间份额)