C 程序:Linux 上的轮询调度算法实现
#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; }
原文地址: https://www.cveoy.top/t/topic/m6Px 著作权归作者所有。请勿转载和采集!