文章目录

  • 一、next 字段 ( 指向链表中的下一个调度类 )
  • 二、enqueue_task 函数 ( 将进程加入执行队列 )
  • 三、dequeue_task 函数 ( 从执行队列中删除进程 )

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

一、next 字段 ( 指向链表中的下一个调度类 )


整个 Linux 系统中有 多个 " 调度类 " , 按照 优先级进行排序 , 这些 " 调度类 " 放在一个 " 链表 " 中 , 优先级高的 " 调度类 " 先执行 , 优先级低的后执行 ;

sched_class 调度类结构体 中的 next 字段 , 就是指向 " 调度类 " 链表 中的 下一个 " 调度类 " ; ( 优先级低于本调度类 )

const struct sched_class *next;

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

二、enqueue_task 函数 ( 将进程加入执行队列 )


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

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

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

三、dequeue_task 函数 ( 从执行队列中删除进程 )


dequeue_task 调度类结构体 中的 dequeue_task 函数指针 , 指向一个函数 , 调用该函数 , 可以 从 " 执行队列 " 中删除 " 进程 " , 同时 nr_running 自减 111 ;

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

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

【Linux 内核】调度器 ③ ( sched_class 调度类结构体分析 | next 字段 | enqueue_task 函数 | dequeue_task 函数 )相关推荐

  1. 【Linux 内核】调度器 ② ( sched_class 调度类结构体源码 | 源码路径 linux-5.6.18\kernel\sched\sched.h )

    文章目录 一.调度器 二.sched_class 调度类结构体 一.调度器 上一篇博客 [Linux 内核]调度器 ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 ...

  2. 【Linux 内核】调度器 ④ ( sched_class 调度类结构体分析 | yield_task 函数 | heck_preempt_curr 函数 | task_struct 函数 )

    文章目录 一.yield_task 函数 ( 放弃 CPU 执行权限 ) 二.check_preempt_curr 函数 ( 检查进程是否可以被抢占 ) 三.task_struct 函数 ( 选择运行 ...

  3. 【Linux 内核】CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )

    文章目录 一.调度器类 sched_class 简介 二.CFS 调度器类源码 三.next 赋值 四.enqueue_task 赋值 五.dequeue_task 赋值 一.调度器类 sched_c ...

  4. [Linux][内核学习笔记]--CFS调度器

    文章目录 1. 进程的状态转换 2. 内核调度器的发展 3. 调度策略 4. 与调度相关的系统调用 5. 优先级 6. CFS调度器的实现 6.1 相关结构体 6.1.1 sched_entity 结 ...

  5. 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )

    文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...

  6. 挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程

    挑战360无死角讲解 进程管理,调度器的5种实现 1. 8500行 CFS是什么 2. RT调度器使用场景 3. IDLE/Dealine调度器 视频讲解如下,点击观看: 挑战360无死角讲解Linu ...

  7. Linux系统核心调度器——周期性调度器详解

    日期 内核版本 架构 作者 内容 2019-5-13 Linux-2.6.32 X86 Bystander Linux进程调度 1 绪论 在<Linux系统进程调度--调度架构详细分析>一 ...

  8. Linux调度器 - deadline调度器

    一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...

  9. linux 进程状态显示dl,Linux系统中的实时调度器DL调度器的原理是什么?详细概述...

    一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...

最新文章

  1. python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例
  2. 大工17春计算机文化基础在线测试3,大工17春《计算机文化基础》在线测试3答案...
  3. pytorch autograd整理
  4. 依据地图上的经纬度坐标计算某个点到多边形各边的距离
  5. Python图片转html字符画
  6. 代码之美~Lambda带给我们的不只是简洁
  7. Debian 下配置ssh
  8. Git工具项目管理的基础使用方式(GitHub同步方式)
  9. linux下ssh安装教程,linux安装ssh
  10. oracle如何查询明细账,新纪元通用账证查询打印软件常用问题解答.docx
  11. gradle下载很慢的解决方式
  12. 如何使用 React Native 构建信用卡扫描仪
  13. 人人都能看懂的量子力学——波动力学的建立过程
  14. inputBox 与 Application.inputBox 的用法与区别。
  15. 小样儿老师:我的嵌入式学习之路(一)
  16. 怎样将CAD里面画好的图纸转换到WORD文档里面去
  17. 局部立体匹配算法介绍及代码实现
  18. 知识工程重点知识介绍-1
  19. Win7安装VS2008 Error1935
  20. QQ邮箱导出的通讯录出现乱码怎么办?

热门文章

  1. springMVC转发与重定向
  2. Spark集群基于Zookeeper的HA搭建部署笔记(转)
  3. OD调试9—实例:深入分析代码完成软件破解
  4. 拥抱开源IaaS云平台:360度盘点OpenStack
  5. 运维笔试Python编程题
  6. [HTML]增加input标签的multiple属性上传的文件数
  7. C# Interlocked 笔记
  8. C++ BYTE数组转字符串
  9. Java jdk 安装笔记
  10. Karrigell介绍