时间片轮转调度算法c语言代码
时间: 2023-07-29 08:12:17 浏览: 100
进程调度 时间片轮转调度算法源代码(C语言)
4星 · 用户满意度95%
下面是一个简单的时间片轮转调度算法的 C 语言代码实现:
```c
#include <stdio.h>
int main() {
int i, j, n, time, remain, flag=0, time_quantum;
int wait_time=0, turnaround_time=0, at[10], bt[10], rt[10];
printf("Enter the number of processes: ");
scanf("%d", &n);
remain = n;
for(i=0; i<n; i++) {
printf("Enter arrival time and burst time for process %d: ", i+1);
scanf("%d %d", &at[i], &bt[i]);
rt[i] = bt[i];
}
printf("Enter time quantum: ");
scanf("%d", &time_quantum);
printf("\n\nProcess\t|Turnaround time|Waiting time\n\n");
for(time=0,i=0; remain!=0;) {
if(rt[i]<=time_quantum && rt[i]>0) {
time += rt[i];
rt[i] = 0;
flag = 1;
} else if(rt[i]>0) {
rt[i] -= time_quantum;
time += time_quantum;
}
if(rt[i]==0 && flag==1) {
remain--;
printf("P[%d]\t|\t%d\t|\t%d\n", i+1, time-at[i], time-at[i]-bt[i]);
wait_time += time-at[i]-bt[i];
turnaround_time += time-at[i];
flag = 0;
}
if(i==n-1) {
i = 0;
} else if(at[i+1]<=time) {
i++;
} else {
i = 0;
}
}
printf("\nAverage waiting time = %f\n", wait_time*1.0/n);
printf("Average turnaround time = %f\n", turnaround_time*1.0/n);
return 0;
}
```
这个代码实现了一个简单的时间片轮转调度算法。它会要求用户输入进程的到达时间和运行时间,然后使用时间片轮转算法进行调度,并输出每个进程的周转时间和等待时间,以及平均周转时间和平均等待时间。
阅读全文