計算機操作系統基礎(六)---作業管理之進程調度

引言

本文爲第六篇,作業管理之進程調度,本文主要介紹進程調度的概述和進程調度的算法

一、進程調度概述

進程調度是指計算機通過決策決定哪個就緒進程可以獲得CPU使用權。也就是說,進程調度指的是計算機選擇哪一個進程可以使用CPU,前提是這個進程的狀態爲就緒狀態

進程調度有兩個步驟:

  • 保留舊進程的運行信息,請出舊進程
  • 選擇新進程,準備運行環境並分配CPU

爲了實現進程調度的這兩個步驟,就需要了解三種重要的機制:

  • 就緒隊列的排隊機制
  • 選擇運行進程的委派機制
  • 新老進程的上下文切換機制

就緒隊列的排隊機制

(1)就緒隊列的排隊機制

就緒隊列中擺放着所有的就緒狀態的進程

就緒隊列的排隊機制就是爲了提高進程調度的效率,事先將就緒進程按照一定的方式排成隊列,以便調度程序可以最快找到就緒進程

(2)選擇運行進程的委派機制

這個機制就要求可以從就緒隊列中選出一個進程,然後讓去CPU中進行執行。調度程序以一定的策略選擇就緒進程,將CPU資源分配給它

(3)新老進程的上下文切換機制

如果要將新的進程調度到CPU中,就需要將老的進程的CPU環境備份出來,然後將新的進程的CPU環境切換進去。它保存當前進程的上下文信息,裝入被委派執行進程的運行上下文

在CPU裏面有一個高速緩存,這個機制就是首先將老進程的上下文備份到主存中,接着將新的進程的上下文放入到CPU中,準備環境,讓新的進程可以運行起來,這個就是新老進程的上線文切換機制。這三個就是進程調度所需要的三個基本的機制

思考一個問題,如果進行調度的時候,老的進程還沒有執行完,這個時候怎麼辦?

按照老的進程有沒有執行完,將進程調度的方法分爲兩大類:

  • 非搶佔式的調度
  • 搶佔式調度

非搶佔式的調度

  • CPU一旦分配給某個進程,就讓該進程一直使用下去
  • 調度程序不以任何原因搶佔正在被使用的CPU
  • 直到進程完成工作或因爲IO阻塞纔會讓出CPU

搶佔式調度

  • 允許調度程序以一定的策略暫停當前運行的進程
  • 保存好舊進程的上下文信息,分配CPU給新進程

兩種方式進行一個對比

進程調度的算法

  • 先來先服務調度算法
  • 短進程優先調度算法
  • 高優先權優先調度算法
  • 時間片輪轉調度算法

先來先服務調度算法

在就緒隊列中,按照先來先服務的原則,優先選擇隊列前面的進程進行調度

短進程優先調度算法

  • 調度程序優先選擇就緒隊列中估計運行時間最短的進程
  • 短進程優先調度算法不利於長作業進程的執行

高優先權優先調度算法

這個算法是以優先級爲基礎的

  • 進程附帶優先權,調度程序優先選擇權重高的進程
  • 高優先權優先調度算法使得緊迫的任務可以優先處理

前邊文章中有說到,前臺進程的優先級要高於後臺進程的優先級,因爲前臺進程是與用戶進行交互的,爲了保證用戶在使用系統的時候不會卡頓,因此前臺進程權重就要高於後臺進程

時間片輪轉調度算法

按先來先服務的原則排列就緒進程

每次從隊列頭部取出待執行進程,分配一個時間片執行(把這個時間片用完了,不管這個進程有沒有執行完,都會將這個進程重新的插到隊列的尾部。每個進程分配的時間片都是一樣的)。是相對公平的調度算法,但不能保證及時響應用戶

在快速變化的技術中尋找不變,纔是一個技術人的核心競爭力。知行合一,理論結合實踐

站在了巨人的肩膀上學習,向前輩致敬

參考:https://coding.imooc.com/class/355.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章