短作业优先调度算法C/C
时间: 2023-08-26 21:07:16 浏览: 41
短作业优先调度算法(Shortest Job First Scheduling)是一种常用的进程调度算法。它的主要思想是优先选择执行时间最短的进程。这种算法能够保证平均等待时间最小,但是可能会导致长时间的进程得不到执行。
以下是一个简单的C语言实现:
```c
#include <stdio.h>
struct process { // 进程结构体
int pid; // 进程ID
int burst; // 执行时间
};
void SJF(struct process proc[], int n) {
int i, j;
struct process temp;
// 按照执行时间进行排序
for(i = 0; i < n; i++) {
for(j = i + 1; j < n; j++) {
if(proc[i].burst > proc[j].burst) {
temp = proc[i];
proc[i] = proc[j];
proc[j] = temp;
}
}
}
// 执行进程并打印日志
int sum = 0;
printf("\nProcess Execution Order: ");
for(i = 0; i < n; i++) {
printf("P%d ", proc[i].pid);
sum += proc[i].burst;
printf("-> %d ", sum);
}
printf("\n");
}
int main() {
int n, i;
printf("Enter the number of processes: ");
scanf("%d", &n);
struct process proc[n];
// 输入进程ID和执行时间
for(i = 0; i < n; i++) {
printf("Process ID: ");
scanf("%d", &proc[i].pid);
printf("Burst Time: ");
scanf("%d", &proc[i].burst);
}
// 调用SJF算法
SJF(proc, n);
return 0;
}
```
该程序首先输入进程数量和每个进程的执行时间,然后调用SJF算法进行进程调度,并打印出进程执行的顺序和时间。