#include <stdio.h>

int main() { int num_processes, quantum; printf('Enter the number of processes to schedule: '); scanf('%d', &num_processes); int burst_times[num_processes], remaining_burst_times[num_processes], completion_times[num_processes], turnaround_times[num_processes], waiting_times[num_processes];

for (int i = 0; i < num_processes; i++) {
    printf('Enter the burst time of process %d: ', i+1);
    scanf('%d', &burst_times[i]);
    remaining_burst_times[i] = burst_times[i];
}

printf('Enter the length of the time quantum q: ');
scanf('%d', &quantum);

int current_time = 0, completed_processes = 0;

while (completed_processes < num_processes) {
    for (int i = 0; i < num_processes; i++) {
        if (remaining_burst_times[i] > 0) {
            if (remaining_burst_times[i] > quantum) {
                current_time += quantum;
                remaining_burst_times[i] -= quantum;
            } else {
                current_time += remaining_burst_times[i];
                completion_times[i] = current_time;
                turnaround_times[i] = completion_times[i];
                waiting_times[i] = turnaround_times[i] - burst_times[i];
                remaining_burst_times[i] = 0;
                completed_processes++;
            }
        }
    }
}

printf('Schedule sequence: ');
for (int i = 0; i < num_processes; i++) {
    for (int j = 0; j < burst_times[i]; j += quantum) {
        printf('%d ', i+1);
    }
}

float avg_waiting_time = 0, avg_turnaround_time = 0;
for (int i = 0; i < num_processes; i++) {
    avg_waiting_time += waiting_times[i];
    avg_turnaround_time += turnaround_times[i];
}

avg_waiting_time /= num_processes;
avg_turnaround_time /= num_processes;

printf('

AWT: %.2f ATT: %.2f', avg_waiting_time, avg_turnaround_time); return 0; }

C 程序:Linux 上的轮询调度算法实现

原文地址: https://www.cveoy.top/t/topic/m6Px 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录