mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-11-09 08:38:04 +08:00
进程调度...
This commit is contained in:
1 parent
412f304315
commit
618ee0391a
6 files changed
+1303
-932
No files matched your search
@@ -222,7 +222,7 @@ linux中针对当前可调度的实时和非实时进程, 定义了类型为sech
|
||||
|
||||
|
||||
| 调度实体 | 名称 | 描述 | 对应调度器类 |
|
||||
| ------- |:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:||:-------:|
|
||||
| sched_dl_entity | DEADLINE调度实体 | 采用EDF算法调度的实时调度实体 | dl_sched_class |
|
||||
| sched_rt_entity | RT调度实体 | 采用Roound-Robin或者FIFO算法调度的实时调度实体 | rt_sched_class |
|
||||
| sched_entity | CFS调度实体 | 采用CFS算法调度的普通非实时进程的调度实体 | fair_sched_class |
|
||||
@@ -252,12 +252,12 @@ linux实现了6种调度策略, 依据其调度策略的不同实现了5个调
|
||||
|
||||
|
||||
| 调度器类 | 调度策略 | 调度策略对应的调度算法 | 调度实体 | 调度实体对应的调度对象 |
|
||||
| ------- |:-------:|:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:|:-------:||:-------:|
|
||||
| stop_sched_class | 无 | 无 | 无 | 特殊情况, 发生在cpu_stop_cpu_callback 进行cpu之间任务迁移migration或者HOTPLUG_CPU的情况下关闭任务 |
|
||||
| dl_sched_class | SCHED_DEADLINE | Earliest-Deadline-First最早截至时间有限算法 | sched_dl_entity | 采用DEF最早截至时间有限算法调度实时进程 |
|
||||
| rt_sched_class | SCHED_RR<br><br>SCHED_FIFO | Roound-Robin时间片轮转算法<br><br>FIFO先进先出算法 | sched_rt_entity | 采用Roound-Robin或者FIFO算法调度的实时调度实体 |
|
||||
| fair_sched_class | SCHED_NORMAL<br><br>SCHED_BATCH | CFS完全公平懂调度算法 |sched_entity | 采用CFS算法普通非实时进程 |
|
||||
| idle_sched_class | SCHED_IDLE | 无 | 特殊进程, 用于cpu空闲时调度空闲进程idle |
|
||||
| idle_sched_class | SCHED_IDLE | 无 | 无 | 特殊进程, 用于cpu空闲时调度空闲进程idle |
|
||||
|
||||
它们的关系如下图
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ Linux进程调度器的设计
|
||||
linux把进程区分为实时进程和非实时进程, 其中非实时进程进一步划分为交互式进程和批处理进程
|
||||
|
||||
| 类型 | 描述 | 示例 |
|
||||
| ------- |:-------:|:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:|
|
||||
| 交互式进程(interactive process) | 此类进程经常与用户进行交互, 因此需要花费很多时间等待键盘和鼠标操作. 当接受了用户的输入后, 进程必须很快被唤醒, 否则用户会感觉系统反应迟钝 | shell, 文本编辑程序和图形应用程序 |
|
||||
| 批处理进程(batch process) | 此类进程不必与用户交互, 因此经常在后台运行. 因为这样的进程不必很快相应, 因此常受到调度程序的怠慢 | 程序语言的编译程序, 数据库搜索引擎以及科学计算 |
|
||||
| 实时进程(real-time process) | 这些进程由很强的调度需要, 这样的进程绝不会被低优先级的进程阻塞. 并且他们的响应时间要尽可能的短 | 视频音频应用程序, 机器人控制程序以及从物理传感器上收集数据的程序|
|
||||
@@ -65,7 +65,7 @@ linux把进程区分为实时进程和非实时进程, 其中非实时进程进
|
||||
|
||||
|
||||
| 字段 | 版本 |
|
||||
| ------------- |:-------------:|:-------------:|
|
||||
| ------------- |:-------------:|
|
||||
| O(n)的始调度算法 | linux-0.11~2.4 |
|
||||
| O(1)调度器 | linux-2.5 |
|
||||
| CFS调度器 | linux-2.6~至今 |
|
||||
@@ -149,7 +149,7 @@ stop_sched_class -> dl_sched_class -> rt_sched_class -> fair_sched_class -> idle
|
||||
linux中针对当前可调度的实时和非实时进程, 定义了类型为seched_entity的3个调度实体
|
||||
|
||||
| 调度实体 | 名称 | 描述 | 对应调度器类 |
|
||||
| ------- |:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:||:-------:|
|
||||
| sched_dl_entity | DEADLINE调度实体 | 采用EDF算法调度的实时调度实体 | dl_sched_class |
|
||||
| sched_rt_entity | RT调度实体 | 采用Roound-Robin或者FIFO算法调度的实时调度实体 | rt_sched_class |
|
||||
| sched_entity | CFS调度实体 | 采用CFS算法调度的普通非实时进程的调度实体 | fair_sched_class |
|
||||
@@ -182,12 +182,12 @@ linux实现了6种调度策略, 依据其调度策略的不同实现了5个调
|
||||
|
||||
|
||||
| 调度器类 | 调度策略 | 调度策略对应的调度算法 | 调度实体 | 调度实体对应的调度对象 |
|
||||
| ------- |:-------:|:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:|:-------:||:-------:|
|
||||
| stop_sched_class | 无 | 无 | 无 | 特殊情况, 发生在cpu_stop_cpu_callback 进行cpu之间任务迁移migration或者HOTPLUG_CPU的情况下关闭任务 |
|
||||
| dl_sched_class | SCHED_DEADLINE | Earliest-Deadline-First最早截至时间有限算法 | sched_dl_entity | 采用DEF最早截至时间有限算法调度实时进程 |
|
||||
| rt_sched_class | SCHED_RR<br><br>SCHED_FIFO | Roound-Robin时间片轮转算法<br><br>FIFO先进先出算法 | sched_rt_entity | 采用Roound-Robin或者FIFO算法调度的实时调度实体 |
|
||||
| fair_sched_class | SCHED_NORMAL<br><br>SCHED_BATCH | CFS完全公平懂调度算法 |sched_entity | 采用CFS算法普通非实时进程 |
|
||||
| idle_sched_class | SCHED_IDLE | 无 | 特殊进程, 用于cpu空闲时调度空闲进程idle |
|
||||
| idle_sched_class | SCHED_IDLE | 无 | 无 | 特殊进程, 用于cpu空闲时调度空闲进程idle |
|
||||
|
||||
它们的关系如下图
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ Linux进程优先级的处理
|
||||
linux把进程区分为实时进程和非实时进程, 其中非实时进程进一步划分为交互式进程和批处理进程
|
||||
|
||||
| 类型 | 描述 | 示例 |
|
||||
| ------- |:-------:|:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:|
|
||||
| 交互式进程(interactive process) | 此类进程经常与用户进行交互, 因此需要花费很多时间等待键盘和鼠标操作. 当接受了用户的输入后, 进程必须很快被唤醒, 否则用户会感觉系统反应迟钝 | shell, 文本编辑程序和图形应用程序 |
|
||||
| 批处理进程(batch process) | 此类进程不必与用户交互, 因此经常在后台运行. 因为这样的进程不必很快相应, 因此常受到调度程序的怠慢 | 程序语言的编译程序, 数据库搜索引擎以及科学计算 |
|
||||
| 实时进程(real-time process) | 这些进程由很强的调度需要, 这样的进程绝不会被低优先级的进程阻塞. 并且他们的响应时间要尽可能的短 | 视频音频应用程序, 机器人控制程序以及从物理传感器上收集数据的程序|
|
||||
@@ -67,7 +67,7 @@ linux把进程区分为实时进程和非实时进程, 其中非实时进程进
|
||||
|
||||
|
||||
| 字段 | 版本 |
|
||||
| ------------- |:-------------:|:-------------:|
|
||||
| ------------- |:-------------:|
|
||||
| O(n)的始调度算法 | linux-0.11~2.4 |
|
||||
| O(1)调度器 | linux-2.5 |
|
||||
| CFS调度器 | linux-2.6~至今 |
|
||||
@@ -137,12 +137,12 @@ linux实现了6种调度策略, 依据其调度策略的不同实现了5个调
|
||||
|
||||
|
||||
| 调度器类 | 调度策略 | 调度策略对应的调度算法 | 调度实体 | 调度实体对应的调度对象 |
|
||||
| ------- |:-------:|:-------:|:-------:|
|
||||
| ------- |:-------:|:-------:|:-------:||:-------:|
|
||||
| stop_sched_class | 无 | 无 | 无 | 特殊情况, 发生在cpu_stop_cpu_callback 进行cpu之间任务迁移migration或者HOTPLUG_CPU的情况下关闭任务 |
|
||||
| dl_sched_class | SCHED_DEADLINE | Earliest-Deadline-First最早截至时间有限算法 | sched_dl_entity | 采用DEF最早截至时间有限算法调度实时进程 |
|
||||
| rt_sched_class | SCHED_RR<br><br>SCHED_FIFO | Roound-Robin时间片轮转算法<br><br>FIFO先进先出算法 | sched_rt_entity | 采用Roound-Robin或者FIFO算法调度的实时调度实体 |
|
||||
| fair_sched_class | SCHED_NORMAL<br><br>SCHED_BATCH | CFS完全公平懂调度算法 |sched_entity | 采用CFS算法普通非实时进程 |
|
||||
| idle_sched_class | SCHED_IDLE | 无 | 特殊进程, 用于cpu空闲时调度空闲进程idle |
|
||||
| idle_sched_class | SCHED_IDLE | 无 | 无 | 特殊进程, 用于cpu空闲时调度空闲进程idle |
|
||||
|
||||
它们的关系如下图
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
+304
-305
File diff suppressed because it is too large.
Load diff
+615
-615
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user