红黑树


使用案例:

          如 linux内核中,完全公平调度策略CFS的运行队列 使用"红黑树"方法管理进程。


红黑树是“平衡二叉树”!效率好!!!

//因为:树里面最长路径不会大于最短路径的两倍。


使用rb_entry、rb_insert_color、rb_erase等。


linux代码关键结构体如下:

struct rq { ------------ 每个CPU都有一个。
    struct cfs_rq cfs;
    struct rt_rq rt;

    ...

}


/* CFS-related fields in a runqueue */
struct cfs_rq {
    struct rb_root tasks_timeline;    ------  红黑树的根,完全公平调度策略使用红黑树存储所有相关进程。
    struct rb_node *rb_leftmost;      ------- 查找下一个待执行进程的快捷方式。

    ...
}

struct rt_rq {
    struct rt_prio_array active;   ---- 双向指针的数组,用来分别链接不同优先级的进程链表,每个优先级一个双向链表(不是红黑树维护进程)。

    ...

}


每个进程都对应为一个红黑树节点。

struct sched_entity {
    struct rb_node        run_node;

    ...
}

struct sched_rt_entity {
    struct list_head run_list;

    ...
}

struct task_struct {;
    struct sched_entity se;
    struct sched_rt_entity rt;

    ...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值