用c语言写一个短进程优先算法
时间: 2023-08-14 22:03:40 浏览: 42
c语言编写的短进程优先
5星 · 资源好评率100%
以下是一个简单的短进程优先算法的C语言实现:
```c
#include<stdio.h>
struct process {
int pid; // 进程编号
int burst_time; // 执行时间
int waiting_time; // 等待时间
int turnaround_time; // 周转时间
};
// 计算等待时间和周转时间
void calculate_time(struct process p[], int n) {
int i, j;
int total_waiting_time = 0, total_turnaround_time = 0;
// 计算第一个进程的等待时间和周转时间
p[0].waiting_time = 0;
p[0].turnaround_time = p[0].burst_time;
// 计算其他进程的等待时间和周转时间
for(i = 1; i < n; i++) {
p[i].waiting_time = 0;
for(j = 0; j < i; j++) {
p[i].waiting_time += p[j].burst_time;
}
total_waiting_time += p[i].waiting_time;
p[i].turnaround_time = p[i].waiting_time + p[i].burst_time;
total_turnaround_time += p[i].turnaround_time;
}
// 输出每个进程的等待时间和周转时间
printf("\nProcess\t Burst Time\t Waiting Time\t Turnaround Time\n");
for(i = 0; i < n; i++) {
printf("%d\t\t %d\t\t %d\t\t %d\n", p[i].pid, p[i].burst_time, p[i].waiting_time, p[i].turnaround_time);
}
// 输出平均等待时间和平均周转时间
printf("\nAverage Waiting Time: %f\n", (float)total_waiting_time / n);
printf("Average Turnaround Time: %f\n", (float)total_turnaround_time / n);
}
// 短进程优先算法
void sjf(struct process p[], int n) {
int i, j;
struct process temp;
// 对进程按照执行时间进行排序
for(i = 0; i < n - 1; i++) {
for(j = 0; j < n - i - 1; j++) {
if(p[j].burst_time > p[j+1].burst_time) {
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
// 计算等待时间和周转时间
calculate_time(p, n);
}
int main() {
int i, n;
struct process p[10];
// 输入进程信息
printf("Enter the number of processes: ");
scanf("%d", &n);
printf("Enter the burst time of the processes:\n");
for(i = 0; i < n; i++) {
p[i].pid = i+1;
printf("Process %d: ", i+1);
scanf("%d", &p[i].burst_time);
}
// 运行短进程优先算法
sjf(p, n);
return 0;
}
```
这个实现中,首先输入进程的执行时间,然后按照执行时间进行排序,最后计算每个进程的等待时间和周转时间。
阅读全文