您当前的位置: 首页 >  linux

韩曙亮

暂无认证

  • 0浏览

    0关注

    1068博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

韩曙亮 发布时间:2022-03-29 13:58:17 ,浏览量:0

文章目录
  • 一、task_woken 函数 ( 唤醒阻塞进程 )
  • 二、set_cpus_allowed 函数 ( 修改进程在 CPU 中的亲和力 )
  • 三、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 ;

关注
打赏
1663594092
查看更多评论
立即登录/注册

微信扫码登录

0.0426s