作業系統排程演算法

2021-05-23 16:40:03 字數 3302 閱讀 4298

#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繁忙的作業...