操作系统课程实验,C/C++实现四种进程调度算法。包括先到先执行、优先级原则、短作业优先、时间片轮转。本篇主要讲述整体框架及几个调度算法的具体实现。之所以说是C/C++是因为程序整体框架为C结构化没有使用面向对象。但是使用了c++标准输入输出以及c++标准库里的queue队列
一、整体框架
二、调度算法实现
四种调度算法不懂的可以参考此篇[操作系统]调度
先到先服务、短作业优先以及优先及原则基本都是先对提交的进程按不同原则进行排序然后然后按序列执行。此处主要介绍时间片轮转的实现。
void RRO()
{
//时间片轮转
void runRro(PCB job);
std::queue<PCB>tempPcb;
while(!PCB_Queue.empty()||!tempPcb.empty()||!ready_queue.empty())
{
if(PCB_Queue.front().up_time==m_system_time)
{
tempPcb.push(PCB_Queue.front());
PCB_Queue.pop();
}
if(!ready_queue.empty())
{
tempPcb.push(ready_queue.front());
ready_queue.pop();
}
runRro(tempPcb.front());
tempPcb.pop();
}
}
三、源码
vscode+g++可直接编译运行
https://github.com/zhaomangang/processScheduling.git
时间片轮转运行截图
写在最后:
早上8点迷迷糊糊去上实验课,本来想着混一上午,结果心血来潮把这写了。当时想直接把博客写了但是时间来不及了。下午博主最近在跟的项目出了bug该到了九点多才结束。接着准备写这篇,本想多加写点内容,但是流程图画出来后发现根本无需博主多说。大家有什么疑问或博主行文及单吗中有何问题欢迎留言指正。