c语言编写高响应比优先调度算法
时间: 2023-08-13 07:17:48 浏览: 157
以下是一个简单的 C 语言实现高响应比优先调度算法的示例代码:
```c
#include <stdio.h>
#define MAX_PROCESS 10
struct process {
int pid; // 进程 ID
int arrival_time; // 到达时间
int service_time; // 服务时间
int wait_time; // 等待时间
float response_ratio; // 响应比
};
int main() {
struct process processes[MAX_PROCESS];
int n, i, j;
printf("请输入进程数量:");
scanf("%d", &n);
// 输入进程信息
for (i = 0; i < n; i++) {
printf("请输入第 %d 个进程的到达时间和服务时间:", i + 1);
scanf("%d %d", &processes[i].arrival_time, &processes[i].service_time);
processes[i].pid = i + 1;
processes[i].wait_time = 0;
processes[i].response_ratio = 0;
}
// 计算进程的等待时间和响应比
int cur_time = 0, total_wait_time = 0;
for (i = 0; i < n; i++) {
cur_time += processes[i].service_time;
processes[i].wait_time = cur_time - processes[i].arrival_time - processes[i].service_time;
total_wait_time += processes[i].wait_time;
processes[i].response_ratio = (float)(processes[i].wait_time + processes[i].service_time) / processes[i].service_time;
}
// 按照响应比排序
struct process temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (processes[i].response_ratio < processes[j].response_ratio) {
temp = processes[i];
processes[i] = processes[j];
processes[j] = temp;
}
}
}
// 输出进程的调度顺序和等待时间
printf("进程调度顺序:");
for (i = 0; i < n; i++) {
printf("%d ", processes[i].pid);
}
printf("\n平均等待时间:%f\n", (float)total_wait_time / n);
return 0;
}
```
该程序首先输入进程数量和每个进程的到达时间和服务时间,然后根据高响应比优先调度算法计算每个进程的等待时间和响应比,最后按照响应比从大到小排序,输出进程的调度顺序和平均等待时间。
阅读全文