文章目录

  • 一、put_prev_task、set_next_task 函数 ( 进程放入执行队列 )
  • 二、select_task_rq 函数 ( 为进程选择 CPU )
  • 三、migrate_task_rq 函数 ( 将进程迁移到合适的 CPU 上 )

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

一、put_prev_task、set_next_task 函数 ( 进程放入执行队列 )


sched_class 调度类结构体 中的 put_prev_taskset_next_task 函数指针 , 指向一个函数 , 调用该函数 , 可以将 " 进程 " , 加入到 " 执行队列 " 中 ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
 void (*put_prev_task)(struct rq *rq, struct task_struct *p);void (*set_next_task)(struct rq *rq, struct task_struct *p, bool first);

源码路径 : linux-5.6.18\kernel\sched\sched.h#1724 ~ 1725 ;

二、select_task_rq 函数 ( 为进程选择 CPU )


sched_class 调度类结构体 中的 select_task_rq 函数指针 , 指向一个函数 , 调用该函数 , 可以为 " 进程 " 选择 合适的 CPU 执行 ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
int  (*select_task_rq)(struct task_struct *p, int task_cpu, int sd_flag, int flags);

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

三、migrate_task_rq 函数 ( 将进程迁移到合适的 CPU 上 )


sched_class 调度类结构体 中的 migrate_task_rq 函数指针 , 指向一个函数 , 调用该函数 , 可以将 " 进程 " 迁移到 合适的 CPU 上执行 ;

  • 进程 是一个 调度实体 ;
  • 执行队列 是一个 红黑树 ;
void (*migrate_task_rq)(struct task_struct *p, int new_cpu);

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

【Linux 内核】调度器 ⑤ ( put_prev_task、set_next_task 函数 | select_task_rq 函数 | migrate_task_rq 函数 )相关推荐

  1. 阿里为Linux内核调度器提出一个新的”组平衡器”概念

    导读 随着越来越多的组织为了发展云计算等业务配置他们的服务器在应用程序之间共享 CPU 核心/资源,而不是专门分配 CPU 核心给单个应用程序/任务,中国公司阿里巴巴正在为 Linux 内核调度器提出 ...

  2. 黑莓手机时代落幕;阿里巴巴为 Linux 内核调度器提出新概念;清理 Linux 内核“依赖地狱” | 开源日报

    整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

  3. 实时Linux内核调度器 | Real-Time Linux Kernel Scheduler

    <Real-Time Linux Kernel Scheduler> HOWTOs by Ankita Garg on August 1, 2009 目录 Design Goal 设计目标 ...

  4. linux 2.6内核进程调度,Linux2.4与Linux2.6内核调度器的比较研究

    Linux的内核开发是一个漫长的过程,自2001年11月开发出2.5.0以来,Linux内核的发展十分迅速,作了很多重大的改进,性能也有了很大的提高.内核调度器的改进是最主要的进步之一,本文对比研究了 ...

  5. 【Linux 内核】CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )

    文章目录 一.CFS 调度器就绪队列 cfs_rq 二.Linux 内核调度实体 sched_entity 三." 红黑树 " 数据结构 rb_root_cached 一.CFS ...

  6. 返璞归真的Linux BFS调度器

    自Linux 2.6以来(严格说应该是2.5),O(n)调度器被人们认为是一种千年之前就应该抛弃的东西被重重的甩开了,此后出现了O(1),CFS等,再也没人提起O(n)了.说实话,Linux的调度器远 ...

  7. 用c语言实现对n个进程采用“短进程优先”算法的进程调度_为什么Linux CFS调度器没有带来惊艳的碾压效果?...

    文章转自公众号"人人都是极客" 但凡懂Linux内核的,都知道Linux内核的CFS进程调度算法,无论是从2.6.23将其初引入时的论文,还是各类源码分析,文章,以及Linux内核 ...

  8. 为什么Linux CFS调度器没有带来惊艳的碾压效果? | CSDN博文精选

    任何领域,革命性的碾压式推陈出新并不是没有,但是概率极低,人们普遍的狂妄在于,总是认为自己所置身的环境正在发生着某种碾压式的变革,但其实,最终大概率不过是一场平庸. 作者 | dog250 责编 | ...

  9. 开源项目-基于Intel VT技术的Linux内核调试器

    本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...

  10. 基于IntelVt技术的Linux内核调试器 - 2

    4 基于IntelVt技术的Linux内核调试器- 调试器设计与实现(2):调试核心 4.1反汇编引擎 如果说调试框架是一个调试器的灵魂,那么接口与反汇编引擎就是一个调试器的身体.我们在调试过程中是要 ...

最新文章

  1. python处理文本格式_python linecache 处理固定格式文本数据的方法
  2. 各种数据库连接jdbc
  3. LoadMenu使用方法
  4. 字典-变量的定义以及应用场景
  5. CentOS7安装火狐flash插件看网页视频
  6. 第二次作业——小学生四则运算
  7. mysql5.7 java读取乱码
  8. idea如何一个项目如何运行多个实例
  9. Java——设计模式(装饰模式_IO)
  10. php实现微信小程序登陆功能
  11. java浏览器下载进度条,在浏览器中异步下载文件监听下载进度
  12. 抖音直播新号怎么起号?抖音直播间不进人怎么办?
  13. SAP GOS cl_gos_manager 添加附件功能
  14. tbf格式用什么打开_TBF的完整形式是什么?
  15. 完美解决iPhone自带的邮箱连接outlook后无法发送邮件问题
  16. ubuntu 触摸板失灵解决
  17. 新旧两种方法给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
  18. WML 中文参考手册
  19. ARM到底是冯诺依曼结构还是哈佛结构?
  20. 南京小米二面 全程58分钟

热门文章

  1. 高可用集群技术之RHCS应用详解(一)
  2. Python总结:Python基础(一)
  3. Automation Test in Maya Plugin Development
  4. 十五天精通WCF——第十四天 一起聊聊FaultException
  5. MySql 删除重复数据
  6. Makefile 书写命令
  7. legend3---6、legend3爬坑杂记
  8. luogu4677山区建小学题解--区间DP
  9. Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
  10. 关于模板页调用js的问题