程式簡介
在單道
程式環境下,只有一個
進程存在,計算機的所有資源由一個進程獨占,沒有資源競爭問題。然而在多道程式環境下,多個進程並發運行,各進程之間存在資源的相互競爭,特別是對處理器資源的競爭,從而影響到系統性能。
而處理器調度指在多道程式環境下將
處理器分配給各進程。在處理器調度中,合理的
調度算法能夠提高處理器的處理能力和系統性能,滿足用戶需求。
調度級
在
記憶體中並發的進程之間構成的是一種競爭使用處理器的關係。低級調度將處理器分配給
進程,低級調度受到記憶體中用戶作業數的影響,但是處理器調度不只是低級調度問題,還與記憶體中能夠接納用戶作業的個數有關,與作業調度有關,作業調度為高級調度。為了減輕記憶體的負擔,外存作為記憶體的補充,進程可以在外存與記憶體之間對換。對換到外存的進程調入記憶體為中級調度,中級調度也會影響記憶體中進程的調度,處理器調度與中級調度有關。
也就是說處理器調度劃分為3個層次:高級調度、中級調度和低級調度。進程調度是處理器調度的核心。用戶作業從提交給
系統開始,直到運行結束退出系統為止,將經歷高級調度、中級調度和低級調度。
高級調度
高級調度也稱為作業調度或長程調度。它決定允許哪些作業可參與競爭
CPU調度選中,便可獲得所需要的基本記憶體和設備資源,並被裝入記憶體,此後就以
進程形式參與並發運行,與其它進程競爭CPU。換言之,高級調度決定給哪個作業分配一台虛擬處理機,獲得虛擬處理機的作業將在該虛擬處理機上順序執行。從這個意義上說,高級調度進行的是虛擬處理機的分配,即CPU的巨觀調度,故高級調度亦稱巨觀調度。
高級調度中作業系統需要完成的工作:
確定作業的數據結構:
作業系統為每個進入系統的作業分配一個與進程控制塊(PCB)類似的作業控制塊(JCB),作業控制塊中包括的信息有:作業的名稱、作業對資源的需求信息、作業的資源使用信息、作業的控制方式、作業類型、作業優先權和作業狀態。
確定作業的調度算法:作業系統調度程式在調度作業前需要確定作業的
調度算法,然後再按照確定的作業調度算法從磁碟的作業後備佇列中選擇作業進入記憶體。
為作業分配資源:作業運行需要各種資源,包括硬體資源和軟體資源。硬體資源有記憶體、
處理器和各種輸入輸出設備。軟體資源有各種共享變數等。作業的資源分配策略主要考慮的是作業所包含的進程所需要的資源,在一般情況下,資源按照進程需求進行分配。資源分配中需要避免由進程之間的資源競爭而造成的
死鎖等現象。
回收作業資源:作業完成後,作業調度程式除了要輸出相關的作業信息之外,還要回收作業所占用的全部資源,撤銷與作業相關的進程和作業控制塊。
中級調度
中級調度又稱為中程調度,是為了提高記憶體利用率和平衡系統
負載而採取的一種利用外存補充記憶體的措施。
在多進程環境下,記憶體中的多個進程,其中有些進程可能需要掛起,這些進程暫時不參與對處理器的競爭。為了充分利用記憶體資源,系統會採用進程對換的方法將進程換出到外存,將這些進程占用的記憶體空間釋放,讓記憶體能夠接納新的進程或使得記憶體中的進程能夠更快推進。當被換出到外存中的進程掛起時間到時,又需要將這些進程換入到記憶體。中級調度是在換出記憶體的進程中確定需要進入記憶體的進程。
當進程需要換入記憶體,而記憶體資源不充足時,則系統需要選擇記憶體中的進程換出外存,讓出記憶體空間給進入記憶體的進程。
中級調度根據記憶體中能夠接納的進程數來平衡系統負載,起到在一定時間內平滑和調整系統負載的作用。
低級調度
低級調度又稱為進程調度、短程調度,是按照一定的
調度算法從記憶體的就緒進程佇列中選擇進程,為進程分配處理器。低級調度發生在記憶體中的就緒進程,被調度的進程從記憶體就緒到處理器中執行的過程,該過程很短,被稱為短程調度。
引起低級調度的主要原因 :
1.處理器執行的進程完成任務,處理器空閒;
2.處理器執行的進程轉入
阻塞狀態,此時處理器空閒;
3.處理器執行的進程被其它進程搶占;
4.處理器執行的進程被掛起。
進程調度中的基本機制:
1.排隊器。為使進程調度時能夠快速有效地找到就緒佇列中的每個進程,首先應該按照一定的方式將進程就緒佇列排成一個或多個佇列;
2.分派程式。分派程式將根據進程調度策略將所選中的進程從就緒佇列中移出,然後進行進程上下文的切換,並將處理器分配給進程;
3.上下文切換機制。上下文切換機制是指在作業系統分派程式的執行下完成處理器的切換過程,實現進程上下文切換。
調度原則
一般需綜合考慮以下四個基本調度原則:
(1)儘量提高系統的
吞吐量,系統吞吐量是指在單位時間內完成的平均作業數;
(2)均衡利用資源,使CPU與外設儘量都保持“忙”狀態;
(3)對所有的作業都應公平,任何一個作業的完成都不能被無限延遲;
(4)如果支持優先,應對優先權高的作業或進程給予優先服務。