調度模型

調度模型是指針對調度問題建立的模型。

基本介紹

  • 中文名:調度模型
  • 外文名:Scheduling model
  • 類型:計算機科學
  • 學科:跨學科
  • 性質:模型
  • 目的:解決調度問題
介紹,調度模型,調度算法,

介紹

進程調度用於多進程或者多執行緒並發訪問資源。進程調度的需求出現在同時執行多個任務(multitasking)或者同時傳輸多數據流(mulplexing)。
計算機通常只有一個CPU,在任意時刻只能執行一條機器指令,每個執行緒只有獲得CPU的使用權才能執行指令.所謂多執行緒的並發運行,其實是指從巨觀上看,各個執行緒輪流獲得CPU的使用權,分別執行各自的任務.在運行池中,會有多個處於就緒狀態的執行緒在等待CPU,Java虛擬機的一項任務就是負責執行緒的調度,執行緒調度是指按照特定機制為多個執行緒分配CPU的使用權。

調度模型

執行緒有兩種調度模型:分時調度模型和搶占式調度模型。
分時調度模型是指讓所有的執行緒輪流獲得cpu的使用權,並且平均分配每個執行緒占用的CPU的時間片這個也比較好理解。java虛擬機採用搶占式調度模型,是指優先讓可運行池中優先權高的執行緒占用CPU,如果可運行池中的執行緒優先權相同,那么就隨機選擇一個執行緒,使其占用CPU。處於運行狀態的執行緒會一直運行,直至它不得不放棄CPU。一個執行緒會因為以下原因而放棄CPU。一, java虛擬機讓當前執行緒暫時放棄CPU,轉到就緒狀態,使其它執行緒或者運行機會。二,當前執行緒因為某些原因而進入阻塞狀態。三,執行緒結束運行。需要注意的是,執行緒的調度不是跨平台的,它 不僅僅取決於java虛擬機,還依賴於作業系統。在某些作業系統中,只要運行中的執行緒沒有遇到阻塞,就不會放棄CPU;在某些作業系統中,即使執行緒沒有遇到阻塞,也會運行一段時間後放棄CPU,給其它執行緒運行的機會。java的執行緒調度是不分時的,同時啟動多個執行緒後,不能保證各個執行緒輪流獲得均等的CPU時間片。如果希望明確地讓一個執行緒給另外一個執行緒運行的機會,可以採取以下辦法之一。調整各個執行緒的優先權,讓處於運行狀態的執行緒調用Thread.sleep()方法,讓處於運行狀態的執行緒調用Thread.yield()方法,讓處於運行狀態的執行緒調用另一個執行緒的join()方法。

調度算法

常用的進程調度算法有:
1、先來先服務和短作業(進程)優先調度算法
(1)先來先服務調度算法(FCFS)
(2)短作業(進程)優先調度算法
2.高優先權優先調度算法
(1)非搶占式優先權算法
(2)搶占式優先權調度算法
3.基於時間片的輪轉調度算法

相關詞條

熱門詞條

聯絡我們