C++实现FCFS与SJF调度算法

需积分: 12 34 下载量 153 浏览量 更新于2024-09-13 2 收藏 4KB TXT 举报
"FCFS和SJF调度算法的C++实现" FCFS(First-Come, First-Served,先来先服务)调度算法是操作系统中最简单的一种进程调度算法。它按照进程到达的时间顺序进行调度,即哪个进程先到达运行队列,就优先获得CPU资源。在给出的代码中,`FCFS()` 函数模拟了这一过程。通过遍历进程数组,计算每个进程的完成时间(`finishTime[i]`),并根据完成时间和到达时间计算出周转时间(`WholeTime[i]`),以及带权周转时间(`WeightWholeTime[i]`)。最后,计算平均周转时间和平均带权周转时间,用于评估调度效率。 SJF(Shortest Job First,最短作业优先)调度算法则是一种优化的调度策略,它优先选择服务时间最短的进程进行执行。在`SJF()`函数中,首先执行服务时间最短的进程,然后对剩余的进程进行同样的处理,不断找到当前未执行且服务时间最短的进程。在代码中,使用`min`变量存储当前最小服务时间,`allin`变量表示已考虑的进程数,`serviceTime_SJF`数组记录SJF调度下的服务时间。同样,计算SJF调度下的周转时间和带权周转时间,并得出平均值。 这两个调度算法各有优缺点。FCFS算法实现简单,但可能导致短进程等待时间过长,系统响应时间不佳。SJF算法可以有效减少平均等待时间,提高系统效率,但在动态环境下,预估服务时间可能不准确,且不利于长进程。 此外,代码中使用了`iostream`和`iomanip`库进行输入输出和格式控制,`n`表示进程数量,`nowTime`表示当前时间,`arrivalTime`和`serviceTime`分别存储进程的到达时间和服务时间,`finishTime`表示进程完成时间,`WholeTime`和`WeightWholeTime`分别表示周转时间和带权周转时间,`averageWT`和`averageWWT`为平均周转时间和平均带权周转时间。需要注意的是,这段代码没有包含进程的创建和调度过程,仅展示了如何计算调度结果。在实际操作系统中,还需要考虑进程的生成、等待队列管理等复杂情况。