double priority_scheduling(struct Process processes[]) { int i, j; int waiting_time = 0, turnaround_time = 0, completion_time=0; float average_waiting_time=0, average_turnaround_time=0; printf("\nProcess\t|Waiting Time |Turnaround Time| completion_time\n"); // 遍历每个进程 for(i = 0; i < n; i++) { // 找到优先级最高的进程 int highest_priority = i; for(j = i + 1; j < n; j++) { if (processes[j].arrival_time <= waiting_time && processes[j].priority < processes[highest_priority].priority) { highest_priority = j; } } // 计算等待时间和周转时间 waiting_time += (waiting_time >= processes[highest_priority].arrival_time) ? 0 : (processes[highest_priority].arrival_time - waiting_time); turnaround_time = waiting_time + processes[highest_priority].burst_time-processes[i].arrival_time; completion_time = waiting_time + processes[highest_priority].burst_time; printf("P%d\t|\t%d\t|\t%d\t|%d\n", processes[highest_priority].pid, waiting_time, turnaround_time, completion_time); // 更新等待时间 waiting_time += processes[highest_priority].burst_time; // 更新平均周转时间 average_turnaround_time += turnaround_time; // 更新剩余执行时间 processes[highest_priority].remaining_time = 0; } // 计算平均周转时间 average_turnaround_time /= n; return average_turnaround_time;修改成优先数越大优先级越高的
时间: 2024-03-15 22:45:47 浏览: 17
好的,下面是修改后的代码:
```c
double priority_scheduling(struct Process processes[]) {
int i, j;
int waiting_time = 0, turnaround_time = 0, completion_time = 0;
float average_waiting_time = 0, average_turnaround_time = 0;
printf("\nProcess\t|Waiting Time |Turnaround Time| completion_time\n");
// 遍历每个进程
for(i = 0; i < n; i++) {
// 找到优先级最高的进程
int highest_priority = i;
for(j = i + 1; j < n; j++) {
if (processes[j].arrival_time <= waiting_time && processes[j].priority > processes[highest_priority].priority) {
highest_priority = j;
}
}
// 计算等待时间和周转时间
waiting_time += (waiting_time >= processes[highest_priority].arrival_time) ? 0 : (processes[highest_priority].arrival_time - waiting_time);
turnaround_time = waiting_time + processes[highest_priority].burst_time - processes[highest_priority].arrival_time;
completion_time = waiting_time + processes[highest_priority].burst_time;
printf("P%d\t|\t%d\t|\t%d\t|%d\n", processes[highest_priority].pid, waiting_time, turnaround_time, completion_time);
// 更新等待时间
waiting_time += processes[highest_priority].burst_time;
// 更新平均周转时间
average_turnaround_time += turnaround_time;
// 更新剩余执行时间
processes[highest_priority].remaining_time = 0;
}
// 计算平均周转时间
average_turnaround_time /= n;
return average_turnaround_time;
}
```
在这个修改后的代码中,我们将优先级的比较符号从小于号(<)改为大于号(>),这样就可以让优先数越大的进程优先级越高了。其余的代码逻辑和之前的版本相同。