Linux内核探讨-- 第二章
本文是个人分析《Linux内核设计与实现》而写的总结,欢迎转载,请注明出处:
http://blog.csdn.net/dlutbrucezhang/article/details/12185125
第二章 --进程调度
1.多任务
2.I/O消耗型和处理器消耗性的进程
3.进程优先级
4.时间片
5.进程调度策略
6.CFS调度器
7.Linux调度的实现
struct load_weight load; /* for load-balancing */
struct rb_node run_node;
struct list_head group_node;
unsigned int on_rq;
u64 exec_start;
u64 sum_exec_runtime;
u64 vruntime;
u64 prev_sum_exec_runtime;
u64 nr_migrations;
#ifdef CONFIG_SCHEDSTATS
struct sched_statistics statistics;
#endif
#ifdef CONFIG_FAIR_GROUP_SCHED
struct sched_entity *parent;
/* rq on which this entity is (to be) queued: */
struct cfs_rq *cfs_rq;
/* rq "owned" by this entity/group: */
struct cfs_rq *my_q;
#endif
};
我们可以看到,调度器实体中存在一个字段--vruntime,这代表的是虚拟时间,也就是新的概念--处理器使用比。在进程描述符内,我们可以找到指向这个实体的指针。
* Pick up the highest-prio task:
*/
static inline struct task_struct *
pick_next_task(struct rq *rq)
{
const struct sched_class *class;
struct task_struct *p;
/*
* Optimization: we know that if all tasks are in
* the fair class we can call that function directly:
*/
if (likely(rq->nr_running == rq->cfs.nr_running)) { //如果nr_running==cfs.nr_running,则说明当前rq队列中是没有rt任务的,
//rt任务不在cfs队列中,它的优先级的设置和cfs不一样。
p = fair_sched_class.pick_next_task(rq); //在cfs队列中挑选即将被切换进去的进程,核心函数,
if (likely(p))
return p;
}
for_each_class(class) {
p = class->pick_next_task(rq);
if (p)
return p;
}
BUG(); /* the idle class will always have a runnable task */
}
8.抢占的实现
9.实时进程的调度策略
Linux内核探讨-- 第二章相关推荐
- Linux内核探讨-- 第一章
本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: ...
- linux实验报告实验二,Linux实验报告 第二章
linux实验报告 第二章 linux终端 1,概念 使用linux时并不是直接使用系统,而是通过shell这个中间程序来完成,为了实现在一个窗口中完成用户输入和现实输出,linux系统还有一个叫做终 ...
- LINUX内核分析第二周学习总结——操作系统是如何工作的
LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- 十天学Linux内核之第二天---进程
十天学Linux内核之第二天---进程 原文:十天学Linux内核之第二天---进程 都说这个主题不错,连我自己都觉得有点过大了,不过我想我还是得坚持下去,努力在有限的时间里学习到Linux内核的奥秘 ...
- linux系统管理设计ppt,操作系统原理与Linux实例设计--第二章.ppt
操作系统原理与Linux实例设计--第二章.ppt 2.5.4 实时系统与实时任务调度 实时系统与实时任务 实时系统:能及时响应外部请求,并作出反应的系统. 是一个相对的概念. 是否周期执行来划分: ...
- Linux内核探讨-- 第七章
本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/136 ...
- Linux内核探讨-- 第六章
本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/130 ...
- Linux内核探讨-- 第五章
本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/123 ...
- Linux内核探讨-- 第四章
本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/122 ...
最新文章
- mysql的存储引擎详解_Mysql存储引擎详解
- pytorch 保存网络的时候值得注意的事情
- 微服务Apache ServiceComb 数据一致性Saga演进介绍
- Android-DataBinding源码探究
- python-I/O-文件操作
- linux 磁盘资源管理以及IO
- 四色着色问题 c语言编程,数据结构-图着色问题
- 计算机辅助普通话测试试题及答案,普通话测试试题及答案
- Java的poi技术遍历Excel时进行空Cell,空row,判断
- Unity 编辑器内建图标获得
- UE4之windows.h冲突
- 配置管理工具---SVN
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_22-页面查询服务端开发-Dao-基础方法测试...
- VMware15.5.1+macos catalina 10.5+unlocker 3.1 解决unlocker下载文件报错问题
- 初学者有关Hadoop版本选择的考虑
- Oracle隐含参数查看
- CSS+DIV 网页重构技术
- 入侵oracle数据库时常用的操作命令整理
- Spring项目中 注解@Aspect无法被引入的原因
- SPFA算法+例题 :问题 A: 黑暗城堡