linux调度(smp)函数分析

sched_init
void __init sched_init(void)
{
        unsigned long ptr = 0;
        int i;

        /* Make sure the linker didn't screw up */
        BUG_ON(&idle_sched_class + 1 != &fair_sched_class ||
               &fair_sched_class + 1 != &rt_sched_class ||
               &rt_sched_class + 1   != &dl_sched_class);
#ifdef CONFIG_SMP
        BUG_ON(&dl_sched_class + 1 != &stop_sched_class);
#endif

        wait_bit_init();
		// 初始化等待队列

	...

	init_rt_bandwidth(&def_rt_bandwidth, global_rt_period(), global_rt_runtime());
	// 初始化(控制全局的)rt使用带宽
    init_dl_bandwidth(&def_dl_bandwidth, global_rt_period(), global_rt_runtime());
    // 初始化(控制全局的)dl使用带宽

 	...

	for_each_possible_cpu(i) {
	// 遍历所有可用的cpu,为每个cpu初始化相关结构
	
       struct rq *rq;
       // 每个CPU的主要运行队列数据结构

       rq = cpu_rq(i);
       raw_spin_lock_init(&rq->lock);
       rq->nr_running = 0;
       rq->calc_load_active = 0;
       rq->calc_load_update = jiffies + LOAD_FREQ;
       init_cfs_rq(&rq->cfs);
       // 初始化cfs运行队列
       
       init_rt_rq(&rq->rt);
	   // 初始化rt运行队列(Real-Time class)
	   
       init_dl_rq(&rq->dl);
	   // 初始化dl运行队列(Deadline class)
	   
	...
	
		rq->rt.rt_runtime = def_rt_bandwidth.rt_runtime;
		// global_rt_runtime(0.95s)

		hrtic
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坤昱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值