對乙個非搶占式多道批處理系統採用以下演算法的任意兩種,實現程序排程,並計算程序的開始執行時間,周轉時間,帶權周轉時間,平均周轉時間,平均帶權周轉時間
1.先來先服務演算法 2.短程序優先演算法 *3.高響應比優先演算法
一、設計思想
每個程序有乙個程序控制塊( pcb)表示。程序控制塊可以包含如下資訊:程序名、優先數、到達時間、需要執行時間、已用cpu時間、程序狀態等等。
程序的優先數及需要的執行時間可以事先人為地指定(也可以由隨機數產生)。程序的到達時間為程序輸入的時間。
程序的執行時間以時間片為單位進行計算
1、先來先到演算法:優先執行先到達的程序,後達到的程序後執行,類似資料結構中的佇列,先進先出,對於先來先服務演算法,我們只需要隊程序進行排序即可;
2、短程序優先演算法:若程序的到達時間有先後,則還是先執行先到達的程序,若當前有程序正在執行,則到達的程序置為就緒狀態,等待程序執行完畢,釋放資源後,比較處於就緒狀態的程序,服務時間短的優先執行,等待下乙個程序執行完畢後,繼續比較就緒程序的服務時間,仍取服務時間短的。
資料結構:
先來先服務排序部分演算法:
短程序優先部分演算法:
將所有的程序資訊存入陣列裡,本程式通過隨機賦值賦予程序到達時間、服務時間等,然後通過計算計算出周轉時間、帶權周轉時間、平均周轉時間以及平均帶權周轉時間
程式源**如下:
`#include #include #include #include //程序控制塊(pcb)
struct pcb
;struct pcb a[100];
struct pcb b[100];
char *jczt = ;//*表示沒有字串的大小限制
//列印統計資訊
void tjxx(int n)
}void xlxfw(int n)
if (a[j].arrivetime == a[j + 1].arrivetime)//程序同時到}}
} for (int k = 0; k< n; k++)
else
printf("\t\t程序 %c 到達\t程序狀態\n", a[k].name);
printf("\n\t\t\t\t %s\n\n\n", jczt[processztsy]);
if (processnum >= 1)
if (processnum == 0)
}if (time == a[k].finishtime && a[k].finishtime != 0)
if ((k >= 1 && time >= a[k].arrivetime && time == a[k - 1].finishtime && a[k].arrivetime != 0))
}if (time > a[n - 1].finishtime && a[n - 1].finishtime != 0)
time++;
sleep(1000);
} tjxx(n);
}void djcyx(int n)
} }while (1)
else
printf("\t\t程序 %c 到達\t程序狀態\n\n\n\n", a[k].name);
}} if (jcnum == 0)
ztgb = true;}}
if (ztgb == true)
}if (time == a[jcnum - 1].finishtime && a[jcnum - 1].finishtime != 0)
ztgb = true;}}
if (ztgb == true || jcnum == n - 1)
}if (time > a[n - 1].finishtime && a[n - 1].finishtime != 0)
time++;
sleep(1000);
} tjxx(n);
}//資訊錄入
int info()
system("cls");
return n;
}void main()
if (b != 0)
}printf("\n\t\t謝謝使用!\n\n\t\t");
}`
程序排程實現 C語言
程序排程實現 c語言 本程式主要來自但是鏈結裡的短程序優先排程演算法有些錯誤實現不了,這是我修改後的程式,裡面也有c 語言。去部落格設定頁面,選擇一款你喜歡的 片高亮樣式,下面展示同樣高亮的 片.include include include using namespace std struct n...
程序排程演算法(程序排程策略)
程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...
程序排程演算法
排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...