📜  OS HRRN调度(1)

📅  最后修改于: 2023-12-03 15:33:20.863000             🧑  作者: Mango

OS HRRN调度介绍

什么是HRRN调度?

HRRN(Highest Response Ratio Next,最高响应比优先)是一种操作系统进程调度算法。在HRRN调度中,每个进程都有一个响应比,该响应比由该进程的等待时间和需要运行的时间计算而来。当调度器选择下一个进程时,将选择具有最高响应比的进程。

HRRN调度算法的优点

HRRN调度算法优点如下:

  • HRRN调度算法会优先选择等待时间较长的进程,从而避免了一些进程长时间得不到调度的情况。
  • HRRN调度算法能够充分利用CPU,从而达到更高的CPU利用率。
  • HRRN调度算法适合于短作业,能够在短时间内运行完毕。
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调度算法适用于如下场景:

  • 系统中存在多个长时间无人机资源的进程,而其他进程则需要及时获得响应。
  • 适用于短作业,能够在短时间内运行完毕。
总结

HRRN调度算法是一种高响应比优先的进程调度算法。该算法优先选择等待时间较长的进程,能够充分利用CPU,适合于短作业,能够在短时间内运行完毕。实现该算法时,需要计算每个进程的响应比,并选择响应比最高的进程进行执行。