优先级调度算法c语言代码
时间: 2023-07-29 15:13:39 浏览: 34
下面是一个简单的优先级调度算法的 C 语言代码示例:
```c
#include <stdio.h>
#define MAX_PROCESS 10
struct process {
int pid; // 进程号
int priority; // 优先级
int burst_time; // 执行时间
};
int main() {
struct process processes[MAX_PROCESS];
int n, i, j, total_time = 0;
printf("输入进程数量:");
scanf("%d", &n);
// 输入每个进程的信息
for (i = 0; i < n; i++) {
printf("输入进程 %d 的进程号、优先级和执行时间:", i+1);
scanf("%d %d %d", &processes[i].pid, &processes[i].priority, &processes[i].burst_time);
total_time += processes[i].burst_time;
}
// 按照优先级进行排序
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (processes[i].priority < processes[j].priority) {
struct process temp = processes[i];
processes[i] = processes[j];
processes[j] = temp;
}
}
}
// 输出进程执行顺序
printf("\n进程执行顺序:");
for (i = 0; i < n; i++) {
printf(" P%d ", processes[i].pid);
}
printf("\n");
// 输出进程执行时间
printf("\n进程执行时间:\n");
printf("进程\t执行时间\n");
for (i = 0; i < n; i++) {
printf("P%d\t%d\n", processes[i].pid, processes[i].burst_time);
}
// 输出平均等待时间
float avg_wait_time = 0;
int current_time = 0;
printf("\n每个进程的等待时间:\n");
printf("进程\t等待时间\n");
for (i = 0; i < n; i++) {
int wait_time = current_time;
avg_wait_time += wait_time;
printf("P%d\t%d\n", processes[i].pid, wait_time);
current_time += processes[i].burst_time;
}
avg_wait_time /= n;
printf("\n平均等待时间:%.2f\n", avg_wait_time);
return 0;
}
```
该代码使用了一个结构体来保存每个进程的信息,包括进程号、优先级和执行时间。在输入完所有进程的信息后,根据优先级进行排序,并输出进程执行顺序和执行时间。最后计算每个进程的等待时间和平均等待时间。