程序排程演算法 —— 非搶佔式優先順序排程演算法
阿新 • • 發佈:2018-11-03
/*非搶佔式優先順序排程演算法*/ #include <iostream> using namespace std; struct Num { int priority; //優先順序 int dt; //到達時間 int st; //執行時間 }sum[5]={{2,0,3},{3,2,2},{5,2,5},{1,5,3},{4,8,1}}; int main() { int c=0; //記錄程式的執行個數 int time=0; //記錄時間 int b=100; //記錄上一個的程式 int a=100; while(c<5) { //int t_t; //找早到的優先順序高的 int p=100; //記錄優先順序 for(int i=0;i<5;i++) { if(time>=sum[i].dt) //判斷當前可執行的程式 { if(p>sum[i].priority) //判斷最少執行時間 { p=sum[i].priority;//更換優先順序 a=i; //錄當前可執行的優先順序的值 } } } if(a!=b) //判斷當前的時間是否有程式可以執行 { //有 time+=sum[a].st; b=a; cout<<"執行程式"<<b+1<<";等待時間:"<<time-sum[b].dt-sum[b].st<<";完成時間:"<<time<<"。"<<endl; // cout<<"**************"<<kkk<<"*****************"<<time<<endl; sum[a].priority=100; c++; } else { //找不到時間+1 time++; } } return 0; }