程序的排程

2021-04-08 20:59:44 字數 1220 閱讀 8004

在我的作業系統還未進入程序之前,應該好好學習一下程序的排程。下面就來討論一下。

1、先來先服務(fcfs)

顧名思意,就是嚴格按照程序在佇列中的順序依次執行。沒有太多可說的。

2、迴圈法(round robin)

基本思想是讓每個程序在就緒佇列中的等待時間與享受服務的時間成比例。基本概念是將cpu的處理時間分成固定大小的時間片。每過經過一次時間片就發生一次排程。如果被調出的程序還未執行完,則進入佇列尾等待下一輪排程。其關鍵是時間片(time slicing)的長度的選擇。它的乙個缺點是對受處理器限制的程序和受i/o限制的程序的相對處理。

3、虛迴圈法(virtual round robin)

當乙個程序為i/o而被阻塞時,它加入到乙個i/o佇列。解除了i/o阻塞的程序都轉移到乙個fcfs輔助佇列中。當進行一次排程決策時,輔助佇列中的程序優於就緒佇列中的程序。也被稱做多級反饋輪轉法(round robin with multiple feedback)

4、最短程序優先(shortest process next)

與此相對應的作業排程方法是最短作業優先(shortest job first)。這是乙個非剝奪的策略,其原則是下一次選擇所需處理時間最短的程序。其難點在於需要知道或至少需要估計每個程序所需要的處理時間。還有乙個風險是只要不斷提供更短的程序,長程序就可能被餓死。

5、最高響應比(highest response_ration next)

響應比的定義如下:r=(w+t)/t=1+w/t。其中t為需要的執行時間,w為等待處理器的時間。每一次排程時,r最大者投入執行。

6、最短剩餘時間(shortest remaining time)

這是對spn增加了剝奪機制的版本。此時,排程程式總是選擇預期時間最短的程序。可以看到,如果乙個新就緒的程序比當前正在執行的程序有更短的剩餘時間,排程程式就會剝奪。

7、優先順序

靜態優先順序在此不討論。

動態優先順序的一般原則:

a、根據程序占有cpu時間的長短來決定。b、根據就緒程序等待cpu的時間長短來決定。即等待時間越長,它獲得排程選中的優先順序就越高。

下面來看乙個基於動態優先順序原理的排程方法:

反饋法(feedback)

乙個程序第一次進入系統時被放置在rq0,當它第一次執行後並返回就緒狀態時,被放置在rq1。在隨後的時間裡,它每一次被剝奪,就被降級到下乙個優先順序佇列中。

線性優先順序排程策略(selfish round robin)

我還沒看懂,先不寫了。 

程序排程 模擬程序排程的過程

通過這次實驗,理解程序排程的過程,進一步掌握程序狀態的轉變 程序排程的策略,進一步體會多道程式併發執行的特點,並分析具體的排程演算法的特點,掌握對系統效能的評價方法。編寫程式模擬實現程序的輪轉法排程過程,模擬程式只對pcb進行相應的排程模擬操作,不需要實際程式。假設初始狀態為 有n個程序處於就緒狀態...

程序的排程

程序的排程策略 排程策略 一組規則,決定什麼時候以怎樣的方式選擇乙個新程序執行。linux的排程基於分時和優先順序,程序根據優先順序來排隊 優先順序是動態的 程序排程的時機 核心執行緒是只有核心態沒有使用者態的特殊程序。程序的切換 程序的切換 掛起正在cpu上正在執行的程序,並恢復以前掛起的某個程序...

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...