【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )
文章目录
- 一、调度器
- 0、调度器概念
- 1、调度器目的
- 2、调度器主要工作
- 3、调度器位置
- 4、进程优先级
- 5、抢占式调度器
- 二、Linux 内核进程状态 API 简介
- 三、Linux 进程状态
一、调度器
0、调度器概念
Linux 内核的 " 进程调度 " 是按照 设计好的调度算法 安排的 , 该算法对应的功能模块 称为 " 调度器 " , 英文名称是 Scheduler ;
1、调度器目的
进程调度 目的是 最大限度利用 CPU 资源 , 也就是 CPU 时间片 ;
2、调度器主要工作
" 调度器 " 主要的工作 :
- ① 就绪 -> 执行 : 选择 " 就绪状态 " 的进程执行 ; ( 占用 CPU )
- ② 执行 -> 就绪 : 打断 " 执行状态 " 的进程执行 , 先进入 " 阻塞状态 " , 然后变为 " 就绪状态 " ; ( 让出 CPU )
" 调度器 " 可以 切换 " 进程状态 " , 主要是 " 就绪状态 " 与 " 执行状态 " 这两个状态之间相互切换 ;
3、调度器位置
调度器 在 如下的 进程状态图 中的位置是 " 就绪状态 " 与 " 运行状态 " 之间 ;
- 就绪状态 : 进程 已经 获取了 相关资源 , 以及 运行条件准备就绪 ;
- 执行状态 : CPU 时间片被分配给了该进程 , 正在 CPU 中执行该进程 ;
4、进程优先级
" 调度器 " 根据 " 进程优先级 " 进行 进程调度 ;
进程优先级 参考 【Linux 内核】进程管理 - 进程优先级 ② ( prio 调度优先级 | static_prio 静态优先级 | normal_prio 正常优先级 | rt_priority 实时优先级 ) 博客 ;
| prio 调度优先级 | 等于 normal_prio 字段 | 等于 normal_prio 字段 | 等于 normal_prio 字段 |
| static_prio 调度优先级 | 字段 值总为 000 , 没有意义 | 字段 值总为 000 , 没有意义 | 120+nice\rm 120 + nice120+nice , 其数值越小 , 优先级越高 |
| normal_prio 正常优先级 | −1-1−1 | 99−rt_priority99 - \rm rt\_priority99−rt_priority | 120+nice\rm 120 + nice120+nice , 其数值越小 , 优先级越高 |
| rt_priority 实时优先级 | 字段 值总为 000 , 没有意义 | 字段 值为 111 ~ 999999 , 其数值越大 , 优先级越高 | 字段 值总为 000 , 没有意义 |
5、抢占式调度器
" 抢占式调度器 " 概念 : 如果 " 调度器 " 支持 " 就绪状态 " 与 " 运行状态 " 之间可以相互转换 , 则该调度器称为 " 抢占式调度器 " ;
二、Linux 内核进程状态 API 简介
Linux 内核进程状态有以下五种 :
- TASK_RUNNING 执行 / 就绪状态
- TASK_INTERRUPTIBLE 可中断睡眠状态
- TASK_UNINTERRUPTIBLE 不可中断睡眠状态
- __TASK_STOPPED 进程停止状态
- EXIT_ZOMBIE 僵尸状态
上面的 555 种状态是 Linux 内核中定义的状态 , 详细细节参考 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE ) 博客 ;
三、Linux 进程状态
Linux 进程有如下状态 :
- 创建状态 : 进程 刚被创建时 , 处于创建状态 ;
- 就绪状态 : 进程 已经 获取了 相关资源 , 以及 运行条件准备就绪 ; 一旦和获取 CPU 时间片使用权 , 就立刻进入 执行状态 ;
- 执行状态 : CPU 时间片被分配给了该进程 , 正在 CPU 中执行该进程 ;
- 阻塞状态 : 等待被分配 CPU 时间片的过程 中 , 处于该状态 ;
- 终止状态 : 进程 终止后的状态 ;
状态之间的转换 , 参考 【Linux 内核】进程管理 ( Linux 中进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 ) 博客 ;
总结
以上是生活随笔为你收集整理的【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【Linux 内核】进程管理 ( 进程状
- 下一篇: 【Linux 内核】调度器 ② ( sc