SJF(Shortest Job First,最短作业优先)是一种进程调度策略,它选择执行时间最短的进程来优先执行。在SJF调度策略下,操作系统会根据进程的执行时间长度来决定调度顺序,短作业将被优先执行。
基本原则和策略:
SJF调度策略旨在减少平均等待时间,因为短作业往往能够更快地完成并释放CPU资源,从而提高系统的吞吐量和响应时间。然而,SJF调度策略需要提前了解每个进程的执行时间,而在实际情况中,通常无法准确预测进程的执行时间。因此,SJF调度策略往往用作一种参考,而非实际应用的主要调度算法。
扩展:抢占式最短作业优先算法是:最短完成时间优先(Shortest Time to Complet First)调度策略。
接上文,在这里继续完成调度算法的实现
你只需要实现一个SJF算法类,然后实现schedule函数,比如下面的方法:
bool compareByBurstTime(const Process& p1, const Process& p2) {
return p1.burst_time < p2.burst_time;
}
void schedule(Process processes[], int n) {
// 按照执行时间排序进程
sort(processes, processes + n, compareByBurstTime);
int current_time = 0;
for (int i = 0; i < n; i++) {
Process currentProcess = processes[i];
cout << "执行进程 " << currentProcess.pid << ",执行时间 " << currentProcess.burst_time << endl;
current_time += currentProcess.burst_time;
cout << "进程 " << currentProcess.pid << " 执行完毕,完成时间 " << current_time << endl;
}
}