Алгоритм циклического планирования на языке C с учетом времени прибытия [пример кода]

Вот алгоритм циклического планирования, реализованный на языке C, с учетом времени прибытия процессов.

#include <stdio.h>
#define MAX_PROCESSES 10
struct Process {
    int pid;
    int burstTime;
    int remainingTime;
    int arrivalTime;
};
void roundRobin(struct Process processes[], int n, int timeQuantum) {
    int remainingProcesses = n;
    int currentTime = 0;
    int completedProcesses = 0;

    while (remainingProcesses > 0) {
        for (int i = 0; i < n; i++) {
            if (processes[i].remainingTime > 0) {
                if (processes[i].remainingTime <= timeQuantum) {
                    currentTime += processes[i].remainingTime;
                    processes[i].remainingTime = 0;
                    printf("Process %d completed at time %d\n", processes[i].pid, currentTime);
                    completedProcesses++;
                } else {
                    currentTime += timeQuantum;
                    processes[i].remainingTime -= timeQuantum;
                    printf("Process %d executed for time quantum %d at time %d\n", processes[i].pid, timeQuantum, currentTime);
                }

                if (completedProcesses == n)
                    break;
            }
        }

        remainingProcesses = n - completedProcesses;
    }
}
int main() {
    struct Process processes[MAX_PROCESSES];
    int n, timeQuantum;

    printf("Enter the number of processes: ");
    scanf("%d", &n);

    printf("Enter the time quantum: ");
    scanf("%d", &timeQuantum);

    printf("Enter arrival time and burst time for each process:\n");
    for (int i = 0; i < n; i++) {
        printf("Process %d:\n", i + 1);
        printf("Arrival Time: ");
        scanf("%d", &processes[i].arrivalTime);
        printf("Burst Time: ");
        scanf("%d", &processes[i].burstTime);
        processes[i].pid = i + 1;
        processes[i].remainingTime = processes[i].burstTime;
    }

    roundRobin(processes, n, timeQuantum);

    return 0;
}

Этот код реализует алгоритм циклического планирования на языке C. Пользователю предлагается ввести количество процессов, квант времени, а также время прибытия и время пакета для каждого процесса. Затем код планирует процессы с использованием алгоритма циклического перебора и отображает порядок выполнения.