作業系統程序排程

2021-10-02 07:30:47 字數 2456 閱讀 8099

華中農業大學 學生實驗報告

課程名稱 計算機作業系統 實驗名稱 程序排程 實驗型別 驗證 設計

綜合 創新

【實驗目的】

實驗目的:

(1)通過編寫程式實現程序或作業先來先服務、高優先權、按時間片輪轉排程演算法,使 學生進一步掌握程序排程的概念和演算法,加深對處理機分配的理解。

(2)了解程序(執行緒)的排程機制。

(3)學習使用程序(執行緒)排程演算法,掌握相應的與排程有關的 api 函式。

實驗要求:

(1)經除錯後程式能夠正常執行。

(2)採用多程序或多執行緒方式執行,體現了程序或作業先來先服務、高優先權、按時間片輪轉,高相應比優先排程演算法。

(3)程式介面美觀。

【實驗內容】

程序排程相關演算法:實現先來先服務、短作業優先、按時間片輪轉、按優先順序、高響應比優先。

【實驗環境】(含主要設計裝置、器材、軟體等)

pc電腦一台

【實驗步驟、過程】(含原理圖、流程圖、關鍵**,或實驗過程中的記錄、資料等)

內容:fcfs(先來先服務)和sjf(短作業優先)排程方法

先來先服務(fcfs)排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源、建立程序,然後放入就緒佇列。在程序排程中採用fcfs演算法時,則每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機。

時間片輪轉(rr)排程演算法是專門為分時系統設計的。它類似於 fcfs排程,但是增加了搶占以切換程序。該演算法中,將乙個較小時間單元定義為時間量或時間片。時間片的大小通常為 10~100ms。就緒佇列作為迴圈佇列。cpu 排程程式迴圈整個就緒佇列,為每個程序分配不超過乙個時間片的 cpu。為了實現 rr 排程,我們再次將就緒佇列視為程序的 fifo 佇列。新程序新增到就緒佇列的尾部。cpu 排程程式從就緒佇列中選擇第乙個程序,將定時器設定在乙個時間片後中斷,最後分派這個程序。

3.高優先順序排程演算法:該演算法用於作業排程時,系統從後備作業佇列中選擇若干個優先順序最高的,且系統能滿足資源要求的作業裝入記憶體執行。當該演算法用於程序排程時,將把處理機分配給就緒程序佇列中優先順序最高的程序。高優先順序排程演算法分為搶占的高優先順序排程演算法和非搶占的高優先順序排程演算法。非搶占式優先順序演算法,這種排程方式下,系統一旦把處理機分配給就緒佇列中優先順序最高的程序後,該程序就能一直執行下去,直至完成;或因等待某事件的發生使該程序不得不放棄處理機時,系統才能將處理機分配給另乙個優先順序高的就緒程序。搶占式優先順序排程演算法,在這種排程方式下,程序排程程式把處理機分配給當時優先順序最高的就緒程序,使之執行。一旦出現了另乙個優先順序更高的就緒程序時,程序排程程式就停止正在執行的程序,將處理機分配給新出現的優先順序最高的就緒程序。

4.高響應比排程演算法:該演算法實際上是一種動態優先排程演算法,它以相應比作為作業或程序的動態優先權,其目的是既照顧短作業,又考慮到作業的等待時間,使長作業不會長期等待;但每次排程前,都要進行響應比計算,會增加系統開銷。響應比 = 相應時間 / 要求服務時間 = 等待時間 + 要求服務時間 / 要求服務時間。

程式說明及實現:

fcfs 程式截圖:

rr **截圖:

prioity **截圖:

hrrf**截圖:

fcfs 結果截圖:

先選擇fcfs,設定四個程序;到達時間為分別為480,530,590,530,執行時間分別為12,50,10,20.

根據結果即可得到如下:

sjf結果截圖:

先選擇sjf, 設定四個程序;到達時間為分別為480,530,590,530,執行時間分別為12,50,10,20.

根據結果即可得到如下:

rr結果:

四個程序所需時間分別為2 5 1 6

結果如下:

priority 結果:

四個程序的優先順序分別為5 6 3 1

每個程序執行乙個時間單位後優先順序自動下降1

hrrf結果截圖:

p1,p2,p3,p4

【實驗結果或總結】(對實驗結果進行相應分析,或總結實驗的心得體會,並提出實驗的改進意見)

本次實驗描述了5 種演算法 :實現先來先服務、短作業優先、按時間片輪轉、按優先順序、高響應比優先。首先 對比的是先來先服務和短作業優先演算法,如果長作業靠前,則不適合用先來先服務;而短作業優先的則並不能很好的考慮到緊急的作業,也不利於那些長作業;而時間片輪轉法,對於每個進度都較為公平,但沒考慮到緊急作業;按優先順序的演算法只考慮到了緊急情況,並沒有考慮到作業的長短;所以在排程演算法裡,高響應比演算法可能更好。

不同排程演算法在**思路和**實現方面有較大的差異,綜合考慮到資料結構和演算法;先來先服務演算法和短作業優先演算法可以用棧來實現;按優先順序排程演算法可以用優先順序佇列來實現等等。

通過這次實驗懂得了理論和**的差距,雖然理論課聽懂了但實踐起來也有些差距。

通過這次實驗更加深入的理解了程序排程的各個演算法的實現,思想及適合的情況。希望自己抽空可以用c++來實現這些功能。

作業系統 程序排程

程序排程程序排程室作業系統必不可少的一種排程。因此在三種型別的os dos windows linux 都無一例外地配置了程序排程。此外它也是對系統效能影響最大的一種處理機排程。程序排程的任務 儲存處理機的現場資訊。在進行排程時首先需要儲存當前程序的處理機的現場資訊,如程式計數器 多個通用暫存器中的...

作業系統 程序排程

對於單處理器系統,同一時間只有乙個程式可以執行 其他程序都應等待,直到cpu空閒並可排程為止。多道程式的目標是,始終允許某個程序執行以最大化cpu利用率。cpu的程序屬性 週期進行cpu執行和i o等待。程序在這兩個狀態之間不斷交替。程序執行從cpu執行開始,之後i o執行 接著另乙個cpu執行,接...

作業系統 程序排程

在cpu分配資源的時候,我們需要考慮分配資源的規則,通過規則或者說演算法選擇乙個程序給處理機執行就是處理機排程,就像銀行排隊是先到者優先還是vip客戶優先。排程的層級分為 高階 中級 低階。狹義的程序排程只是選擇就緒佇列中的程序交給處理機執行,廣義的程序排程還包括程序切換。程序切換是乙個程序讓出處理...