📅  最后修改于: 2023-12-03 15:33:20.863000             🧑  作者: Mango
HRRN(Highest Response Ratio Next,最高响应比优先)是一种操作系统进程调度算法。在HRRN调度中,每个进程都有一个响应比,该响应比由该进程的等待时间和需要运行的时间计算而来。当调度器选择下一个进程时,将选择具有最高响应比的进程。
HRRN调度算法优点如下:
HRRN调度算法缺点如下:
下面是一个简单的HRRN调度算法的实现:
float get_priority(int w, int s) {
return (w + s) / (float)s;
}
int hrrn_scheduler(Process processes[], int n) {
int current_time = 0;
int current_process = -1;
int waiting_time;
float priority, max_priority;
while(1) {
max_priority = -1;
for(int i=0; i<n; i++) {
if(processes[i].arrival_time <= current_time && processes[i].completed == false) {
waiting_time = current_time - processes[i].arrival_time;
priority = get_priority(waiting_time, processes[i].burst_time);
if(priority > max_priority) {
max_priority = priority;
current_process = i;
}
}
}
if(current_process == -1) {
printf("CPU空闲中...\n");
current_time++;
continue;
}
current_time += processes[current_process].burst_time;
processes[current_process].completed = true;
processes[current_process].turnaround_time = current_time - processes[current_process].arrival_time;
processes[current_process].waiting_time = processes[current_process].turnaround_time - processes[current_process].burst_time;
printf("进程 %d,在时刻 %d 执行完毕。\n", current_process+1, current_time);
if(check_all_completed(processes, n)) {
break;
}
}
}
HRRN调度算法适用于如下场景:
HRRN调度算法是一种高响应比优先的进程调度算法。该算法优先选择等待时间较长的进程,能够充分利用CPU,适合于短作业,能够在短时间内运行完毕。实现该算法时,需要计算每个进程的响应比,并选择响应比最高的进程进行执行。