Linux 内核调度器 ⑥ ( task_woken 函数 | set_cpus_allowed 函数 | rq_online 函数 | rq_offline 函数 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核调度器 ⑥ ( task_woken 函数 | set_cpus_allowed 函数 | rq_online 函数 | rq_offline 函数 )相关的知识,希望对你有一定的参考价值。

文章目录


Linux 内核源码 linux-5.6.18\\kernel\\sched\\sched.h 中 , 定义的 struct sched_class 调度类结构体 , 就是 " 调度器 " 对应的类 ;





一、task_woken 函数 ( 唤醒阻塞进程 )



sched_class 调度类结构体 中的 task_woken 函数指针 , 指向一个函数 , 调用该函数 , 可以将 休眠或阻塞中" 进程 " 唤醒 ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
void (*task_woken)(struct rq *this_rq, struct task_struct *task);

源码路径 : linux-5.6.18\\kernel\\sched\\sched.h#1732 ;





二、set_cpus_allowed 函数 ( 修改进程在 CPU 中的亲和力 )



sched_class 调度类结构体 中的 set_cpus_allowed 函数指针 , 指向一个函数 , 调用该函数 , 可以修改 " 进程 "CPU 中的 " 亲和力 " ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
	void (*set_cpus_allowed)(struct task_struct *p,
				 const struct cpumask *newmask);

源码路径 : linux-5.6.18\\kernel\\sched\\sched.h#1734 ;





三、rq_online 函数 ( 启动执行队列 )



sched_class 调度类结构体 中的 rq_online 函数指针 , 指向一个函数 , 调用该函数 , 可以 启动 执行队列 ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
void (*rq_online)(struct rq *rq);

源码路径 : linux-5.6.18\\kernel\\sched\\sched.h#1737 ;





四、rq_offline 函数 ( 禁止执行队列 )



sched_class 调度类结构体 中的 rq_offline 函数指针 , 指向一个函数 , 调用该函数 , 可以 禁止 执行队列 ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
void (*rq_offline)(struct rq *rq);

源码路径 : linux-5.6.18\\kernel\\sched\\sched.h#1738 ;

以上是关于Linux 内核调度器 ⑥ ( task_woken 函数 | set_cpus_allowed 函数 | rq_online 函数 | rq_offline 函数 )的主要内容,如果未能解决你的问题,请参考以下文章

Linux(内核剖析):08---进程调度之Linux调度算法(调度器类公平调度(CFS))

Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )

Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )

万字详解Linux内核调度器极其妙用

万字详解Linux内核调度器极其妙用

Linux 内核CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )