用c++编写采用“最高优先数优先”调度算法对五个进程进行调度进程1:A处理时间:3优先级:2; 进程2:B 处理时间:6 优先级:1 ;进程3:C 处理时间:4 优先级:3; 进程4:D 处理时间:5 优先级:4 ;进程5:E 处理时间:2 优先级:5。手动输入进程测试代码、。
时间: 2024-06-12 19:05:20 浏览: 87
#include <stdio.h>
// 进程结构体
struct process {
int id; // 进程编号
int time; // 处理时间
int priority; // 优先级
};
// 定义进程数组
struct process processes[5];
// 最高优先数优先调度算法
void HPRN() {
int i, j;
float max_ratio; // 最大响应比
int max_index; // 最大响应比进程的下标
int total_time = 0; // 总处理时间
float ratio; // 响应比
// 输出进程信息
printf("进程信息:\n");
for (i = 0; i < 5; i++) {
printf("进程%d:处理时间:%d,优先级:%d\n", processes[i].id, processes[i].time, processes[i].priority);
total_time += processes[i].time; // 计算总处理时间
}
printf("进程调度顺序:\n");
for (i = 0; i < total_time; i++) {
max_ratio = 0;
// 找出响应比最大的进程
for (j = 0; j < 5; j++) {
if (processes[j].time > 0) { // 进程未处理完
ratio = (i + processes[j].time) / (float)processes[j].time; // 计算响应比
if (ratio > max_ratio) { // 更新最大响应比和最大响应比进程的下标
max_ratio = ratio;
max_index = j;
}
}
}
printf("进程%d\n", processes[max_index].id);
processes[max_index].time--; // 处理时间减1
}
}
int main() {
int i;
// 输入进程信息
for (i = 0; i < 5; i++) {
printf("请输入进程%d的处理时间和优先级:", i + 1);
scanf("%d%d", &processes[i].time, &processes[i].priority);
processes[i].id = i + 1;
}
HPRN(); // 进行最高优先数优先调度算法
return 0;
}
阅读全文