linux 5.15版本中,进程调度有几个优先级队列,区分实时和普通吗
时间: 2024-04-21 15:28:10 浏览: 152
在 Linux 5.15 版本中,进程调度有两个优先级队列,分别是针对实时进程和普通进程的优先级队列。两者都是使用红黑树来实现优先级队列。下面分别介绍一下这两个优先级队列。
1. 实时进程优先级队列
实时进程有两种调度策略,分别是 FIFO 和 Round-robin。其中,FIFO 调度策略按照进程的优先级进行排序,优先级越高的进程越先获得 CPU 时间片,如果有多个优先级相同的进程,则按照先到先服务的原则进行调度。Round-robin 调度策略则是按照轮询的方式进行调度,每个进程在获得一定时间片后,就会被挂起,让其他进程获得 CPU 时间片。
实时进程优先级队列中,有一个数组 `rt_rq`,每个数组元素表示一个实时进程的优先级队列。数组下标表示进程的优先级,优先级越高的进程在数组中的下标越小。每个优先级队列都是一个红黑树,用于维护同一优先级的进程。
2. 普通进程优先级队列
普通进程也有两种调度策略,分别是 CFS 和 BFS。CFS 调度策略使用红黑树来维护进程的调度顺序,每个进程都有一个虚拟运行时间,进程的优先级和虚拟运行时间成反比,即虚拟运行时间越长,优先级越低,进程越容易被调度。BFS 调度策略则是按照进程的优先级进行排序,优先级越高的进程越先获得 CPU 时间片。
普通进程优先级队列中,有一个数组 `rq`,每个数组元素表示一个普通进程的优先级队列。数组下标表示进程的优先级,优先级越高的进程在数组中的下标越小。每个优先级队列都是一个红黑树,用于维护同一优先级的进程。
总之,Linux 5.15 版本中进程调度有两个优先级队列,分别是针对实时进程和普通进程的优先级队列,都是使用红黑树来实现。
阅读全文