如何理解進程調度?

>>在什麼時候進程調度有意義:當系統負載很高,時時刻刻都有 N 多個進程處於可運行狀態,等待被調度運行時進程調度程序為了協調這 N 個進程的運行,必然得做非常多工作。如果當系統長時間都沒有一個進程要運行,那麼進程調度就沒多大用處了。

>>進程的幾種狀態:

如何理解進程調度?


創建狀態:進程在創建時需要申請一個空白PCB,向其中填寫控制和管理進程的信息,完成資源分配。如果創建工作無法完成,比如資源無法滿足,就無法被調度運行,把此時進程所處狀態稱為創建狀態

就緒狀態:進程已經準備好,已分配到所需資源,只要分配到CPU就能夠立即運行

執行狀態:進程處於就緒狀態被調度後,進程進入執行狀態

阻塞狀態:正在執行的進程由於某些事件(I/O請求,申請緩存區失敗)而暫時無法運行,進程受到阻塞。在滿足請求時進入就緒狀態等待系統調用

終止狀態:進程結束,或出現錯誤,或被系統終止,進入終止狀態。無法再執行

>>進程調度方式:

這裡按照是否剝奪的方式分為兩種調度方式。

1. 非剝奪方式(非搶佔方式)

分派程序一旦把處理機分配給某進程後便讓它一直運行下去,直到進程完成或發生某事件而阻塞時,才把處理機分配給另一個進程。

2. 剝奪方式(搶佔方式)

當一個進程正在運行時,系統可以基於某種原則,剝奪已分配給它的處理機,將之分配給其它進程。剝奪原則有:優先權原則、短進程、優先原則、時間片原則。

>>進程調度算法:

先來先服務(FCFS):屬於不可剝奪算法。算法每次從後備作業隊列中選擇最先進入該隊列的一個或幾個作業進行處理。特點:算法簡單,效率低,對長作業有利,對短作業不利。

短作業優先:時間片短的任務先處理特點:有效降低作業的平均等待時間和提高系統的吞吐量。

優先級:可分為非剝奪式和剝奪式;其中優先級可分為:靜態優先級和動態優先級。

時間片輪轉:定義了一個的時間單元,稱為時間片(或時間量)。一個時間片通常在1~100 ms之間。當正在運行的進程用完了時間片。後,即使此進程還要運行,操作系統也不讓它繼續運行,而是從就緒隊列依次選擇下一個處於就緒態的進程執行,而被剝奪CPU使用的進程返回到就緒隊列的末尾,等待再次被調度。

高響應比優先調度算法:(響應比)Rp=(等待時間+預計執行時間)/執行時間=響應時間/執行時間


分享到:


相關文章: