程序的狀態,排程方法

2022-08-19 08:30:11 字數 1808 閱讀 1970

1、程序的基本狀態:

(1)執行:已經獲得必要的資源  占用處理機 處理機正在執行該程序

(2)就緒:程序等待分配cpu

(3)阻塞:等待某個事件

執行——>就緒:1,主要是程序占用cpu的時間過長,時間片用完;

2,在採用搶先式優先順序排程演算法的系統中,當有更高優先順序的程序要執行時,該程序就被迫讓出cpu,該程序便由執行狀態轉變為就緒狀態。

就緒——>執行:執行的程序的時間片用完,排程就轉到就緒佇列中選擇合適的程序分配cpu

執行——>阻塞:正在執行的程序因發生某等待事件而無法執行,則程序由執行狀態變為阻塞狀態,如發生了i/o請求

阻塞——>就緒: 程序所等待的事件已經發生,就進入就緒佇列

2.掛起狀態:在執行狀態的程序通過掛起即可進入就緒狀態,如圖所示,就緒狀態和阻塞狀態都分為活動態和靜止態。由活動態向靜止態轉換就是通過掛起實現的。

在不少系統中程序只有上述三種狀態,但在另一些系統中,又增加了一些新狀態,最重要的是掛起狀態。引入掛起狀態的原因有:

(1) 終端使用者的請求。當終端使用者在自己的程式執行期間發現有可疑問題時,希望暫時使自己的程式靜止下來。亦即,使正在執行的程序暫停執行;若此時使用者程序正處於就緒狀態而未執行,則該程序暫不接受排程,以便使用者研究其執**況或對程式進行修改。我們把這種靜止狀態稱為掛起狀態。  

(2) 父程序請求。有時父程序希望掛起自己的某個子程序,以便考查和修改該子程序,或者協調各子程序間的活動。

(3) 負荷調節的需要。當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的程序掛起,以保證系統能正常執行。

(4) 作業系統的需要。作業系統有時希望掛起某些程序,以便檢查執行中的資源使用情況或進行記賬。

具有掛起狀態的轉換圖

建立乙個程序一般要通過一下兩個兩個步驟

(1) 為乙個新程序建立pcb,並填寫必要的管理資訊.

(2) 把該程序轉入就緒狀態並插入就緒佇列之中。當乙個新程序被建立時,系統已為其分配了pcb,填寫了程序標識等資訊,但由於該程序所必需的資源或其它資訊,如主存資源尚未分配等,一般而言,此時的程序已擁有了自己pcb,但程序自身還未進入主存,即建立工作尚未完成,程序還不能被排程執行,其所處的狀態就是建立狀態。 引入建立狀態,是為了保證程序的排程必須在建立工作完成後進行,以確保對程序控制塊操作的完整性。同時,建立狀態的引入,也增加了管理的靈活性,作業系統可以根據系統效能或主存容量的限制,推遲建立狀態程序的提交。對於處於建立狀態的程序,獲得了其所必需的資源,以及對其pcb初始化工作完成後,程序狀態便可由建立狀態轉入就緒狀態。

等待作業系統進行善後處理,然後將其pcb清零,並將pcb空間返還系統。當乙個程序到達了自然結束點,或是出現了無法克服的錯誤,或是被作業系統所終結,或是被其他有終止權的程序所終結,它將進入終止狀態。進入終止態的程序以後不能再執行,但在作業系統中依然保留乙個記錄,其中儲存狀態碼和一些計時統計資料,供其它程序收集。一旦其它程序完成了對終止狀態程序的資訊提取之後,作業系統將刪除該程序

程序的排程演算法:

1、先來先服務fcfs:該演算法即可用於作業排程,也可用於程序排程

2.短作業優先/短程序優先 :sjf/  spf :選擇剩餘時間最短的

3.優先權優先  fpf

4.時間片輪詢法

程序狀態轉換 CPU排程演算法

程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。在特定的情況下,這三種狀態可以相互轉換。就緒 執行,當前執行程序阻塞,排程程式選乙個優先權最高的程序占有處理機 執行 就緒,當前執行程序時間片用完 執行 等待,當前執行程序等待鍵盤輸入,進入了睡眠狀態。等待 就緒,i o操...

程序狀態轉換 CPU排程演算法

程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。在特定的情況下,這三種狀態可以相互轉換。就緒 執行,當前執行程序阻塞,排程程式選乙個優先權最高的程序占有處理機 執行 就緒,當前執行程序時間片用完 執行 等待,當前執行程序等待鍵盤輸入,進入了睡眠狀態。等待 就緒,i o操...

linux程序排程方法

linux 核心的三種排程方法 1 sched other 分時排程策略,2,sched fifo 實時排程策略,先到先服務 3,sched rr 實時排程策略,時間片輪轉 核心的三種排程方法 1 sched other 分時排程策略,2,sched fifo 實時排程策略,先到先服務 3,sche...