时间片轮转算法c语言
时间: 2023-11-25 22:49:06 浏览: 136
时间片轮转算法是一种常见的调度算法,它是一种抢占式的调度算法,可以保证每个进程都能够获得公平的CPU时间片。在该算法中,每个进程被分配一个时间片,当时间片用完后,进程会被挂起并放入就绪队列的末尾,等待下一次调度。下面是一个简单的时间片轮转算法的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_PROCESS_NUM 10
#define TIME_SLICE 2
typedef struct {
int pid; // 进程ID
int burst_time; // 进程需要执行的时间
int remaining_time; // 进程剩余需要执行的时间
} Process;
int main() {
int n, i, j, time = 0, flag = 0;
Process p[MAX_PROCESS_NUM];
printf("请输入进程数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入进程%d的执行时间:", i + 1);
scanf("%d", &p[i].burst_time);
p[i].remaining_time = p[i].burst_time;
p[i].pid = i + 1;
}
printf("\n进程执行顺序:");
while (1) {
flag = 0;
for (i = 0; i < n; i++) {
if (p[i].remaining_time > 0) {
flag = 1;
if (p[i].remaining_time > TIME_SLICE) {
time += TIME_SLICE;
p[i].remaining_time -= TIME_SLICE;
printf(" %d ", p[i].pid);
} else {
time += p[i].remaining_time;
printf(" %d ", p[i].pid);
p[i].remaining_time = 0;
}
}
}
if (flag == 0) {
break;
}
}
printf("\n进程执行完毕,总用时:%d\n", time);
return 0;
}
```
阅读全文