作業系統 程序排程實驗 模擬 C 版

2021-10-14 02:00:21 字數 2560 閱讀 1984

一、實驗目的

編寫並除錯乙個模擬的程序排程程式,以加深對程序的概念及程序排程演算法的理解.

二、實驗內容

除錯執行「動態優先順序」排程演算法,給出執行結果。

採用「短程序優先」排程演算法對五個程序進行排程。每個程序有乙個程序控制塊( pcb)表示。程序控制塊可以包含如下資訊:程序名、到達時間、需要執行時間、已用cpu時間、程序狀態等等。

每個程序的狀態可以是就緒 w(wait)、執行r(run)、或完成f(finish)三種狀態之一。 每進行一次排程程式都列印一次執行程序、就緒佇列、以及各個程序的 pcb,以便進行檢查。重複以上過程,直到所要程序都完成為止。

基本演算法流程圖:

處理機排程演算法介紹

1.短作業優先排程演算法

優點:縮短作業的等待時間,提高系統的吞吐量。

缺點:對長作業不利。可能導致長作業長期不被排程而產生飢餓狀態。完全未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)會被及時處理。

2.先來先服務

優點:比較有利於長作業,有利於cpu繁忙型作業,用於批處理系統,

缺點:而不利於短作業,不利於i/o繁忙型作業,不適於分時系統

3.高響應比優先演算法:

優點:等待時間相同的作業,則要求服務的時間愈短,其優先權愈高,——對短作業有利

要求服務的時間相同的作業,則等待時間愈長,其優先權愈高,——是先來先服務

長作業,優先權隨等待時間的增加而提高,其等待時間足夠長時,其優先權便可公升到很高, 從而也可獲得處理機——對長作業有利,這種演算法是一種折衷,既照顧了短作業,又考慮了作業到達的先後次序,又不會使長作業長期得不到服務。

缺點:要進行響應比計算,增加了系統開銷

演算法設計

每個程序採取結構體的形式進行儲存。

對於三種優先順序的演算法設計,三個排程演算法中所有程序都是以時間的轉移而進行執行的。

先來先服務演算法的優先順序是以時間作為第一優先順序進行排序,

短作業優先是以程序服務時間作為第一優先順序,

高響應比是根據(等待時間+服務時間)/服務時間作為第一優先順序。

#includeusing namespace std;

const int n = 1e5;

struct work

}process[n];

int idx=0,n;

bool sjf(work a,work b) //短作業優先

sort(process,process+n);

cout<

int i=0;

while(1)

{// cout<=n) break;

if(process[idx].arrivetime<=i)

{ process[idx].begintime=i;

process[idx].waittime=process[idx].begintime-process[idx].arrivetime;

process[idx].finishtime=process[idx].begintime+process[idx].servicetime;

process[idx].runtime=process[idx].finishtime-process[idx].arrivetime;

process[idx].weightruntime=1.0*process[idx].runtime/process[idx].servicetime;

cout<測試資料

通過開啟桌面的processtestingdata.txt檔案處理資料

1 800 50

2 815 30

3 830 25

4 835 20

5 845 15

6 700 10

7 820 5

結果展示

短作業優先:

先來先服務:

高響應比:

結果分析

經過對比發現高響應比的平均周轉時間最短,即照顧了短程序又照顧了長程序,短作業優先中1號第二個進入佇列,但是因為程序太大直到最後才執行產生了「飢餓」,先到先服務嚴格根據時間先後進行執行,導致平均周轉時間最長。

作業系統 實驗三 程序排程模擬程式

1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若優先順序相同 演算法。1...

作業系統 實驗三 程序排程模擬程式

實驗三程序排程模擬程式 專業 商軟二班 姓名 江志彬 學號 201406114225 1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排...

實驗三 程序排程模擬程式 作業系統

實驗三 程序排程模擬程式 作業系統 一.目的和要求 1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序...