オペレーティングシステム-CPUスケジューリングアルゴリズム(FIFS,SJF,PRO,RR)
3150 ワード
FCFS、SJF(非プリエンプト)、優先度スケジューリング(非プリエンプト)、RRの4種類のスケジューリングアルゴリズムを使用して、CPUスケジューリングのプロセスをシミュレートします.(Linux、Windowsでも可)
入力:スケジューリングが必要なジョブ情報を格納job.txtドキュメント
出力:ジョブごとの番号付け、ジョブ開始実行時間、ジョブ終了時間、およびそのスケジューリングアルゴリズムの平均待ち時間
オプション:SJF(プリエンプト)、優先度スケジュール(プリエンプト)
入力:スケジューリングが必要なジョブ情報を格納job.txtドキュメント
出力:ジョブごとの番号付け、ジョブ開始実行時間、ジョブ終了時間、およびそのスケジューリングアルゴリズムの平均待ち時間
オプション:SJF(プリエンプト)、優先度スケジュール(プリエンプト)
#include
#include
using namespace std;
int h_start=0;
int m_start=0;
int mission;
int time_piece;
int wait_time;
char w;
class process
{
public:
int index;
int exe_time;
int h;
int m;
int priority;
char mark;
process()
{
mark='0';
}
};
void FCFS(process pro[])
{
process temp;
process pro1[5];
int i=0,j=0;
int key;
h_start=8;
m_start=0;
wait_time=0;
for(; i<5; i++)
pro1[i]=pro[i];
// 5
for(i=0; i<4; i++)
{
key=i;
for(j=i+1; j<5; j++)
if((pro1[j].h*60+pro1[j].m) < (pro1[key].h*60+pro1[key].m))
key=j;
temp=pro1[key];
pro1[key]=pro1[i];
pro1[i]=temp;
}
cout<=60)
{
h_start++;
m_start-=60;
}
cout<60)
{
h_start++;
m_start-=60;
}
cout<60)
{
h_start++;
m_start-=60;
}
cout<0)
{
for(i=0; i<5; i++)
{
if(pro1[i].mark=='2')continue;
pro1[i].mark='1';
cout<time_piece)
{
pro1[i].exe_time-=time_piece;
m_start+=time_piece;
if(m_start>=60)
{
h_start++;
m_start-=60;
}
cout<=60)
{
h_start++;
m_start-=60;
}
cout<>mission;
inFile>>time_piece;
for(int i=0; i<5; i++)
{
inFile>>p[i].index;
inFile>>p[i].h;
inFile>>w;
inFile>>p[i].m;
inFile>>p[i].exe_time;
inFile>>p[i].priority;
}
FCFS(p);
SJF(p);
PRO(p);
RR(p);
inFile.close();
return 0;
}