作業系統,作業排程演算法參考
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int n =
1000
;struct task
task[n]
, tp_task[n]
;int num;
//程序數目
void
sleep
(int n)
void
getdata()
printf
("程序資訊輸入完畢!!!\n");
}void
backdata()
printf
("程序資訊寫入成功!!!\n");
}void
print()
}bool
cmp1
(const
struct task& a,
const
struct task& b)
//短作業優先演算法
void
sjf(
)putchar
('\n');
//sleep(1000 * task[i].turn_time); // 程式暫停時間(單位:ms)
task[i]
.start_time = countt;
countt +
= task[i]
.turn_time;
task[i]
.end_time = countt;
}printf
("\n所有程序全部執行完畢!!!\n\n");
print()
;}bool
cmp2
(const
struct task& a,
const
struct task& b)
//先來先服務演算法
void
fcfs()
putchar
('\n');
//sleep(1000 * task[i].turn_time); // 程式暫停時間(單位:ms)
task[i]
.start_time = countt;
countt +
= task[i]
.turn_time;
task[i]
.end_time = countt;
}printf
("\n所有程序全部執行完畢!!!\n\n");
print()
;}bool
c***
(const
struct task& a,
const
struct task& b)
else
return a.end_time < b.end_time;
}bool
cmp4
(const
struct task& a,
const
struct task& b)
// 非搶占 高響應比 優先排程演算法
void
hrrn()
putchar
('\n');
//sleep(1000 * task[0].turn_time); // 程式暫停時間(單位:ms)
task[0]
.start_time = countt;
countt +
= task[0]
.turn_time;
task[0]
.end_time = countt;
}printf
("\n所有程序全部執行完畢!!!\n\n");
sort
(task, task + num, cmp4)
;// 按照開始執行的時間從小到大排序
print()
;}bool
cmp5
(const
struct task a,
const
struct task b)
void
menu()
intmain()
backdata()
;}return0;
}
作業系統 作業排程(高階排程)
乙個典型的作業可分成三個作業步 1.編譯 作業步 2.鏈結裝配 作業步 3.執行 作業步。在多道批處理系統中通常有上百個作業,為了管理和排程作業,系統為每個作業設定了乙個作業控制塊 jcb 它記錄該作業的有關資訊。不同系統的 jcb的組成內容有所區別。jcb 是作業在系統中存在的唯一標誌。作業進入系...
作業系統作業排程演算法 評價指標
1.fcfs演算法 先來先服務演算法 最長等待時間服務演算法 演算法原則 哪乙個作業先提交給系統,就先執行哪乙個作業。演算法特點 非搶占式演算法,比較公平,優點是比較容易實現,缺點是不區分作業長短,不顧及輕重緩急。不能做到急事急辦,但是由於這是公平的演算法,並不會出現飢餓現象。2.sjf演算法 短作...
作業系統排程演算法
include include include include using namespace std const int maxnum 101 typedef struct information node struct node1 此結構體用於優先順序演算法的搶占式 int priority i...