【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | 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 调度优先级 | 字段 值总为 0 0 0 , 没有意义 | 字段 值总为 0 0 0 , 没有意义 | 120 + n i c e \rm 120 + nice 120+nice , 其数值越小 , 优先级越高 |
normal_prio 正常优先级 | − 1 -1 −1 | 99 − r t _ p r i o r i t y 99 - \rm rt\_priority 99−rt_priority | 120 + n i c e \rm 120 + nice 120+nice , 其数值越小 , 优先级越高 |
rt_priority 实时优先级 | 字段 值总为 0 0 0 , 没有意义 | 字段 值为 1 1 1 ~ 99 99 99 , 其数值越大 , 优先级越高 | 字段 值总为 0 0 0 , 没有意义 |
, 没有意义字段 值总为
, 没有意义
, 其数值越小 , 优先级越高normal_prio 正常优先级
, 其数值越小 , 优先级越高rt_priority 实时优先级字段 值总为
, 没有意义字段 值为
~
, 其数值越大 , 优先级越高字段 值总为
, 没有意义
5、抢占式调度器
" 抢占式调度器 " 概念 : 如果 " 调度器 " 支持 " 就绪状态 " 与 " 运行状态 " 之间可以相互转换 , 则该调度器称为 " 抢占式调度器 " ;
二、Linux 内核进程状态 API 简介
Linux 内核进程状态有以下五种 :
- TASK_RUNNING 执行 / 就绪状态
- TASK_INTERRUPTIBLE 可中断睡眠状态
- TASK_UNINTERRUPTIBLE 不可中断睡眠状态
- __TASK_STOPPED 进程停止状态
- EXIT_ZOMBIE 僵尸状态
上面的
种状态是 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下配置网关:让您轻松实现网络连接(linux下配置网关)
- 安装sbt on Linux:简单易行(sbt安装linux)
- 实现自主可控:嵌入式Linux内核移植(嵌入式linux内核移植)
- Linux中删除目录函数的使用(linux删除目录函数)
- Linux系统下快速安装VMware虚拟机(linux安装vmware)
- Linux内核开发:未来的技术发展前景(linux内核开发前景)
- Linux下合并文件的技巧(linux合并文件)
- Linux实现键盘输入的探索(linux读取键盘输入)
- Linux:推动现代信息技术发展的掌舵者(linux》)
- Linux内核发展史:自1991年以来的进展(linux内核历史)
- 新版Linux内核:开创技术未来(最新的linux内核版本)
- 挂载U盘在Linux系统:一次快速入门(linux如何挂载u盘)
- Linux系统完整备份:让你极致安心(linux全备份吗)
- Linux系统下快速复制大文件的方法(linux复制大文件)
- 『Linux内核编译入门:活学活用命令』(编译linux内核命令)
- 升级Linux 内核在线升级:改善系统性能(linux内核在线)
- 机制Linux内核中实现稳固性能通信机制(linux内核通信)
- Linux端口占用问题:解决之道(linux的端口号被占用)
- 构建双向链表:在Linux环境下的实现(双向链表linux)
- Linux AES加密——保护计算机安全的最佳方案(linux aes 加密)
- 探索Linux内核开发秘诀 精选PDF(linux内核开发pdf)
- 深入探索Linux内核及其在系统中的作用(linux内核系统)
- Linux 下拷贝文件的最佳命令(linux 拷贝文件命令)