面对陌生的知识体系,应该从什么角度来
简介
一、进程管理基本概念
在单处理器系统上,在给定时刻只有一个程序可以运行,在多处理器系统上,可以真正并行运行的进程数据,取决于物理CPU的数目;
进程优先级
在比较粗糙的划分中,进程分为实时进程和非实时进程;
1. 硬实时进程具有严格的时间限制,某些任务必须在指定的时间内完成;
2. 软实时进程是硬实时进程的一种弱化形式,尽快需要快速得到结果,但是仍然可以稍微延迟执;
3. 大多数进程是没有特定时间约束的普通进程,它们可以通过重要性来分配优先级;
下面为CPU时间分配图,进程的运行按照时间片调度,分给进程的时间片份额与其相对重要性相当;系统中的时间流动对应圆盘转动,CPU则对应圆周旁的扫描器;最终效果是,尽管所有进程都有机会运行,但是重要的进程会比次要的进程得到更多的CPU时间;
从 Linux 调度全局角度看一下有哪些调度类,平时我们常见的就是 realtime 和 CFS 了
RT 调度器首先具有比 CFS 调度器更高的优先级,并且会严格按照优先级进行调度。
-
CFS 优先级为:100 ~ 139,
-
RT 优先级为:0 ~ 99
调度器,调度策略
RT 调度器支持两种调度策略:
没有时间片,被调度器选择后只要不被抢占,阻塞,或者自愿放弃处理器,可以运行任意长的时间
有时间片(默认为 100ms),其值在进程运行时会减少。时间片用完后,该值重置,进程置于队列末尾
/* * default timeslice is 100 msecs (used only for SCHED_RR tasks). * Timeslices get refilled after they expire. *
/ #define RR_TIMESLICE (100 * HZ / 1000)
调度数据结构
调度队列 rt_rq
调度实体 sched_rt_entity
。
。
。
待续
参考链接
这篇写的极好
Linux内核源码分析《进程管理及调度详解》 - 知乎