【Linux 内核】调度器 ④ ( sched_class 调度类结构体分析 | yield_task 函数 | heck_preempt_curr 函数 | task_struct 函数 )
文章目录
- 一、yield_task 函数 ( 放弃 CPU 执行权限 )
- 二、check_preempt_curr 函数 ( 检查进程是否可以被抢占 )
- 三、task_struct 函数 ( 选择运行进程 )
Linux 内核源码 linux-5.6.18\kernel\sched\sched.h
中 , 定义的 struct sched_class
调度类结构体 , 就是 " 调度器 " 对应的类 ;
一、yield_task 函数 ( 放弃 CPU 执行权限 )
sched_class
调度类结构体 中的 yield_task
函数指针 , 指向一个函数 , 调用该函数 , 该 " 进程 " 将 放弃 已分配的 CPU 时间片 的 执行权限 , 先将进程从 " 执行队列 " 中出队 , 然后再 放入到队列末尾 ;
- 进程 是一个 调度实体 ;
- 执行队列 是一个 红黑树 ;
也就是说 调用该函数 , 将 调度实体 ( 进程 ) 存放到了 红黑树 ( 执行队列 ) 的 最右端 ( 末尾 ) ;
void (*yield_task) (struct rq *rq);
源码路径 : linux-5.6.18\kernel\sched\sched.h#1717 ;
二、check_preempt_curr 函数 ( 检查进程是否可以被抢占 )
sched_class
调度类结构体 中的 check_preempt_curr
函数指针 , 指向一个函数 , 调用该函数 , 主要是检查 当前 " 进程 " 是否可以被 其它进程 抢占 ;
- 进程 是一个 调度实体 ;
- 执行队列 是一个 红黑树 ;
void (*check_preempt_curr)(struct rq *rq, struct task_struct *p, int flags);
源码路径 : linux-5.6.18\kernel\sched\sched.h#1720 ;
三、task_struct 函数 ( 选择运行进程 )
sched_class
调度类结构体 中的 task_struct
函数指针 , 指向一个函数 , 调用该函数 , 选择 之后 要 开始运行 的 " 进程 " ;
- 进程 是一个 调度实体 ;
- 执行队列 是一个 红黑树 ;
struct task_struct *(*pick_next_task)(struct rq *rq);
源码路径 : linux-5.6.18\kernel\sched\sched.h#1722 ;
【Linux 内核】调度器 ④ ( sched_class 调度类结构体分析 | yield_task 函数 | heck_preempt_curr 函数 | task_struct 函数 )相关推荐
- 【Linux 内核】调度器 ② ( sched_class 调度类结构体源码 | 源码路径 linux-5.6.18\kernel\sched\sched.h )
文章目录 一.调度器 二.sched_class 调度类结构体 一.调度器 上一篇博客 [Linux 内核]调度器 ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 ...
- 【Linux 内核】调度器 ③ ( sched_class 调度类结构体分析 | next 字段 | enqueue_task 函数 | dequeue_task 函数 )
文章目录 一.next 字段 ( 指向链表中的下一个调度类 ) 二.enqueue_task 函数 ( 将进程加入执行队列 ) 三.dequeue_task 函数 ( 从执行队列中删除进程 ) Lin ...
- 【Linux 内核】CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )
文章目录 一.调度器类 sched_class 简介 二.CFS 调度器类源码 三.next 赋值 四.enqueue_task 赋值 五.dequeue_task 赋值 一.调度器类 sched_c ...
- [Linux][内核学习笔记]--CFS调度器
文章目录 1. 进程的状态转换 2. 内核调度器的发展 3. 调度策略 4. 与调度相关的系统调用 5. 优先级 6. CFS调度器的实现 6.1 相关结构体 6.1.1 sched_entity 结 ...
- 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )
文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...
- 挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程
挑战360无死角讲解 进程管理,调度器的5种实现 1. 8500行 CFS是什么 2. RT调度器使用场景 3. IDLE/Dealine调度器 视频讲解如下,点击观看: 挑战360无死角讲解Linu ...
- Linux系统核心调度器——周期性调度器详解
日期 内核版本 架构 作者 内容 2019-5-13 Linux-2.6.32 X86 Bystander Linux进程调度 1 绪论 在<Linux系统进程调度--调度架构详细分析>一 ...
- Linux调度器 - deadline调度器
一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...
- linux 进程状态显示dl,Linux系统中的实时调度器DL调度器的原理是什么?详细概述...
一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...
最新文章
- Android 开发利用wifi调试
- C++vector容器学习
- 强监管下 协议支付会是互金平台救命稻草?(协议支付是代扣协议的升级版)
- [BZOJ4530][Bjoi2014]大融合 LCT + 启发式合并
- 使用 Redis的SETNX命令实现分布式锁
- java 嵌套事务_Java事务以及嵌套事务
- 在计算机中()个字节称为MB,计算机基础考试题库(范文).doc
- Android studio 装SDK,android studio安装sdk
- mathquill web公式编辑器 总结 、实列、 源码
- win10 SVN图标不显示 已解决
- 软件测试工程师面试技巧---问答篇
- 协议栈之packet_type
- pepe:从Pastebin收集邮件地址的信息
- Elasticsearch入门登录篇
- 蓝桥杯训练题1427: [蓝桥杯][2013年第四届真题]买不到的数目【筛选符合题目的数字。有点类似筛素数】
- 监听器和简单邮件发送
- bex5中的常用方法总结
- 产品经理七个局——破局之术
- android 网络代码是什么意思,Android判断网络状态的代码
- 面对金融风暴,升斗小民的处事哲学