前兩篇部落格都是在講作業系統程序,包括程序狀態、pcb、程序同步、通訊、執行緒等——我的作業系統複習——程序(上) 和 我的作業系統複習——程序(下),本篇開始講處理器排程,包括處理機排程演算法、死鎖等。
處理機排程程式按照某種演算法將處理機分配給某個程序,這就叫處理機排程。總體而言,按層次分,有三種型別:
作業排程的本質就是根據某種演算法,把外存上的作業調入記憶體,並為之建立程序,分配處理機並執行。這裡有兩個概念:
1)作業(job)
在作業系統概述中,我們了解過作業系統的發展歷程,在單道批處理系統和多道批處理系統中粗略了解過作業的概念。作業是乙個比程式更廣泛的概念,可以包含多個程式和資料,還包含乙份作業說明書,處理機根據作業說明書來對作業中的程式進行控制。一般而言,批處理系統中才會有高階排程。
2)作業步(job step)
作業步的本質就是程式。作業執行過程中的每乙個步驟可以稱為乙個作業步。典型的作業可分為三個作業步:編譯作業步->連續裝配作業步->執行作業步。相當於我們的程式**的整個執行步驟。
程序排程的本質就是根據某種演算法,把處理機分配給程序。程序排程首先會儲存處理機現場。將程式計數器等指定暫存器中的內容儲存到pcb中。然後將按照某種演算法從就緒佇列中選取程序,把處理機分配給程序。最後,把指定程序的pcb中的處理機現場資訊恢復到處理機中,處理機分配給程序執行。這裡需要額外的了解一下程序排程中的三個基本機制和兩種排程方式:
1)程序排程中的三個基本機制
分派器。把從就緒佇列中取出的程序,處理機上下文切換後,把處理機分配給該程序執行。
上下文切換機制。
(ps:這裡有乙個額外的知識:通常每一次上下文切換需要花費幾毫秒的時間。有一種簡單的方式,通過多組暫存器來減少上下文切換的時間。一組暫存器供處理機在系統態使用,一組供處理機在應用程式狀態時使用。這樣,上下文切換的時候只需要改變指標,指向當前的暫存器。)
(pss:cpu的系統態就是cpu在執行作業系統,使用者態則是cpu在執行普通應用程式。)
2)程序排程的兩種排程方式
中級排程的本質就是讓暫時不能執行的程序掛起,釋放記憶體資源,並把它們調到外存上去等待。什麼是外存?外存就是硬碟、磁碟等儲存裝置。
說到排程演算法,那麼有幾個衡量程序執行效率的名詞需要了解一下,在做題的時候需要用到:
顧名思義。就是先來的先進入記憶體或占用處理機。對於作業排程,就是從後備作業佇列中選擇乙個或多個最先進入佇列的作業,將其調入記憶體。對於程序排程就是從就緒佇列選擇最新進入的程序,為之分配處理機。
顧名思義。就是在選擇作業或程序的時候,先估算每個作業、程序的服務時間,選擇其中最短的優先獲得處理機。
這種演算法給程序加了乙個屬性,那就是優先權。這個演算法的本質就是,高優先權的優先呼叫。優先權有兩種型別,一種是靜態的,即每個程序、作業的優先權在它建立的時候就已經確定,此後都不能改變。另一種是動態的,即程序、作業的優先權是可以改變的。最常見的做法就是程序、作業在等待中,優先權以一定速率隨時間增長,這樣等待時間越長,被呼叫的可能性就越大。
這就是分時系統中採用的排程演算法。原理就是把所有的就緒佇列程序按先來先服務的原則排成佇列。每次都把cpu分配給隊首,讓其執行乙個時間片,執行完畢,排程器中斷程序,並把該程序移至就緒佇列的隊尾,然後再取乙個隊首程序,繼續執行下乙個時間片。時間片是什麼,就是一段很短的cpu時間,幾毫秒到幾百毫秒不等。
這是當下公認的比較好的,使用最廣泛的排程演算法。其原理也不難。例如,某計算機採用多級反饋佇列排程演算法,設定了5個就緒佇列。第乙個就緒佇列優先順序最高,時間片為2ms。第二個就緒佇列優先順序第二,時間片為4ms,其餘佇列也一樣,優先順序依次遞減,時間片依次增加。如果某個程序進入就緒佇列,首先把它放在第乙個就緒佇列的末尾,輪到它執行就執行2ms,時間片結束,若該程序還沒有執行完畢,就把該程序移入第二個就緒佇列的末尾。只有當第乙個佇列的程序都執行完時間片,才會執行第二個佇列。如此依次執行,若該程序服務時間很長,將被移到最後乙個就緒佇列。在最後乙個就緒佇列,程序將按照時間片輪轉排程法執行。處理機執行過程中,只有當優先順序高的佇列中的執行緒都執行完畢,才會執行優先順序低的佇列。如圖所示(懶得自己畫一遍了,直接從書上拿過來):
何謂死鎖?即多個程序在執行過程中因爭奪資源造成的一種僵局。
(1)、產生死鎖的必要原因:
1)互斥條件。即一段時間內,某資源只能由乙個程序占用。這段時間,其他的程序只能等待。
2)請求和保持條件。程序已經保持了至少乙個資源,但又提出了新的資源請求,而該資源又已被其它程序占有,此時請求程序阻塞,但又對自己已獲得的其它資源保持不放。
3)不剝奪條件。程序已獲得的資源,在未使用完之前,不能被剝奪
4)環路等待條件。
參考:《計算機作業系統(湯子瀛)》
作業系統 處理機排程概念
乙個作業被提交後,必須經過處理機排程,才能獲得處理機執行,通常經過三個排程 高階排程 高階排程,長程排程 中級排程 中程排程 低階排程 短程排程 根據某種演算法,把外村上處於後備佇列中的那些作業調入記憶體,排程物件是作業 就是一些程式,資料,還有一些作業說明書。作業需要執行哪些步驟執行完。每乙個步驟...
作業系統之處理機排程
1.處理機即計算機的處理器,簡單理解就是cpu,多處理機指多核,即多個cpu同時工作,隨著工藝的提高,多個cpu可以整合在一塊晶元上,比如兩核,四核處理器。2.作業和程序的區別 1 作業是乙個比程式更加廣泛的概念,包含程式 資料和作業說明書 2 程序包含pcb 程式和資料集合 所以程式是程序的一部分...
作業系統筆記 處理機排程
處理機排程概念 1 多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。2 提高處理機的利用率 改善系統效能,很大程度上取決於處理機排程的效能。3 處理機排程便成為os設計的中心問題之一。分配的任務由處理機排程程式完成。排程排程的實質就是一種資源分配。不同的系統和系統目標,通常採用不同...