这两个源码数据结构发一下
时间: 2023-07-21 13:33:39 浏览: 174
下面是 Linux 5.15 版本中进程调度优先级队列的数据结构:
1. 实时进程优先级队列
实时进程优先级队列的数据结构定义在 `kernel/sched/rt.c` 文件中。其中,`rt_rq` 表示实时进程优先级队列的数组,`rt_prio_tree_root` 表示实时进程优先级队列的根节点。
```c
struct rt_rq {
struct rt_prio_array active;
struct rt_prio_array expired;
unsigned long rt_runtime;
unsigned long rt_time;
unsigned long rt_capacity;
unsigned int rt_throttled;
struct task_struct *rt_throttle;
struct rt_bandwidth rt_bandwidth;
struct rt_bandwidth_def rt_bw;
struct rt_rq *rt_se; /* For search */
struct rt_prio_tree_root rt_prio_tree;
} ____cacheline_aligned;
```
2. 普通进程优先级队列
普通进程优先级队列的数据结构定义在 `include/linux/sched/prio_tree.h` 文件中。其中,`rq` 表示普通进程优先级队列的数组,`prio_tree_root` 表示普通进程优先级队列的根节点。
```c
struct prio_array {
DECLARE_BITMAP(bitmap, MAX_PRIO);
struct prio_tree_root *queues[MAX_PRIO];
};
struct prio_array rq;
struct rq {
/* ... */
struct prio_array *active;
struct prio_array *expired;
unsigned int nr_running;
unsigned int cpu_load;
u64 clock;
u64 clock_task;
u64 age_stamp;
struct cfs_rq cfs;
struct rt_rq rt;
struct dl_rq dl;
struct hrtimer wakeup_timer;
/* ... */
};
```
以上是 Linux 5.15 版本中进程调度优先级队列的数据结构。需要注意的是,这里仅给出了部分相关代码,具体实现细节还需参考完整的源码文件。
阅读全文