使用C语音写出调度算法
时间: 2023-07-29 15:11:15 浏览: 36
以下是一个简单的调度算法示例,使用C语言实现:
```c
#include <stdio.h>
int main() {
int burstTime[5], waitingTime[5], turnaroundTime[5], arrivalTime[5];
float avgWaitingTime = 0, avgTurnaroundTime = 0;
int i, j, temp;
// 输入进程信息
for(i = 0; i < 5; i++) {
printf("Enter arrival time and burst time for process %d: ", i+1);
scanf("%d %d", &arrivalTime[i], &burstTime[i]);
}
// 按照到达时间排序
for(i = 0; i < 5; i++) {
for(j = i+1; j < 5; j++) {
if(arrivalTime[i] > arrivalTime[j]) {
temp = arrivalTime[i];
arrivalTime[i] = arrivalTime[j];
arrivalTime[j] = temp;
temp = burstTime[i];
burstTime[i] = burstTime[j];
burstTime[j] = temp;
}
}
}
// 计算等待时间和周转时间
waitingTime[0] = 0;
turnaroundTime[0] = burstTime[0];
for(i = 1; i < 5; i++) {
waitingTime[i] = waitingTime[i-1] + burstTime[i-1] - arrivalTime[i] + arrivalTime[i-1];
if(waitingTime[i] < 0) {
waitingTime[i] = 0;
}
turnaroundTime[i] = waitingTime[i] + burstTime[i];
}
// 输出每个进程的等待时间和周转时间
printf("\nProcess\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time\n");
for(i = 0; i < 5; i++) {
printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\n", i+1, arrivalTime[i], burstTime[i], waitingTime[i], turnaroundTime[i]);
avgWaitingTime += waitingTime[i];
avgTurnaroundTime += turnaroundTime[i];
}
// 输出平均等待时间和平均周转时间
printf("\nAverage waiting time: %f\n", avgWaitingTime/5);
printf("Average turnaround time: %f\n", avgTurnaroundTime/5);
return 0;
}
```
该示例实现了一个简单的先来先服务(FCFS)调度算法,通过输入每个进程的到达时间和执行时间,计算出每个进程的等待时间和周转时间,并输出平均等待时间和平均周转时间。