【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