在操作系统中,CPU调度算法是决定哪个进程获得CPU使用权的核心机制。对于学习操作系统的初学者来说,理解并用C++语言实现这些调度算法,不仅能加深对系统底层运行原理的理解,还能提升编程能力。本文将手把手教你用C++实现几种经典的CPU调度算法,即使是编程小白也能轻松上手!

当多个进程同时请求使用CPU时,操作系统必须决定谁先执行、谁后执行。这个决策过程就叫CPU调度。常见的调度算法包括:先来先服务(FCFS)、最短作业优先(SJF)、时间片轮转(RR)等。
今天,我们将重点讲解并用C++实现最基础也最重要的——先来先服务调度算法(First Come First Serve, FCFS)。
FCFS是最简单的调度策略:按照进程到达的先后顺序依次执行。就像银行排队一样,先来的客户先被服务。
优点:实现简单,公平。
缺点:可能导致“护航效应”(长作业阻塞短作业),平均等待时间较长。
下面我们用C++编写一个简单的FCFS调度模拟程序。程序将输入若干个进程的到达时间和执行时间,然后计算每个进程的等待时间、周转时间,并输出平均等待时间。
// fcfs_scheduling.cpp#include <iostream>#include <vector>#include <iomanip>using namespace std;struct Process { int id; int arrival_time; int burst_time; int waiting_time; int turnaround_time;};void fcfsScheduling(vector<Process>& processes) { // 按照到达时间排序(假设输入已按时间顺序) int current_time = 0; double total_waiting = 0, total_turnaround = 0; cout << "\n进程调度结果(FCFS):\n"; cout << setw(5) << "PID" << setw(12) << "到达时间" << setw(12) << "执行时间" << setw(12) << "等待时间" << setw(14) << "周转时间" << endl; for (auto& p : processes) { // 如果当前时间小于进程到达时间,CPU空闲 if (current_time < p.arrival_time) { current_time = p.arrival_time; } p.waiting_time = current_time - p.arrival_time; p.turnaround_time = p.waiting_time + p.burst_time; current_time += p.burst_time; total_waiting += p.waiting_time; total_turnaround += p.turnaround_time; cout << setw(5) << p.id << setw(12) << p.arrival_time << setw(12) << p.burst_time << setw(12) << p.waiting_time << setw(14) << p.turnaround_time << endl; } double avg_waiting = total_waiting / processes.size(); double avg_turnaround = total_turnaround / processes.size(); cout << "\n平均等待时间: " << fixed << setprecision(2) << avg_waiting << endl; cout << "平均周转时间: " << avg_turnaround << endl;}int main() { int n; cout << "请输入进程数量: "; cin >> n; vector<Process> processes(n); for (int i = 0; i < n; ++i) { processes[i].id = i + 1; cout << "进程 " << processes[i].id << " 的到达时间和执行时间: "; cin >> processes[i].arrival_time >> processes[i].burst_time; } fcfsScheduling(processes); return 0;}
Process 结构体存储每个进程的关键信息。fcfsScheduling 函数模拟调度过程,计算等待时间和周转时间。将上述代码保存为 fcfs_scheduling.cpp,然后在终端执行:
g++ -o fcfs fcfs_scheduling.cpp./fcfs
输入示例:
请输入进程数量: 3进程 1 的到达时间和执行时间: 0 5进程 2 的到达时间和执行时间: 1 3进程 3 的到达时间和执行时间: 2 8
掌握了FCFS之后,你可以尝试实现其他更复杂的C++进程调度实现,例如:
这些算法在实际操作系统(如Linux、Windows)中都有应用,深入理解它们有助于你掌握操作系统调度的核心思想。
本文通过一个完整的C++程序,带你从零实现了C++ CPU调度算法中最基础的FCFS策略。你不仅学会了如何建模进程、模拟调度过程,还掌握了关键性能指标(等待时间、周转时间)的计算方法。
希望这篇教程能为你打开操作系统世界的大门!动手实践是掌握知识的最佳方式,快去运行代码、修改参数、观察结果吧!
关键词回顾:C++ CPU调度算法、操作系统调度、C++进程调度实现、先来先服务调度算法。
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126864.html