C++实现先来先服务(FCFS)算法:优化CPU调度

本文提供了一个使用C++实现先来先服务(FCFS)算法的示例代码,用于演示这种简单但常用的CPU调度算法。

**代码示例:**cpp#include #include

// 任务结构体struct Task { int id; int arrivalTime; int burstTime;};

// 先来先服务调度算法void FCFS(std::queue& tasks) { int currentTime = 0; int totalWaitingTime = 0; while (!tasks.empty()) { Task currentTask = tasks.front(); tasks.pop(); // 如果当前任务的到达时间晚于当前时间,需要等待 if (currentTask.arrivalTime > currentTime) { currentTime = currentTask.arrivalTime; } // 执行当前任务 currentTime += currentTask.burstTime; // 计算当前任务的等待时间 int waitingTime = currentTime - currentTask.arrivalTime - currentTask.burstTime; totalWaitingTime += waitingTime; std::cout << 'Task ' << currentTask.id << ': Waiting Time = ' << waitingTime << std::endl; } double averageWaitingTime = static_cast(totalWaitingTime) / tasks.size(); std::cout << 'Average Waiting Time = ' << averageWaitingTime << std::endl;}

int main() { // 创建任务队列 std::queue tasks; // 添加示例任务 tasks.push({1, 0, 6}); tasks.push({2, 2, 4}); tasks.push({3, 4, 3}); tasks.push({4, 6, 7}); tasks.push({5, 8, 2}); // 调用先来先服务算法 FCFS(tasks); return 0;}

代码解释:

  1. 任务结构体: Task结构体用于表示一个任务,包含三个成员变量: * id: 任务ID * arrivalTime: 任务到达时间 * burstTime: 任务执行所需时间

  2. FCFS函数: 该函数实现了FCFS算法的核心逻辑: * 接受一个任务队列作为参数。 * 使用一个循环遍历任务队列,直到队列为空。 * 在每次循环中,从队列头部取出一个任务。 * 判断该任务的到达时间是否晚于当前时间,如果是则更新当前时间。 * 计算该任务的等待时间并累加到总等待时间中。 * 输出该任务的等待时间。 * 最后,计算并输出所有任务的平均等待时间。

  3. main函数: * 创建一个任务队列。 * 向队列中添加示例任务。 * 调用FCFS函数执行调度算法。

总结:

FCFS算法是一种简单直观的CPU调度算法,其优点是易于实现,但缺点是平均等待时间较长,尤其是在任务执行时间差异较大的情况下。

扩展:

除了FCFS算法外,还有许多其他的CPU调度算法,例如:

  • 最短作业优先(SJF)* 优先级调度* 轮转调度(Round Robin)

每种算法都有其自身的优缺点,需要根据具体的应用场景选择合适的算法。

C++实现先来先服务(FCFS)算法:优化CPU调度

原文地址: https://www.cveoy.top/t/topic/FnP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录