C語言中文網
首頁 > 編程筆記 > 操作系統筆記 閱讀:607

多級隊列調度算法(含實例分析)

在進程容易分成不同組的情況下,可以有另一類調度算法。例如,進程通常分為前臺進程(或交互進程)和后臺進程(或批處理進程)。這兩種類型的進程具有不同的響應時間要求,進而也有不同調度需要。另外,與后臺進程相比,前臺進程可能要有更高的優先級(外部定義)。

多級隊列調度算法將就緒隊列分成多個單獨隊列(圖 1)。根據進程屬性,如內存大小、進程優先級、進程類型等,一個進程永久分到一個隊列,每個隊列有自己的調度算法。

例如,可有兩個隊列分別用于前臺進程和后臺進程。前臺隊列可以采用 RR 調度算法,而后臺隊列可以采用 FCFS 調度算法

此外,隊列之間應有調度,通常采用固定優先級搶占調度。例如,前臺隊列可以比后臺隊列具有絕對的優先。

現在,我們看一個多級隊列調度算法的實例,這里有五個隊列,它們的優先級由高到低:

多級隊列調度
圖 1 多級隊列調度

每個隊列與更低層隊列相比具有絕對的優先。例如,只有系統進程、交互進程和交互編輯進程隊列都為空,批處理隊列內的進程才可運行。如果在一個批處理進程運行時有一個交互進程進入就緒隊列,那么該批處理進程會被搶占。

另一種可能是,在隊列之間劃分時間片。每個隊列都有一定比例的 CPU 時間,可用于調度隊列內的進程。例如,對于前臺-后臺隊列的例子,前臺隊列可以有 80% 的 CPU 時間,用于在進程之間進行 RR 調度,而后臺隊列可以有 20% 的 CPU 時間,用于按 FCFS 算法來調度進程。

所有教程

優秀文章

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo