Вот алгоритм циклического планирования, реализованный на языке 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. Пользователю предлагается ввести количество процессов, квант времени, а также время прибытия и время пакета для каждого процесса. Затем код планирует процессы с использованием алгоритма циклического перебора и отображает порядок выполнения.