先来先服务和短作业优先调度算法代码c++
时间: 2023-11-18 22:00:59 浏览: 144
先来先服务和短作业优先调度算法
先来先服务(FCFS)是一种简单的调度算法,它按照进程到达的先后顺序进行调度。当一个进程到达时,它会被添加到就绪队列的末尾,然后在CPU空闲时被调度执行。下面是先来先服务调度算法的伪代码:
```
// 声明一个进程结构体
struct Process {
int arrivalTime; // 到达时间
int burstTime; // 执行时间
};
// 声明先来先服务调度函数
void FCFS(Process *processes, int n) {
int currentTime = 0; // 当前时间
for (int i = 0; i < n; i++) {
if (currentTime < processes[i].arrivalTime) {
currentTime = processes[i].arrivalTime;
}
printf("进程%d执行,执行时间:%d 到 %d\n", i+1, currentTime, currentTime + processes[i].burstTime);
currentTime += processes[i].burstTime;
}
}
```
短作业优先调度算法(SJF)是根据进程的执行时间长短进行调度的算法。当一个进程到达时,系统会选择执行时间最短的进程来执行。下面是短作业优先调度算法的伪代码:
```
// 声明短作业优先调度函数
void SJF(Process *processes, int n) {
int currentTime = 0; // 当前时间
for (int i = 0; i < n; i++) {
int shortest = i;
for (int j = i + 1; j < n; j++) {
if (processes[j].burstTime < processes[shortest].burstTime) {
shortest = j;
}
}
if (currentTime < processes[shortest].arrivalTime) {
currentTime = processes[shortest].arrivalTime;
}
printf("进程%d执行,执行时间:%d 到 %d\n", shortest+1, currentTime, currentTime + processes[shortest].burstTime);
currentTime += processes[shortest].burstTime;
processes[shortest].burstTime = INT_MAX; // 标记为已执行
}
}
```
这两种调度算法都是比较基础的算法,可以用于操作系统的进程调度。先来先服务适合执行时间大致相同时的进程,而短作业优先适合执行时间差异较大的进程。
阅读全文