我有一个 C 程序来模拟不同的调度算法。从文件中读取进程信息。文件中每个进程的信息存储在以下结构中:
struct task_struct {
volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
unsigned int flags; /* per process flags, defined below */
int on_rq;
int prio, static_prio, normal_prio;
const struct sched_class *sched_class;
struct list_head tasks;
pid_t pid;
int arr;
/* simplify accounting */
int ticks;
int start_tick;
int end_tick;
int burst;
};
我有一个“队列”结构,它将保存任务/进程列表
struct rq {
struct task_struct *curr, *idle, *stop;
struct list_head task_root;
};
我有点了解内核链接列表的工作原理并拥有 list.h 的用户版本。似乎大多数与列表的交互都是在 list.h 中定义的。任何人都知道如何使用该文件中的函数尝试实现排序算法(可能合并)?