所有任务都采用RR调度策略时:
  1,创建任务时指定调度参数为RR,并设置任务的实时优先级和nice值(nice值将会转换为该任务的时间片的长度)。
  2,如果没有等待资源,则将该任务加入到绪队列中。
  3,调度程序遍历绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值高的任务使用cpu。
  4,如果绪队列中的RR任务时间片为0,则会根据nice值设置该任务的时间片,同时将该任务放入绪队列的末尾。重复步骤3。
  5,当前任务由于等待资源而主动退出cpu,则其加入等待队列中。重复步骤3。
  系统中既有分时调度,又有时间片轮转调度和先进先出调度:
  1,RR调度和FIFO调度的进程属于实时进程,以分时调度的进程是非实时进程。
  2,当实时进程准备绪后,如果当前cpu正在运行非实时进程,则实时进程立即抢占非实时进程。
  3,RR进程和FIFO进程都采用实时优先级做为调度的权值标准,RR是FIFO的一个延伸。FIFO时,如果两个进程的优先级一样,则这两个优先级一样的进程具体执行哪一个是由其在队列中的未知决定的,这样导致一些不公正性(优先级是一样的,为什么要让你一直运行?),如果将两个优先级一样的任务的调度策略都设为RR,则保证了这两个任务可以循环执行,保证了公平。
  Ingo Molnar-实时补丁
  为了能并入主流内核,Ingo Molnar的实时补丁也采用了非常灵活的策略,它支持四种抢占模式:
  1.No Forced Preemption (Server),这种模式等同于没有使能抢占选项的标准内核,主要适用于科学计算等服务器环境。
  2.Voluntary Kernel Preemption (Desktop),这种模式使能了自愿抢占,但仍然失效抢占内核选项,它通过增加抢占点缩减了抢占延迟,因此适用于一些需要较好的响应性的环境,如桌面环境,当然这种好的响应性是以牺牲一些吞吐率为代价的。
  3.Preemptible Kernel (Low-Latency Desktop),这种模式既包含了自愿抢占,又使能了可抢占内核选项,因此有很好的响应延迟,实际上在一定程度上已经达到了软实时性。它主要适用于桌面和一些嵌入式系统,但是吞吐率比模式2更低。
  4.Complete Preemption (Real-Time),这种模式使能了所有实时功能,因此完全能够满足软实时需求,它适用于延迟要求为100微秒或稍低的实时系统。
  实现实时是以牺牲系统的吞吐率为代价的,因此实时性越好,系统吞吐率越低。