基於c 的作業排程演算法模擬

2021-08-20 21:38:23 字數 1230 閱讀 7262

程式實現了作業排程演算法中的fcfs演算法和sjf演算法.

fcfs演算法:優先考慮系統中等待時間長的作業 ,而不管該作業所需執行時間長短.說的通俗點 , 哪個作業先提交 , 哪個作業先進記憶體.這是對作業排程而言 , 同樣 , fcfs演算法也可以用於程序排程 , 此時 誰先進記憶體的誰先上cpu.

那麼這樣一來就會出現這樣的問題 : 如果乙個作業所需執行時間很長(長作業) , 並且它先提交給系統 . 那麼該作業就要長時間的占用cpu , 而之後來到的短作業 , 即便它占用cpu的時間很短也上不了cpu.在單位時間內 , cpu上執行的作業數會變少.系統吞吐量降低.

為了解決這種情況 , 採用sjf演算法. sjf演算法優先考慮短作業 , 即:不管作業的提交時間 , 作業服務時間短的先上cpu . 這樣一來,系統吞吐量提高了.

這套**基於鍊錶 , 鍊錶的乙個節點模擬乙個作業說明書.

fcfs和sjf兩套演算法是由void listsort2(linklist  &l) 和 void listsort(linklist  &l)模擬的.

#include#includeusing namespace std;

typedef struct lnode_jcb

lnode_jcb , *linklist;

int main()

void createlist_l(linklist &l , int n)}/*

void listsort(linklist &l , linklist &u)

else

}}*/

void listsort(linklist &l) //單鏈表排序 基於先來先服務演算法排序

q = q->next;

} p = p->next;

} } void listsort2(linklist &l) //單鏈表排序 基於短作業優先演算法排序

q = q->next;

} p = p->next;

} } void simulate_cpu_dispatch(linklist &l)

else

}}void fcfs(linklist &l , int n)

}void sjf(linklist &l , int n)

}

效果圖:

模擬磁碟排程演算法 c

測試結果 流程圖 實現 include include define inf 999999typedef struct seqlist sstf演算法 void sstf int n,seqlist l,int temp l k time false sum min printf d t t d t...

模擬 作業排程方案

最近做了這道題作業排程方案,附上鏈結 這道題文字很多,不易讀 我們現在要利用m臺機器加工n個工件,每個工件都有m道工序,每道工序都在不同的指定的機器上完成。每個工件的每道工序都有指定的加工時間。每個工件的每個工序稱為乙個操作,我們用記號j k表示乙個操作,其中j為1到n中的某個數字,為工件號 k為1...

作業排程模擬程式

1.實驗目的 1 加深對作業排程演算法的理解 2 進行程式設計的訓練。2 實驗要求 用高階語言編寫乙個或多個作業排程的模擬程式。單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完成為止,因此排程作業時不必考慮它所需要的資源是否得到滿足,它所執行的時間等因素。作業排程演算...