#include
#include
#include
#include
using namespace std;
const int maxnum = 101;
typedef struct information
}node;
struct node1//此結構體用於優先順序演算法的搶占式
int priority;
int pos;
};struct node2//此結構體用於最短作業優先演算法的搶占式
int priority;
int pos;
};/*struct node3//此結構體用於最高相應比優先演算法的搶占式
double priority;
int pos;
};*/
node slove_node[maxnum];
node main_node[maxnum];
bool finish_flag[maxnum];//確定乙個作業是否做完
int num;
string int_to_string(int time);
void fcfs();
void rotate();
void priority();
void short();
void hrn();
void print();
int cmp( const void *a ,const void *b)
struct cmp1
};int main()
for (i = 6;i>0;i--)
while(!pri_q.empty())
}return 0;}//
void fcfs()
cout<<"請選擇是否使用搶占式(1(代表搶占)0(代表不能搶占))"<>choose;
if (choose == 0)/非搶占式
slove_node[min_j].finish = temp_time;
slove_node[min_j].start = slove_node[min_j].finish - slove_node[min_j].use_time;
slove_node[min_j].ti = slove_node[min_j].finish - slove_node[min_j].in_time;
slove_node[min_j].wi = (double)slove_node[min_j].ti/slove_node[min_j].use_time;
flag_will[min_j] = false;
finish_flag[min_j] = true;
slove_node[min_j].flag = int_max;
}print();
}else333333333333333333333333搶占式
node1 get;
bool flag = true;
int temp_time=0;
while(flag)
break;}}
if (!flag)
break;
while (!pri_q.empty())
break;}}
if(!flag)
break;
for (j = 0;j=slove_node[i].in_time)
}slove_node[min_j].finish = temp_time;
slove_node[min_j].start = slove_node[min_j].finish - slove_node[min_j].use_time;
slove_node[min_j].ti = slove_node[min_j].finish - slove_node[min_j].in_time;
slove_node[min_j].wi = (double)slove_node[min_j].ti/slove_node[min_j].use_time;
flag_will[min_j] = false;
finish_flag[min_j] = true;
slove_node[min_j].use_time = int_max;
}print();
}else4444444444444444444444444444444444搶占式
node2 get;
bool flag = true;
int temp_time = 0;
while(flag)
flag = true;
break;}}
if (!flag)
break;
while (!pri_q.empty())
}temp_time += slove_node[min_j].use_time;
for (i = 0;i=slove_node[i].in_time)
flag_will[i] = true;
}slove_node[min_j].finish = temp_time;
slove_node[min_j].start = slove_node[min_j].finish - slove_node[min_j].use_time;
slove_node[min_j].ti = slove_node[min_j].finish - slove_node[min_j].in_time;
slove_node[min_j].wi = (double)slove_node[min_j].ti/slove_node[min_j].use_time;
flag_will[min_j] = false;
finish_flag[min_j] = true;
slove_node[min_j].ri = 0;
}print();
// }
/* else5555555555555555555555555555搶占式
node2 get;
bool flag = true;
int temp_time = slove_node[0].in_time;
while(flag)
}if (!flag)
break;
while (!pri_q.empty())
else
result[5] = '/0';
}else
else
result[4] = '/0';
}result_finally = result;
return result_finally;
}
作業系統排程演算法
在作業系統中存在多種排程演算法,其中有的排程演算法適用於作業排程,有的排程演算法適用於程序排程,有的排程演算法兩者都適用。下面介紹幾種常用的排程演算法。fcfs排程演算法是一種最簡單的排程演算法,該排程演算法既可以用於作業排程也可以用於程序排程。在作業排程中,演算法每次從後備作業佇列中選擇最先進入該...
作業系統 排程演算法
fcfs是最簡單的排程演算法,既可以用於作業排程,也可以用於程序排程,系統將按照作業到達的先後次序來進行排程。sjf演算法是以作業的長短來計算優先順序,作業越短,優先順序越高。作業的長短是以作業所要求的執行時間來衡量的。可以分別用於作業排程和程序排程。缺點 必須預知作業的執行時間 對長作業很不利,長...
作業系統 排程演算法
1 先來先服務排程演算法 fcfs 1 按照作業提交,或程序變為就緒狀態的先後次序分派cpu 2 新作業只有噹噹期那作業或程序執行完成或阻塞才獲得cpu執行 3 被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序讓出cpu 預設非搶占方式 4 有利於cpu繁忙型的作業,而不利於i o繁忙的作業...