c语言实现srtf算法
时间: 2024-02-02 16:03:39 浏览: 28
以下是C语言实现SRTF(最短剩余时间优先)算法的示例代码:
```c
#include <stdio.h>
struct Process {
int pid; // 进程ID
int burst_time; // 执行时间
int remaining_time; // 剩余执行时间
};
void srtf(struct Process processes[], int n) {
int total_time = 0; // 总执行时间
int completed = 0; // 已完成的进程数量
int shortest = 0; // 最短剩余时间的进程索引
while (completed != n) {
shortest = -1;
int min_time = INT_MAX;
// 找到剩余时间最短的进程
for (int i = 0; i < n; i++) {
if (processes[i].remaining_time > 0 && processes[i].remaining_time < min_time) {
min_time = processes[i].remaining_time;
shortest = i;
}
}
if (shortest == -1) {
total_time++;
continue;
}
// 执行进程
processes[shortest].remaining_time--;
total_time++;
// 进程执行完毕
if (processes[shortest].remaining_time == 0) {
completed++;
printf("进程 %d 执行完毕,执行时间:%d\n", processes[shortest].pid, total_time);
}
}
}
int main() {
struct Process processes[] = {
{1, 6, 6},
{2, 8, 8},
{3, 7, 7},
{4, 3, 3}
};
int n = sizeof(processes) / sizeof(processes[0]);
srtf(processes, n);
return 0;
}
```